Saltar al contenido principal.

Prosody - Servidor Jabber / XMPP para Debian



Los repositorios de Debian Jessie tienen una versión aceptable de 0.9.7. Lo configuramos con el complemento para trabajar con mysql:

  # aptitude instalar prosodia 

A continuación, debe decidir qué base de datos usar: mysql o sqlite.



SQLite es más compacto y poco exigente para los recursos. Es un archivo en el servidor donde se almacenan las tablas con información. Es fácil de copiar, no se necesita nada, excepto la biblioteca sqlite3. Una base de datos de este tipo será la mejor solución si configura un jabber para usted (y una docena de usuarios además :).

  # aptitude install lua-dbi-sqlite3 

MySQL es más adecuado cuando planea alojar muchas cuentas de usuarios en el servidor y constantemente agregar, eliminar, editar, etc. Para tal base de datos, también necesita el componente apropiado.

  # aptitude install lua-dbi-mysql 

Contenido del artículo:

Preparación del certificado SSL

El uso de certificados autofirmados no es en absoluto kosher. :) No hay confianza en ellos. Por lo tanto, necesita obtener un certificado gratuito de StartSSL.com . Hay una buena instrucción sobre esto .



Supongamos que ha recibido un certificado. Ahora tiene el archivo de certificado ssl.crt y la clave ssl.key. Primero se debe descifrar la clave. Por supuesto, puede usarlo y no descifrarlo, pero debe especificar la contraseña en la configuración de Prosody, establecer los derechos de acceso apropiados, etc.

  # openssl rsa -in ssl.key -out ssl.key 

Durante el descifrado, deberá especificar la contraseña clave.

Además de su certificado y clave, necesita un certificado "CA de servidor intermedio de clase 1". Descárgalo:


  # wget https://startssl.com/certs/sca.server1.crt 

Nos unimos en un archivo (example.com se registra como ejemplo, lo reemplaza con su nombre de dominio ):

  # cat ssl.crt ssl.key sca.server1.crt> /etc/prosody/certs/example.com.pem 

El certificado se guardará en la carpeta / etc / prosody / certs /.

Además, debe crear una clave para el protocolo Diffie-Hellman . También se utilizará en la configuración del host virtual, brindando la posibilidad de usar el secreto de reenvío.

  openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048 

Establezca permisos que permitan solo la lectura de certificados en nombre del usuario de prosodia.

  # chown prosody: prosody /etc/prosody/certs/*.pem
 # chmod 0400 /etc/prosody/certs/*.pem

Esto completa la preparación de los certificados.

Creando la base de datos MySQL

Puede crear una base de datos y un usuario a través de la consola, o a través del panel de control de phpmyadmin o similar.

Configuración de la prosodia

El proceso de configuración es simple. Todo está bien documentado (aunque en inglés), y la estructura de los archivos de configuración es simple.

Puede crear fácilmente hosts virtuales, asignarles parámetros especiales, etc. Casi una analogía con Apache y nginx. :)

Los parámetros principales del archivo de configuración /etc/prosody/prosody.cfg.lua, cuyos valores necesitaremos editar.

  allow_registration = true; 

Permite el registro de usuarios utilizando programas de cliente. Pidgin, por ejemplo. El valor predeterminado es falso . No habilite si no necesita permitir el registro.

  authentication = "internal_hashed" 

Habilita el hashing de la contraseña del usuario. El valor predeterminado es internal_plain, que no es del todo seguro: almacene las contraseñas en la base de datos de manera clara.

Especifique el tipo de almacenamiento - base de datos sql:

  storage = "sql"

Si seleccionó sqlite como el almacenamiento, descomente la línea:

  sql = {driver = "SQLite3", database = "prosody.sqlite"} 

Si mysql:

  sql = {driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost"}

No olvide especificar el parámetro sql_manage_tables = true continuación, para que sql_manage_tables = true automáticamente la base de datos con tablas.

Los valores de prosodia en la base de datos y los parámetros de nombre de usuario deben reemplazarse con el nombre de la base de datos y el nombre de usuario, respectivamente. También debe especificar una contraseña para la opción de contraseña , reemplazando la frase secreta . El host no se modifica si el servidor MySQL está instalado en la misma máquina que Prosody.

Anfitriones virtuales en Prosody

El siguiente elemento de configuración para Prosody es crear una configuración para hosts virtuales. Supongamos que tenemos un dominio. Encontramos la siguiente línea y reemplazamos example.com con el nombre de su dominio.

  VirtualHost "example.com"

Comenta la línea:

  habilitado = falso

A esto le sigue la configuración ssl para un host virtual específico. Debe especificar la ruta al certificado y otras opciones adicionales.

Como anteriormente exportamos el certificado y la clave a un archivo, la ruta debe especificarse solo para un archivo.

Las primeras tres líneas son rutas a claves / certificados. respectivamente

  ssl = {
   key = "/etc/prosody/certs/example.com.pem";
   certificate = "/etc/prosody/certs/example.com.pem";
   dhparam = "/etc/prosody/certs/dh-2048.pem";
   options = {"no_sslv3", "no_sslv2", "no_ticket", "no_compression", "single_dh_use", "single_ecdh_use"};
   ciphers = "ECDH: DH :! ADH :! AECDH :! SEED :! DES :! 3DES :! RC4 :! NULL";
 } 

La cuarta línea es responsable de las opciones de ssl y deshabilita las versiones 2 y 3 de ssl. La quinta indica qué cifrados se pueden usar.

Los dos últimos parámetros para un host virtual que requieren cifrado al conectar clientes y servidores. Deben especificarse después del elemento ssl = {...}.

  c2s_require_encryption = true
 s2s_require_encryption = true

Esto completa la configuración de Prosody.

Crear y eliminar usuarios.

Si no ha habilitado la posibilidad de autorregistro de usuarios mediante el cliente, puede agregar nuevos usuarios a través de la consola con un comando simple: prosodyctl adduser name@example.com . Al agregar, deberá especificar una contraseña dos veces.

Los derechos de administración también se pueden dar a cualquier usuario. Especifique el inicio de sesión del usuario requerido en el parámetro admins = {} del archivo de configuración. Por ejemplo:

  admins = {"usuario1@ejemplo.com", "usuario2@ejemplo.net"}

La eliminación de una cuenta de usuario se realiza con el comando: prosodyctl deluser name@example.com , donde name@example.com debe reemplazarse con el ID de jabber del usuario existente.

Mensajes de error

Verifique el siguiente mensaje de error en el registro de errores de Prosody (/var/log/prosody/prosody.err):

  certmanager error SSL / TLS: Error al cargar '/etc/prosody/certs/example.com.pem': 
 Motivo: línea de final incorrecta (por ejemplo.com)

En este caso, debe verificar el archivo de certificado para detectar la presencia de dichas líneas:

  ----- FINALIZA EL CERTIFICADO ---------- COMIENZA LA CLAVE RSA PRIVADA -----

Esto está mal y debes separarlos para que se vean así:

  ----- CERTIFICADO FINAL -----
 ----- COMIENZA LA CLAVE RSA PRIVADA -----

Registros DNS de Jabber

Para cada dominio, debe registrar los registros correspondientes en el DNS (aunque no es necesario si no necesita comunicarse con los usuarios de otro dominio).

  _xmpp-client._tcp IN SRV 5 0 5222 xmpp.example.com.
 _xmpp-server._tcp IN SRV 5 0 5269 xmpp.example.com.

Donde 5 es una prioridad, 0 es el peso, y 5222 y 5269 son puertos para los tipos de comunicación de cliente a servidor y de servidor a servidor, respectivamente.

El siguiente es el nombre de dominio que apunta al servidor con Jabber instalado. Este puede ser el mismo servidor en el que se está ejecutando el sitio, o cualquier otro.

Reglas de iptables

Si las conexiones entrantes están bloqueadas de forma predeterminada en su servidor, debe crear reglas de iptables que permitan las conexiones al servidor Jabber a través de TCP para los puertos necesarios:

  # iptables -A ENTRADA -p tcp --dport 5222 -j ACEPTAR
 # iptables -A ENTRADA -p tcp --dport 5269 -j ACEPTAR 

Habilitar compresión en Prosody

A veces puede ser necesario habilitar la compresión para guardar el tráfico del cliente o del servidor. Para hacer esto, instale el paquete lua-zlib:

  # aptitude install lua-zlib 

Encuentre el grupo de parámetros modules_enabled al principio del archivo de configuración y descomente la línea:

  "compresión";  - Compresión de secuencias (Debian: requiere el módulo lua-zlib para funcionar) 

Y establezca el nivel de compresión del 1 al 9 por el parámetro que necesita registrar después del grupo modules_enabled.

  compress_level = 5 

Pruebas

La corrección de la configuración de cifrado se puede verificar en https://xmpp.net . Hay una prueba para las conexiones de cliente a servidor y las conexiones de servidor a servidor.



¿Cómo calificas el artículo?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 1 calificación, promedio: 5.00 de 5)
Cargando ...

” 2 Comentarios “ Prosody - Jabber / XMPP Server for Debian

  1. Saludos
    Hice todo de acuerdo con sus instrucciones, simplemente no puedo resolver el problema con un certificado de confianza. Tengo u startssl. Hay un archivo con otros, incluyendo apache, ngnix, otherserver. Utilicé el certificado de otherserver (lo probé y apache). Como resultado, la autorización con otros servidores no se lleva a cabo, el error en esta etapa en los registros es:
    info Aceptando la identidad SASL EXTERNAL de ya.ru
    información de la conexión s2s entrante ya.ru-> myserver.ru complete
    info stream s2s entrante ya.ru-> myserver.ru cerrado: el atributo 'stream' nuevo no coincide con el original
    Leí en algún lugar que se decide por la inclusión del módulo s2s_auth_compat. Habilitado, como resultado de la autorización:
    advertir Encabezado de flujo no válido, el certificado no será de confianza

    Como un problema en el propio certificado. Escrito en el soporte de inicio, dijeron que los certificados para servidores XMPP no son compatibles. Aunque aquí se aconseja, y en otros lugares mencionan que la prosodia con sus certificados funciona bien ... por favor, dígame cómo se conectó y qué certificado específico de startssl se conectó.

    1. Es gracioso, solían apoyarlos, pero ahora no lo hacen.

      Tomo el certificado de la carpeta nginx. Allí, él inmediatamente "pegó" con un certificado intermedio. Todo comienza, aunque con ya.ru no probado.

      El certificado debe coincidir con el dominio con www y sin.

      Como alternativa, comente los cifrados y las opciones del host virtual para usar los valores predeterminados. Tal vez xmpp Yandex funcione con sistemas de cifrado menos fuertes y solo bajo sslv3.

      También puede agregar una excepción:

      s2s_insecure_domains = { "ya.ru" }

      http://prosody.im/doc/s2s#security

Añadir un comentario

Su correo electrónico no será publicado.