Passer au contenu principal

Prosody - Serveur Jabber / XMPP pour Debian



Les référentiels Debian Jessie ont une version acceptable de 0.9.7. Nous l'avons configuré avec l'add-on pour travailler avec mysql:

  # aptitude install prosody 

Ensuite, vous devez décider quelle base de données utiliser: mysql ou sqlite.



SQLite est plus compact et moins exigeant en ressources. C'est un fichier sur le serveur où sont stockées les tables contenant des informations. Il est facile de copier, rien n’est nécessaire à l’exception de la bibliothèque sqlite3. Une telle base de données sera la meilleure solution si vous configurez un jabber pour vous-même (et une douzaine d'utilisateurs en plus :).

  # aptitude install lua-dbi-sqlite3 

MySQL convient mieux lorsque vous envisagez d'héberger de nombreux comptes utilisateur sur le serveur et d'ajouter, supprimer, modifier, etc. en permanence. Pour une telle base de données, vous avez également besoin du composant approprié.

  # aptitude install lua-dbi-mysql 

Contenu de l'article:

Préparation du certificat SSL

L'utilisation de certificats auto-signés n'est pas du tout casher. :) Il n'y a pas de confiance en eux. Par conséquent, vous devez obtenir un certificat gratuit auprès de StartSSL.com . Il y a une bonne instruction à ce sujet .



Supposons que vous ayez reçu un certificat. Vous avez maintenant le fichier de certificat ssl.crt et la clé ssl.key. La clé doit d'abord être déchiffrée. Bien sûr, vous pouvez utiliser et non déchiffrer, mais vous devez spécifier le mot de passe dans la configuration de Prosody, définir les droits d'accès appropriés, etc.

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

Lors du déchiffrement, vous devrez spécifier le mot de passe de la clé.

En plus de votre certificat et de votre clé, vous avez besoin d'un certificat "Autorité de certification de serveur intermédiaire de classe 1". Téléchargez le:


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

Nous fusionnons dans un seul fichier (example.com est enregistré à titre d'exemple, remplacez-le par votre nom de domaine ):

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

Le certificat sera enregistré dans le dossier / etc / prosody / certs /.

De plus, vous devez créer une clé pour le protocole Diffie-Hellman . Il sera également utilisé dans les paramètres de l'hôte virtuel, offrant la possibilité d'utiliser Forward Secrecy.

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

Définissez des autorisations permettant uniquement la lecture de certificats pour le compte de l'utilisateur de prosody.

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

Ceci termine la préparation des certificats.

Créer une base de données MySQL

Vous pouvez créer une base de données et un utilisateur via la console ou via le panneau de contrôle de phpmyadmin ou similaire.

Configuration de la prosodie

Le processus d'installation est simple. Tout est bien documenté (bien qu'en anglais) et la structure des fichiers de configuration est simple.

Vous pouvez facilement créer des hôtes virtuels, leur attribuer des paramètres spéciaux, etc. Presque une analogie avec Apache et nginx. :)

Les principaux paramètres du fichier de configuration /etc/prosody/prosody.cfg.lua, dont nous devrons éditer les valeurs.

  allow_registration = true; 

Permet l'enregistrement de l'utilisateur à l'aide de programmes clients. Pidgin, par exemple. La valeur par défaut est false . N'activez pas si vous n'avez pas besoin d'autoriser l'enregistrement.

  authentication = "internal_hashed" 

Active le hachage du mot de passe de l'utilisateur. La valeur par défaut est internal_plain, ce qui n’est pas entièrement sécurisé. Enregistrez les mots de passe dans la base de données en clair.

Spécifiez le type de stockage - base de données SQL:

  stockage = "sql"

Si vous avez sélectionné sqlite comme stockage, supprimez la mise en commentaire de la ligne:

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

Si mysql:

  sql = {driver = "MySQL", base de données = "prosody", nom d'utilisateur = "prosody", mot de passe = "secret", hôte = "localhost"}

N'oubliez pas de spécifier le paramètre sql_manage_tables = true ci-dessous, afin que Prosody remplisse automatiquement la base de données avec des tables.

Les valeurs de prosodie dans les paramètres de base de données et nom d'utilisateur doivent être remplacées par le nom de la base de données et le nom d'utilisateur, respectivement. Vous devez également spécifier un mot de passe pour l'option de mot de passe , en remplacement de la phrase secrète . L'hôte reste inchangé si le serveur MySQL est installé sur le même ordinateur que Prosody.

Hôtes virtuels dans Prosody

L'élément de configuration suivant pour Prosody est la création d'une configuration pour les hôtes virtuels. Supposons que nous ayons un domaine. Nous trouvons la ligne suivante et remplaçons example.com par le nom de votre domaine.

  VirtualHost "exemple.com"

Commentez la ligne:

  enabled = false

Ceci est suivi par les paramètres ssl pour un hôte virtuel spécifique. Vous devez spécifier le chemin d'accès au certificat et d'autres options supplémentaires.

Comme nous avions précédemment exporté le certificat et la clé dans un fichier, le chemin d'accès ne doit être spécifié que dans un fichier.

Les trois premières lignes sont des chemins d'accès aux clés / certificats. respectivement.

  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"};
   Chiffres = "ECDH: DH:! ADH:! AECDH:! SEED:! DES:! 3DES :! RC4 :! NULL";
 } 

La quatrième ligne est responsable des options ssl et désactive les versions 2 et 3 de ssl. La cinquième indique les chiffrements autorisés à être utilisés.

Les deux derniers paramètres d'un hôte virtuel qui nécessitent un chiffrement lors de la connexion des clients et des serveurs. Ils doivent être spécifiés après l'élément ssl = {...}.

  c2s_require_encryption = true
 s2s_require_encryption = true

Ceci termine la configuration de Prosody.

Créer et supprimer des utilisateurs

Si vous n'avez pas activé la possibilité d'auto-enregistrement des utilisateurs utilisant le client, vous pouvez ajouter de nouveaux utilisateurs via la console à l'aide d'une commande simple: prosodyctl adduser nom@exemple.com . Lors de l'ajout, vous devrez spécifier un mot de passe deux fois.

Les droits d’administration peuvent également être accordés à n’importe quel utilisateur. Spécifiez le nom de connexion de l'utilisateur requis dans le paramètre admins = {} du fichier de configuration. Par exemple:

  admins = {"user1@example.com", "user2@example.net"}

La suppression d'un compte d'utilisateur est effectuée à l'aide de la commande: prosodyctl deluser nom@exemple.com , où nom@exemple.com doit être remplacé par l'ID jabber de l'utilisateur existant.

Messages d'erreur

Vérifiez le message d'erreur suivant dans le journal des erreurs de Prosody (/var/log/prosody/prosody.err):

  Erreur de certmanager SSL / TLS: Impossible de charger '/etc/prosody/certs/example.com.pem': 
 Raison: mauvaise ligne de fond (par exemple.com)

Dans ce cas, vous devez vérifier la présence de telles lignes dans le fichier de certificat:

  ----- CERTIFICAT DE FIN ---------- COMMENCEZ LA CLÉ PRIVÉE RSA -----

C'est faux et vous devez les séparer pour qu'ils ressemblent à ceci:

  ----- CERTIFICAT FINAL -----
 ----- COMMENCER LA CLÉ PRIVÉE RSA -----

Enregistrements DNS de Jabber

Pour chaque domaine, vous devez enregistrer les enregistrements correspondants dans le DNS (bien que cela ne soit pas nécessaire si vous n'avez pas besoin de communiquer avec les utilisateurs d'un autre domaine).

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

Où 5 est une priorité, 0 est le poids et 5222 et 5269 sont des ports pour les types de communication client à serveur et serveur à serveur, respectivement.

Ce qui suit est le nom de domaine qui pointe vers le serveur sur lequel jabber est installé. Cela peut être le même serveur sur lequel le site est en cours d’exécution ou tout autre.

Règles Iptables

Si les connexions entrantes sont bloquées par défaut sur votre serveur, vous devez créer des règles iptables permettant les connexions au serveur Jabber via TCP pour les ports nécessaires:

  # iptables -A INPUT -p tcp --dport 5222 -j ACCEPTER
 # iptables -A INPUT -p tcp --dport 5269 -j ACCEPTER 

Activer la compression dans Prosody

Parfois, il peut être nécessaire d'activer la compression pour économiser le trafic client ou serveur. Pour ce faire, installez le paquet lua-zlib:

  # aptitude install lua-zlib 

Recherchez le groupe de paramètres modules_enabled au tout début du fichier de configuration et supprimez la mise en commentaire de la ligne:

  "compression";  - Compression de flux (Debian: nécessite le module lua-zlib pour fonctionner) 

Et définissez le niveau de compression de 1 à 9 paramètres, qui doivent être écrits après le groupe modules_enabled.

  niveau de compression = 5 

Tests

L'exactitude des paramètres de cryptage peut être vérifiée sur https://xmpp.net . Il existe un test pour les connexions client à serveur et les connexions serveur à serveur.



Comment évaluez-vous l'article?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 1 évaluation moyenne de 5.00 sur 5)
Chargement ...

” 2 Commentaires “ Prosody - Serveur Jabber / XMPP pour Debian

  1. Salutations
    J'ai tout fait selon vos instructions - je ne peux tout simplement pas résoudre le problème avec un certificat de confiance. Vous avez commencé. Il y a une archive avec d'autres, y compris Apache, Ngnix, otherserver. J'ai utilisé le certificat de otherserver (je l'ai essayé et apache) - par conséquent, l'autorisation avec d'autres serveurs n'a pas lieu, l'erreur à ce stade dans les journaux est:
    info Accepter l'identité externe de SASL de ya.ru
    info connexion entrante s2s ya.ru-> myserver.ru complète
    info entrant s2s stream ya.ru-> myserver.ru fermé: l'attribut "from" du nouveau flux ne correspond pas à l'original
    J'ai lu quelque part que c'est décidé par l'inclusion du module s2s_auth_compat. Activé à la suite d'une autorisation:
    avertir En-tête de flux non valide, le certificat ne sera pas approuvé

    Comme un problème dans le certificat lui-même. Écrit dans la prise en charge de startssl, ils ont déclaré que les certificats des serveurs XMPP ne sont pas pris en charge. Bien que vous conseilliez ici, et ailleurs, ils mentionnent que la prosodie avec leurs certificats fonctionne bien ... dites-moi comment vous vous êtes connecté et quel certificat spécifique de startssl est connecté?

    1. C'est drôle, ils les soutenaient, mais maintenant ils ne le font pas.

      Je prends le certificat du dossier nginx. Là, il a immédiatement "collé" avec un certificat intermédiaire. Tout commence, même si avec ya.ru pas testé.

      Le certificat doit correspondre au domaine avec www et sans.

      Vous pouvez également commenter les chiffrements et les options de l'hôte virtuel pour qu'ils utilisent les valeurs par défaut. Peut-être que xmpp Yandex fonctionne avec des chiffrements moins puissants et uniquement sous sslv3.

      Vous pouvez également ajouter une exception:

      s2s_insecure_domains = { "ya.ru" }

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

Ajouter un commentaire

Votre email ne sera pas publié.