Servidor Jabber com SASL e TLS usando Prosody: mudanças entre as edições

De Eriberto Wiki
Ir para navegação Ir para pesquisar
 
(10 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
{{construção}}
{{construção}}
{{cabeçalho|11 de fevereiro de 2011|http://bit.ly/jabber_sasl_tls}}
{{cabeçalho|11 de fevereiro de 2011 e readaptado em 24 de janeiro de 2014|http://bit.ly/jabber_sasl_tls}}
{{exclamação1|Este artigo está baseado no '''Debian Squeeze'''.}}
{{exclamação1|Este artigo está baseado no '''Debian Wheezy'''.}}


== Instalação e configuração do SASL ==
== Instalação e configuração do SASL ==
Linha 11: Linha 11:
  # apt-get install sasl2-bin libsasl2-modules
  # apt-get install sasl2-bin libsasl2-modules


Edite o arquivo ''/etc/default/saslauth'' e altere a linha:
Edite o arquivo ''/etc/default/saslauthd'' e altere a linha:


  START=no
  START=no
Linha 34: Linha 34:
== Instalação e configuração do Prosody ==
== 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:
No Debian Wheezy, a versão do Prosody é a 0.8.2. Instale-o, juntamente com o suporte ao SASL e a compressão de dados, com o comando:


  # apt-get install prosody liblua5.1-cyrussasl0
  # apt-get install prosody lua-cyrussasl lua-zlib


Edite o arquivo ''/etc/prosody/prosody.cfg.lua'' e insira como última linha:
Edite o arquivo ''/etc/prosody/prosody.cfg.lua'' e comente as linhas que apontam para o certificado localhost, colocando dois hífens na frente das mesmas, conforme mostrado a seguir:
 
sasl_backend = "cyrus";
 
{{Exclamação1|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 = {
  --ssl = {
Linha 51: Linha 45:
  --}
  --}


Altere a linha:
authentication = "internal_plain"
para:
authentication = "cyrus"
A seguir, altere a linha ''VirtualHost'', inserindo o nome da máquina servidora, conforme cadstrado em DNS. Exemplo:
VirtualHost "mensagens.darknet.com.br"
Comente a linha seguinte, colocando dois hífens na sua frente, deixando da seguinte forma:
-- enabled = false
Altere o bloco ''ssl'' mostrado logo depois de ''VirtualHost''. O original é da seguinte forma:
ssl = {
        key = "/etc/prosody/certs/example.com.key";
        certificate = "/etc/prosody/certs/example.com.crt";
}
Altere para:
ssl = {
        key = "/etc/ssl/prosody/prosody.key";
        certificate = "/etc/ssl/prosody/prosody.crt";
        capath = "/etc/ssl/certs/ca.crt";
}
{{exclamação1|É importante ressaltar três aspectos. Primeiro, logo a seguir criaremos as chaves criptográficas ''prosody.key'' e ''prosody.crt''; ''ca.crt'' refere-se ao certificado raiz da CA utilizada. Segundo, o Prosody não permite a manipulação de senhas em texto em canais não criptografados. Por último, é possível levantar vários servidores com vários nomes, bastando repetir os conjuntos de linhas ''VirtualHost'' e ''ssl''}}


Como próximo passo, crie o arquivo ''/etc/prosody/prosody.conf.sasl'', com o seguinte conteúdo:
Como próximo passo, crie o arquivo ''/etc/prosody/prosody.conf.sasl'', com o seguinte conteúdo:
Linha 68: Linha 94:
== Criação e instalação do certificado do servidor ==
== 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) para o seu servidor jabber. Sugiro que as chaves se chamem ''prosody.crt'' e ''prosody.key''.
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''. O campo ''CommonName'' do certificado deverá conter o mesmo nome de máquina utilizado no campo ''VirtualHost'' configurado anteriormente.


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:
Apesar dos locais mais corretos para colocarmos as chaves 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
  # mkdir -p /etc/ssl/prosody
Linha 82: Linha 108:


  # chown -R prosody.prosody /etc/ssl/prosody
  # chown -R prosody.prosody /etc/ssl/prosody
Copie o certificado raiz da CA utilizada, com o nome ''ca.crt'', para ''/etc/ssl/certs/''. Em seguida, atribua a permissão 644, utilizando o seguinte comando:
# chmod 644 /etc/ssl/certs/ca.crt
Configurado o serviço, reinicie o Prosody:
# /etc/init.d/prosody restart
<br><br>
<br><br>


== Criação do arquivo de configuração do domínio a ser utilizado ==
== Configuração dos clientes ==


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'' (de ''instant messenger''). Para tanto, deveremos criar o arquivo ''/etc/prosody/conf.avail/debianet.cfg.lua'', com o seguinte conteúdo:
=== Relações de clientes ===


VirtualHost "im.debianet.com.br";
Existem alguns sites que fornecem relações de clientes Jabber (protocolo XMPP). Alguns:
 
ssl = {
* [http://xmpp.org/xmpp-software/clients XMPP Standards Foundation - Clients]
        key = "/etc/ssl/certs/prosody.key";
* [http://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients Comparison of instant messaging clients]
        certificate = "/etc/ssl/private/prosody.crt";
* [http://www.google.com/talk/otherclients.html Google Talk - Other IM clients]
        }
* [http://www.worldsiteindex.com/chat/winclients.html Jabber Clients for Windows]
* [http://news.softpedia.com/news/Best-5-Jabber-Clients-for-Windows-in-Pictures-86636.shtml Best 5 Jabber clients for Windows in pictures]
* [https://addons.mozilla.org/en-US/firefox/collections/bigou/xmpp Firefox - Addons - Jabber plugins]
<br><br>
 
=== 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:
 
[[image:sameplace.png|center]]
 
A configuração é bem simples. Os campos são os seguintes:


Em seguida, crie um link simbólico dentro de ''/etc/prosody/conf.d'' para ativar o serviço:
* 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.


# ln -s /etc/prosody/conf.avail/debianet.cfg.lua /etc/prosody/conf.d
A seguir, clique em ''Advanced...'' e faça o seguinte:


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:
* Marque ''StartTLS'' como sistema criptográfico.
* Altere a porta para ''5222''.
* Clique em ''Avançar''
Agora você poderá se conectar ao servidor.
<br><br>


# rm /etc/prosody/conf.d/localhost.cfg.lua
=== GNU/Linux ===


Uma vez configurado o serviço, reinicie o Prosody:
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.


# /etc/init.d/prosody restart
<br><br>
<br><br>


== Testes com clientes ==
=== MS Windows ===
<br><br>
=== MAC ===
<br><br>
<br><br>
== Ativação de debug no SASL e no Prosody ==
== Ativação de debug no SASL e no Prosody ==
<br><br>
== Configuração de conferência ==
<br><br>
<br><br>
{{rodapé|http://www2.clustrmaps.com/user/3d3cf924|http://www2.clustrmaps.com/stats/maps-no_clusters/bit.ly-jabber_sasl_tls-thumb.jpg|11 fev. 11}}
{{rodapé|http://www2.clustrmaps.com/user/3d3cf924|http://www2.clustrmaps.com/stats/maps-no_clusters/bit.ly-jabber_sasl_tls-thumb.jpg|11 fev. 11}}

Edição atual tal como às 15h50min de 24 de janeiro de 2014

<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 e readaptado em 24 de janeiro de 2014.

Ú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 Wheezy.

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/saslauthd 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 Wheezy, a versão do Prosody é a 0.8.2. Instale-o, juntamente com o suporte ao SASL e a compressão de dados, com o comando:

# apt-get install prosody lua-cyrussasl lua-zlib

Edite o arquivo /etc/prosody/prosody.cfg.lua e 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";
--}

Altere a linha:

authentication = "internal_plain"

para:

authentication = "cyrus"

A seguir, altere a linha VirtualHost, inserindo o nome da máquina servidora, conforme cadstrado em DNS. Exemplo:

VirtualHost "mensagens.darknet.com.br"

Comente a linha seguinte, colocando dois hífens na sua frente, deixando da seguinte forma:

-- enabled = false

Altere o bloco ssl mostrado logo depois de VirtualHost. O original é da seguinte forma:

ssl = {
        key = "/etc/prosody/certs/example.com.key";
        certificate = "/etc/prosody/certs/example.com.crt";
}

Altere para:

ssl = {
        key = "/etc/ssl/prosody/prosody.key";
        certificate = "/etc/ssl/prosody/prosody.crt";
        capath = "/etc/ssl/certs/ca.crt";
}
É importante ressaltar três aspectos. Primeiro, logo a seguir criaremos as chaves criptográficas prosody.key e prosody.crt; ca.crt refere-se ao certificado raiz da CA utilizada. Segundo, o Prosody não permite a manipulação de senhas em texto em canais não criptografados. Por último, é possível levantar vários servidores com vários nomes, bastando repetir os conjuntos de linhas VirtualHost e ssl

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. O campo CommonName do certificado deverá conter o mesmo nome de máquina utilizado no campo VirtualHost configurado anteriormente.

Apesar dos locais mais corretos para colocarmos as chaves 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

Copie o certificado raiz da CA utilizada, com o nome ca.crt, para /etc/ssl/certs/. Em seguida, atribua a permissão 644, utilizando o seguinte comando:

# chmod 644 /etc/ssl/certs/ca.crt

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:



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.