segunda-feira, 28 de julho de 2008

Freenode+gpg+irssi

Resolvi escrever este tutorial baseado na dificuldade que tive em acessar a rede freenode fora do padrão. Tudo começou quando eu tentei acessar a freenode de casa e deu um erro dizendo que eu estava bloqueado por usar um proxy aberto. Consultei meu provedor ele disse que não tinha nada a fazer, era aquilo mesmo. Resolvi então procurar alternativas. Alguns amigos me indicaram o tor, foi então que começou a luta. Sendo assim, resolvi compartilhar com meus amigos internautas o que foi descoberto e como usar o tor na freenode.

1 - freenode

Que eu saiba, há três meios de acessar a freenode, o primeiro é o básico, irc.freenode.net, o segundo é usando o tor sem chave, mejokbp2brhw4omd.onion, e o terceiro é usando o tor com chave criptografada, 5t7o4shdbhotfuzp.onion. O melhor método é acessando direto via irc.freenode.net, porém, em alguns locais, pode ter problemas ( no meu caso, proxy aberto ) como eu tive. Então o melhor é o segundo método ? não. O segundo apesar de acessar a freenode sem precisar da chave, tem também seus problemas, tais como, geralmente bloqueiam, por haver muitos imbecis achando que porque usam o tor podem fazer bagunça nos canais, o que acaba chamando a atenção da rede e bloqueando o .onion ( o que acontece muito ), então a única opção é usar com chave, mas ainda há um problema nisso, como o tor é um proxy, que acessa outro proxy, que acessa outro proxy e assim por diante, geralmente no dia, tu é desconectado da freenode umas três vezes, nada que uma boa configurada no cliente irc não resolva.

2 - instalação

Esse procedimento foi feito num ubuntu 8.04 e com o cliente irc irssi

sudo apt-get install gnupg irssi tor privoxy

3 - configurando o tor

Temos que abrir as portas para o tor fazer conexão.

sudo vim /etc/privoxy/default.action

caso não tenha, adicione as seguintes linhas no final do arquivo ( na seqüência e com as barras no modo abaixo ):

{\
+limit-connect{1-65535}\
}
/

ps: segundo o manual, pode ser usado +limit-connect{-} para liberar todas a portas, mas como o meu funcionou, nem testei.

4 - configurando o irssi

Eu uso o arquivo de configuração do irssi pra colocar os parâmetros:

vim ~/.irssi/config

servers = (
{
address = "5t7o4shdbhotfuzp.onion";
chatnet = "freenode";
port = "6667";
autoconnect = "yes";
}
);
settings = {
core = {
use_proxy = "on";
proxy_string = "CONNECT %s:%d HTTP/1.1 \012\012";
proxy_port = "8118";
proxy_address = "127.0.0.1";
};
};


dica: eu tive problemas porque eu acessar primeiro os canais e depois autenticava o meu nick, ficando assim excluído de alguns canais que precisam de registro no nick, então mais uma vez um amigo me ajudou me passando o parâmetro wait ficando da seguinte forma:

autosendcmd = "/msg NickServ identify minhaSenha;wait -freenode 2000";


5 - gerando a chave criptografada

Aqui vamos gerar a chave que vai ser enviada para a freenode.

gpg --gen-key

5.1 primeiro ele vai te perguntar o tipo de chave tu quer usar, selecione a opção 1;
( 1 ) DSA and Elgamal (default)

5.2 agora ele te pergunta o tamanho da chave, deixe o padrão 2048;
(2048) 2048

5.3 no seguinte, ele vai te perguntar por quanto tempo essa chave tem validade, selecione a opção 0;
0 = key does not expire

5.4 nesse momento ele vai te pedir informações para gerar o teu ID, essas informações são, teu nome completo, um comentário ( chave para uso na freenode ), e teu e-mail

5.5 confirme usando a opção O ( de okay );
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit ?

5.6 para finalizar ele vai te pedir pra digitar uma frase para proteger sua chave, não é necessário digitar essa frase, apenas precione , caso tu coloque a frase, vai ter que ser digitada toda vez que usar a chave, o que é inviável nesse caso e totalmente desnecessário, pois não fica menos segura;

5.7 na criação da chave é necessário que fique movimentando o mouse para que seja pego dados aleatórios para crianção da chave.

6 - criando seu password em hash para acessar a freenode

Há duas opções para se fazer:

A primeira é acessar a freenode, quando estiver logado no servidor da freenode, digite o comando:
[(status)] /quote makepass SuaSenhaDeRegistroDoNick

a freenode vai retornar algo do tipo:
13:56 !zahn.freenode.net *** Encryption for [ SuaSenhaDeRegistroDoNick ] is [ $1$3DjCkjZy$SFEQEnMO.QYxbReMkdjYw. ]

o que tu precisa está entre o segundo par de chaves [ ] (no nosso caso $1$3DjCkjZy$SFEQEnMO.QYxbReMkdjYw. ), guarde pois vamos precisar daqui a pouco.

A segunda opção, é usando o shell mesmo, com o seguinte comando:
mkpasswd -H md5 SuaSenhaDeRegistroDoNick

copie o que ele te retornou e guarde para usarmos daqui a pouco

7 - pegando a chave da freenode no servidor

Nesse momento vamos apenas pegar a chave da freenode para assinar a mensagem de e-mail que vamos enviar pra freenode junto com sua chave pública

gpg --keyserver pgpkeys.pca.dfn.de --recv-keys 035D6B1D

8 - cadastrando o nick com o hash

Vamos agora, cadastrar o nick e o hash com a chave privada:
echo "SeuNick $1$3DjCkjZy$SFEQEnMO.QYxbReMkdjYw." | gpg --gnupg -sea -r 035D6B1D

vai ser pedido a palavra chave, apenas precione enter, vai também te perguntar se tem certeza do que está fazendo, confirme com y.
“It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes.”
Use this key anyway? (y/N) y

copie tudo que foi mostrado no shell iniciando em "-----BEGING PGP MESSAGE-----" até "-----END PGP MESSAGE-----", e guarde num arquivo, pois vamos precisar dele.

essa é a mensagem criptografada com seu nick e hash que será enviado para freenode

9 - incluindo a chave pública

Agora vamos incluir a chave pública no teu e-mail que vai ser usando para enviar a mensagem anterior para freenode
gpg --armor --export Seu@endereco.email

novamente, copie o que foi mostrado no shell e cole num arquivo.

10 - e-mail para freenode

Precisamos enviar um e-mail para os staff's da freenode para autorizarem a nossa chave no servidor 5t7o4shdbhotfuzp.onion

na tua caixa de e-mail ou no teu cliente de e-mail, escreva um e-mail para staff@freenode.net ou support@freenode.net, não é necessário colocar cabeçalho, na mensagem, copie o que foi colocado nos arquivos nos passos 8 e 9, agora é só enviar e esperar que liberem o acesso.

caso queira dar uma agilizada no processo, acesse #freenode e veja com algum staff se ele pode fazê-lo.