Irssi
A utilização do irssi encontra-se desapreciada devido a problemas de funcionamento, segurança e privacidade e favorece-se o weechat que é activamente mais desenvolvido e que oferece mais e melhores funcionalidades assim como maior segurança em particular com o uso de proxies como o tor o utilização de certfp.
Ver: Determinadas funcionalidades do irssi em relação a segurança e privacidade não funcionam totalmente ou correctamente.
Este artigo visa em explicar como utilizar o cliente de irc de linha de comandos conhecido como irssi para acesso á rede wirelesspt.net de forma relativamente segura, com criptografia e anonimato utilizando diferentes tipos de criptografia. O irssi é um cliente de irc avançado de linha de comandos compatível com linux e windows.
Instalar

GNU Gentoo, Pentoo, Sabayon, Funtoo Linux e derivados:
emerge irssi irssi-otr
GNU Debian, Ubuntu, Kali Linux e derivados:
apt-get install irssi irssi-plugin-otr
sudo pacman -S irssi wget https://aur.archlinux.org/packages/ir/irssi-otr/irssi-otr.tar.gz tar xf irssi-otr.tar.gz ; cd irssi-otr ; makepkg -si ; echo load otr >> ~/.irssi/startup sudo pacman -S irssi-otr
yum install irssi irssi-otr
Em windows o executável encontra-se obsoleto perante o uso de criptografia e livrarias openssl funcionando com ssl v2 e v3 e sem suporte tls.
Preparativos
Após a instalação do irssi no sistema operativo devemos proceder às configurações necessárias para as funcionalidades pretendidas e criar suporte de configuração base para o irssi na shell do utilizador do sistema operativo.
mkdir -p ~/.irssi/certs mkdir -p ~/.irssi/scripts/autorun wget -P ~/.irssi/scripts/autorun/ https://raw.githubusercontent.com/wirelesspt/irssi/master/scripts/cap_sasl.pl wget -P ~/.irssi/certs/ https://url_to_CAs.pem ( a publicar mais tarde)
$ irssi /network add Wirelesspt /network add Wirelesspt -nick nick_escolhido' -user nome_de_utilizador -realname nome_escolhido /server add -auto -ssl -network Wirelesspt hub.wirelesspt.net 6697
Certfp
Iremos agora gerar certificados de criptografia com ssl e durante este processo serão feitas algumas perguntas que devem ser respondidas ao gosto do utilizador.
Exemplo:
openssl req -x509 -nodes -days <dias> -utf8 -newkey <tipo>:<bits>-sha512 -keyout nick.key -out nick.crt -subj /CN=nick
Executar:
openssl req -x509 -nodes -days 1825 -utf8 -newkey rsa:4096-sha512 -keyout nick.key -out nick.crt -subj /CN=nick
cat nick.crt nick.key > nick.pem
chmod 400 nick.{key,crt,pem}
Podemos confirmar e ver a nossa fingerprint criada digitando:
openssl x509 -noout -fingerprint -text < nick.pem -sha256 | grep Fingerprint
Para adicionar a fingerprint ao nickserv caso tenhamos o nick registado na rede basta digitar na linha de comandos:
openssl x509 -sha256 -noout -fingerprint -in nick.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'
E no cliente de irc basta digitar:
/msg NickServ cert add fingerprint
Mover os certificados para o irssi
mv nick.{key,cer,pem} ~/.irssi/certs
De seguida devemos configurar o acesso à rede na linha de comandos do irssi executando o irssi num terminal:
Para quem pretender ter a sua aplicação de software a confirmar e obter fingerprints de servidores deverá consultar este artigo.
$ irssi /network add Wirelesspt /network add Wirelesspt -nick nick_escolhido' -user nome_de_utilizador -realname nome_escolhido /server add -ssl -ssl_cert ~/.irssi/certs/nick.pem -ssl_cafile ~/.irssi/certs/CAs.pem -ssl_verify -network Wirelesspt irc.wirelesspt.net 6697
Ssl fingerprints
O uso de fingerprint do certificado eleva a nossa segurança assegurando a impossibilidade de um ataque man in the middle Podemos e devemos para maior segurança adicionar fingerprints ao irssi para esta rede.
Para obtermos a fingerprint do certificado de criptografia do servidor de irc basta digitar num terminal:
openssl s_client -connect hub.wirelesspt.net:6697 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin -sha512
O que nos resultará em algo como isto:
SHA512 Fingerprint=4E:BD:2E:4E:90:7F:9B:41:91:43:B6:CC:F3:5B:4B:C1:35:6D:64:FD:8C:9D:5C:60:16:1E:3C:A1:B2:A6:6D:59
Este comando obterá a fingerprint exactmente como necessita de ser utilizada:
openssl s_client -connect hub.wirelesspt.net:6697 < /dev/null 2>/dev/null | openssl x509 -sha256 -fingerprint -noout | tr -d ':' | tr 'A-Z' 'a-z' | cut -d = -f 2
$ irssi /network add Wirelesspt /network add Wirelesspt -nick nick_escolhido' -user nome_de_utilizador -realname nome_escolhido /server add -ssl -tls_pinned_cert 4E:BD:2E:4E:90:7F:9B:41:91:43:B6:CC:F3:5B:4B:C1:35:6D:64:FD:8C:9D:5C:60:16:1E:3C:A1:B2:A6:6D:59 -network wirelesspt hub.wirelesspt.net 6697
Root trusted CAs
Para que o irssi reconheça a validade de certificados válidos como lets encrypt e ou auto assinados reconhecidos pelos os utilizadores devemos criar essa funcionalidade e consequentemente adicionar ao irssi os certificados.
mkdir ~/.irssi/ssl/
Opção 1:
Com certificados lets encrypt importados pelo sistema operativo:
/server add -auto -ssl -ssl_cafile ~/.irssi/etc/ssl/certs/ca-certificates.crt -network wirelesspt irc.wirelesspt.net 6697
Com certificados CA auto assinados:
wget https://wirelesspt.net/arquivos/ssl_certs/wirelesspt_trusted_CAs.crt cat wirelesspt_trusted_CAs.crt >> ~/.irssi/ssl/wirelesspt_trusted_CAs.crt
/server add -auto -ssl -ssl_cafile ~/.irssi/wirelesspt_trusted_CAs.crt -network wirelesspt irc.wirelesspt.net 6697
Opção 2:
Para utilizar o que o sistema operativo nos fornece e adicionar certificados auto assinados reconhecidos por nós, em vez de executar o parâmetro mencionado anteriormente executamos:
cp /etc/ssl/certs/ca-certificates.crt ~/.irssi/ssl/ca-certificates.crt wget https://wirelesspt.net/arquivos/ssl_certs/wirelesspt_trusted_CAs.crt cat wirelesspt_trusted_CAs.crt >> ~/.irssi/ssl/ca-certificates.crt
/server add -auto -ssl -ssl_cafile ~/.irssi/etc/ssl/certs/ca-certificates.crt -network wirelesspt irc.wirelesspt.net 6697
Nota: Este método requer actualização manual sempre que o sistema operativo actualiza os certificados de autoridade.
Tor
Para se entrar na rede via tor existem 2 formas base que necessitam pelo menos de duas aplicações de software em execução.
Após instaladas basta executar o irssi num terminal da seguinte forma:
torify irssi
Para maior anonimato podemos ainda estabelecer ligação via serviço escondido tor (hidden service). (a desenvolver)
Adicionar canais
Adicionar canais recomendados ao irssi para entrada automática na rede:
/channel add -auto #wirelesspt Wirelesspt /channel add -auto #nixbits Wirelesspt /channel add -auto #linux Wirelesspt /channel add -auto #news Wirelesspt
Entrar na rede
Ao estabelecer entrada na rede seremos informados de fingerprint do certificado que utilizamos e que se recomenda adicionar ao registo escolhido:
/connect Wirelesspt
Caso não tenhamos o nick_escolhido registado podemos registar digitando e adicionando os dados á configuração:
/msg nickserv register nick_escolhido senha_escolhida /network add -nick nick_escolhido -autosendcmd "/^msg NickServ identify senha_escolhida ; wait 5000" Wirelesspt
Caso já esteja registado devemos proceder à sua identificação digitando:
/msg nickserv identify senha_do_nick /msg nickserv cert add fingerprint_do_crt
Sasl
O mecanismo (sasl_mechanism) de autenticação poderá ser escolhido entre: DH-AES ou DH-BLOWFISH ou no caso de falha; PLAIN. Com uso de certfp deverá ser identificado como EXTERNAL.
/sasl set wirelesspt nick_escolhido senh_escolhida EXTERNAL /sasl save
No caso de não se utilizar certfp podemos optar por substituir EXTERNAL por DH-AES, DH-BLOWFISH OU PLAIN
Otr
Para criptografia adicional em mensagens privadas devemos iniciar a sessão de chat da seguinte forma:
/otr start
Terminar sessão otr com o contacto:
/otr finish
Trocar chave de segredo extra apenas conhecida pelo contacto:
/otr auth senha_segredo
Confiar na chave otr de um contacto:
/otr trust
Para quem usa o irssi, recomenda-se para que esteja informado do estado otr
/statusbar window add otr
Gerar manualmente uma chave otr para um contacto:
/otr genkey nick@irc.server.com
Iniciar ou responder a um contacto para trocar chaves otr.
/otr auth <nick>@<servidor> <senha>
Abortar a troca de chave otr com um contacto:
/otr authabort <nick>@<servidor>
Confiar na chave otr de um contacto que está na janela aberta do momento mas apenas no fim de se comparar a chave otr:
/otr trust <nick>@<server>
Activar modo de debug:
/otr debug
Listar contexto otr chaves usadas e estado:
/otr contexts
Ver a versão otr utilizada:
/otr version
Blowfish
O uso de criptografia blowfish pode ser utilizado em conjunto com o uso do otr e para tal necessita o plugin, blowfish ou fishlim que após estar incorporado no cliente de irc basta digitar:
Para criptografar um nick ou canal:
/SETKEY <nick ou #channel> <senha>
Para remover a criptografia:
/delkey <nick ou #channel>
Problemas
Embora o uso normal de proxy parece funcionar correctamente; até à data desta revisão o irssi apresenta falhas no funcionamento com socks proxy, mais em concreto em conjunto com o tor. Quando em uso com tor se activa safe socks o irssi não consegue estabelecer ligação ao destino devido ao dns leak que revela na rede e que inviabiliza o anonimato do seu utilizador. Desactivando safe socks podemos constatar esse dns leak no próprio log do tor. Por este motivo se desaconselha o uso do irssi a quem valoriza a sua privacidade. O próprio developer nem sabe se esta funcionalidade na realidade funciona.
May 12 17:57:13.000 [warn] Your application (using ocks5 to port 6667) is giving Tor only an IP address. Applications that do dns resolves themselves may leak information. Consider using Socks4A (e.g. via privoxy or socat) instead. For more information, please see https://wiki.torproject.org/TheOnionRouter/TorFAQ#SOCKSAndDNS. Rejecting.
Para activar a prevenção de dns leaks basta adicionar as seguintes definições à configuração do tor:
echo SafeSocks 1 >> /etc/tor/torrc echo TestSocks 1 >> /etc/tor/torrc /etc/init.d/tor restart
É neste momento que quer com uso de socks proxy ou torify, que o irssi deixará de conseguir estabelecer ligação a qualquer servidor.
Adicionalmente ainda não suporta fingerprints dos certificados de segurança com hashes de 512, mantendo-se com sha1 que é actualmente fraco e considerado inseguro. Alternativa é sha256.
Ver ainda
Links
(em Inglês)
- Á cerca de socks proxy na linha 752
- FiSH-irssi
- Wirelesspt irssi setup
- Compiling fish for irssi x86
- Irssi-mod-fish-0.99 compile 64bit
- Website oficial
- Irssi setup
- Irssi + screen
- Irssi scripts
- Comandos do irssi
- Dicas sobre o irssi
Editor
--Cmsv