Servidor Jabber com SASL e TLS usando Prosody
<absHTML>
<tbody> </tbody>Esta página está em construção e deverá estar pronta em poucos dias. Por favor, volte depois ou consulte-a agora com cautela e paciência. |
</absHTML>
by (C) João Eriberto Mota Filho <eriberto (a) eriberto pro br>
Artigo criado em: 11 de fevereiro de 2011.
Última atualização: veja o rodapé desta página.
Tiny URL ou bit.ly: http://bit.ly/jabber_sasl_tls
Este artigo está baseado no Debian Squeeze. |
Instalação e configuração do SASL
O SASL (Simple Authentication and Security Layer) é um elemento utilizado para prover a ligação de aplicações com diversos mecanismos de autenticação de usuários diferentes. Podemos citar o PAM e LDAP, dentre outros. No caso deste artigo, utilizaremos a forma mais simples, que é a ligação com o PAM (usuários criados no sistema operacional). No entanto, uma vez interligados o Prosody e o SASL, você poderá autenticar, facilmente, com pequenas adapções de configuração, via LDAP ou outro mecanismo escolhido.
Para instalar o SASL, incluindo o suporte à autenticação com senha, utilize o comando:
# apt-get install sasl2-bin libsasl2-modules
Edite o arquivo /etc/default/saslauth e altere a linha:
START=no
para
START=yes
A seguir, reinicie o SASL:
# /etc/init.d/saslauthd restart
Teste o funcionamento do SASL com um usuário válido no sistema. Digamos que haja o usuário "ze" com senha "123". Emita o seguinte comando:
# testsaslauthd -u ze -p 123
A resposta deverá ser:
0: OK "Success."
Instalação e configuração do Prosody
No Debian Squeeze, a versão do Prosody é a 0.7.0. Instale-o, juntamente com o suporte ao SASL, com o comando:
# apt-get install prosody liblua5.1-cyrussasl0
Edite o arquivo /etc/prosody/prosody.cfg.lua e insira como última linha:
sasl_backend = "cyrus";
Se por acaso estiver configurando o Prosody a partir da versão 0.8, utilize authentication e não sasl_backend. |
Ainda no mesmo arquivo, comente as linhas que apontam para o certificado localhost, colocando dois hífens na frente das mesmas, conforme mostrado a seguir:
--ssl = { -- key = "/etc/prosody/certs/localhost.key"; -- certificate = "/etc/prosody/certs/localhost.cert"; --}
Como próximo passo, crie o arquivo /etc/prosody/prosody.conf.sasl, com o seguinte conteúdo:
pwcheck_method: saslauthd mech_list: PLAIN
Crie um link simbólico, chamado prosody.conf no diretório de controle do SASL, com o seguinte comando:
# ln -s /etc/prosody/prosody.conf.sasl /usr/lib/sasl2/prosody.conf
Adicione o usuário prosody ao grupo sasl, para que o mesmo possa utilizar o sistema de autenticação:
# adduser prosody sasl
Criação e instalação do certificado do servidor
Seguindo os passos existentes no artigo Autoridade Certificadora (CA) com o OpenSSL (neste Wiki), crie uma autoridade certificadora e, a seguir, um par de chaves (com a pública assinada pela CA e com a chave privada insegura) para o seu servidor jabber. Sugiro que as chaves se chamem prosody.crt e prosody.key.
Apesar dos locais mais corretos para colocarmos as chavess no Debian serem os diretórios /etc/ssl/{certs,private}, iremos colocá-las em /etc/ssl/prosody, uma vez que o servidor Prosody é executado por um usuário comum (prosody'), que necessita de acesso aos diretórios de chaves. Assim, execute os seguintes comandos:
# mkdir -p /etc/ssl/prosody # chmod 500 /etc/ssl/prosody
Coloque as duas chaves dentro do diretório criado. Altere as permissões de acesso das mesmas com o comando:
# chmod 400 /etc/ssl/prosody/*
A seguir, faça o diretório e os seus arquivos pertencerem ao usuário e ao grupo prosody:
# chown -R prosody.prosody /etc/ssl/prosody
Criação do arquivo de configuração do domínio a ser utilizado
Como já foi visto antes, o Prosody possui um arquivo de configuração geral, localizado em /etc/prosody/prosody.cfg.lua. No entanto, poderemos ter arquivos específicos para os domínios nos quais o servidor irá operar. Vamos a um exemplo para o domínio debianet.com.br, contendo um servidor jabber chamado im (instant messenger). Para tanto, deveremos criar o arquivo /etc/prosody/conf.avail/debianet.cfg.lua, com o seguinte conteúdo:
VirtualHost "im.debianet.com.br"; ssl = { key = "/etc/ssl/prosody/prosody.key"; certificate = "/etc/ssl/prosody/prosody.crt"; }
Em seguida, crie um link simbólico dentro de /etc/prosody/conf.d para ativar o serviço:
# ln -s /etc/prosody/conf.avail/debianet.cfg.lua /etc/prosody/conf.d
Ainda, remova o link simbólico que aponta para localhost.cfg.lua, uma vez que não haverá necessidade de conexão de cliente instalado no próprio servidor:
# rm /etc/prosody/conf.d/localhost.cfg.lua
Configurado o serviço, reinicie o Prosody:
# /etc/init.d/prosody restart
Configuração dos clientes
Relações de clientes
Existem alguns sites que fornecem relações de clientes Jabber (protocolo XMPP). Alguns:
- XMPP Standards Foundation - Clients
- Comparison of instant messaging clients
- Google Talk - Other IM clients
- Jabber Clients for Windows
- Best 5 Jabber clients for Windows in pictures
- Firefox - Addons - Jabber plugins
Mozilla Firefox
O Mozilla Firefox possui plugins que permitem a utilização de Jabber via cliente em browser. Dentre eles, destaco o SamePlace, que também permite comunicação via MSN, GTalk (Jabber), Twitter, AIM e ICQ. Utiliza criptografia para Jabber como opção default.
No site oficial, http://www.sameplace.cc, há screenshots. Abaixo, um exemplo:
A configuração é bem simples. Os campos são os seguintes:
- Username: coloque o nome escolhido para login. Exemplo: eriberto.
- Domain: coloque o nome escolhido para o servidor Jabber. Exemplo: im.debianet.com.br.
- Password: coloque a sua senha.
A seguir, clique em Advanced... e faça o seguinte:
- Marque StartTLS como sistema criptográfico.
- Altere a porta para 5222.
- Clique em Avançar
Agora você poderá se conectar ao servidor.
GNU/Linux
Há vários clientes Jabber para GNU/Linux. Se você usa KDE, talvez se interesse pelo Kopete, que também permite a conexão com MSN e vários outros mensageiros instantâneos.
MS Windows
MAC
Ativação de debug no SASL e no Prosody
Configuração de conferência
Redes sociais
- Twitter: Para novidades sobre artigos, livros e palestras, siga-me em eribertomota.