I.   Connaître sa version d’ubuntu

 

Il suffit juste d’ouvrir un terminal (pour ceux qui utilise un ubuntu graphique) pour les autres je suppose que vous utilisez putty, donc tapez simplement la commande suivante:

  • Commande:  lsb_release -sc

Par exemple je suis sous trusty soit ubuntu 14.04 LTS.

root@xxxxx:/# lsb_release -sc

trusty

 

 


II.   Installation de Prosody

Si votre version fait partie de la liste suivante:

  • Debian: stable, unstable, testing, sid, squeeze, wheezy, jessie
  • Ubuntu: lucid, precise, trusty, utopic

Alors vous pouvez taper la ligne suivante:

root@xxxxx:/# echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list

 

Afin d’éviter des avertissements sur les paquets non authentifiés, on va installer le fichier de clé suivant:

root@xxxxx:/# wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add –

 

Enfin nous allons faire une recherche des paquets et installer le paquet Prosody:

root@xxxxx:/# sudo apt-get update

root@xxxxx:/# sudo apt-get install prosody

 

Attention: Si vous avez une version 64bits il faudra installer la librairie Liblua 64bits (qui sert au chiffrement ssl).

32 Bits

root@xxxxx:/# wget http://prosody.im/downloads/debian/liblua5.1-sec0_0.3.2-2prosody1_i386.deb

root@xxxxx:/# sudo dpkg -i liblua5.1-sec0_0.3.2-2prosody1_i386.deb

 

64 Bits

root@xxxxx:/# wget http://prosody.im/downloads/debian/liblua5.1-sec0_0.3.2-2prosody1_amd64.deb

root@xxxxx:/# sudo dpkg -i liblua5.1-sec0_0.3.2-2prosody1_amd64.deb

 

Passons à la génération du certificat SSL:

root@xxxxx:/# cd /etc/prosody/certs/

root@xxxxx:/# sudo openssl req -new -x509 -days 365 -nodes -out ”nomdudomaine.fr.cert” -keyout ”nomdudomaine.fr.key”

Generating a 2048 bit RSA private key
….+++
…………………………………..+++
writing new private key to ‘asup.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:FRANCE
Locality Name (eg, city) []:PARIS
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

 

Il faut remplacer «  nomdudomaine.fr  » par le nom de votre domaine. 

Lors de cette génération j’ai eu l’erreur suvante:

general             error       The version of LuaExpat on your system does not support stanza size limits, which may leave servers on untrusted networks (e.g. the internet) vulnerable to denial-of-service attacks. You should upgrade to LuaExpat 1.3.0 or higher as soon as possible. See http://prosody.im/doc/depends#luaexpat for more information.

Pour télécharger et  installer LuaExpat 1.3.0, procédez ainsi:

Téléchargement:

root@xxxxx:/# wget lua-expat_1.3.0-1_i386.deb

root@xxxxx:/# dpkg -i lua-expat_1.3.0-1_i386.deb

à adapter si vous avez télécharger la version 64 Bits

Nous pouvons passer à la configuration de Prosody.


III.   Configuration de Prosody

La configuration de Prosody ce passe dans le fichier suivant: /etc/prosody/prosody.cfg.lua. Il faut donc l’éditer.

root@xxxxx:/# nano /etc/prosody/prosody.cfg.lua

 

Voici les lignes à ajouter:

VirtualHost ”nomdudomaine.fr”
ssl = {
key = ”/etc/prosody/certs/nomdudomaine.fr.key”;
certificate = ”/etc/prosody/certs/nomdudomaine.fr.cert”;
}
enabled = true;

 

Pour que la configuration soit prise en compte il nous faut redémarrer Prosody:

root@xxxxx:/# sudo service prosody restart

 

Ne pas oublier d’ouvrir les port de votre pare-feu :

root@xxxxx:/# sudo iptables -A INPUT -p tcp --dport 5222 -j ACCEPT

root@xxxxx:/# sudo iptables -A INPUT -p tcp --dport 5269 -j ACCEPT

root@xxxxx:/# sudo iptables -A OUTPUT -p tcp --dport 5269 -j ACCEPT

 

On vérifie les régles iptable:

root@xxxxx:/# sudo iptables -L | grep xmpp

 

Nous pouvons attaquer la création d’un compte utilisateur:

root@xxxxx:/# sudo prosodyctl adduser nomutilisateur@nomdudomaine.fr

 

 Le mot de passe sera à saisir deux fois


IV.   Clients XMPP

Alors il y a une tripoté de clients XMPP, ici j’utiliserai Pidgin (Linux / Windows) et Xabber (Android).

 


V.   Aller plus loin: les modules

Je vous ai choisi une petite sélection de modules « utiles » selon moi parmi la liste disponible ici

  • mod_announce
  • mod_presence
  • mod_muc
  • mod_motd
  • mod_welcome
  • mod_compression

Pour rajouter ces modules il faut éditer le fichier: /etc/prosody/prosody.cfg.lua


  •  mod_announce

Permet d’envoyer un message à tous les utilisateurs, par exemple pour prévenir d’une maintenance. Seul les administrateurs peuvent le faire.

modules_enabled = {
-- Other modules
”announce”; -- Enable mod_announce
}

 


  • mod_presence

Permet aux utilisateurs d’envoyer les notifications de status, pour savoir s’ils sont en ligne, ocuupé, etc.

modules_disabled = {
-- Other modules
”presence”; -- Disable mod_presence
}

 


  •  mod_muc

MUC qui signifie : Multi-user chat, permet de créer des salons de discussions ou chatroom.

Component ”conference.example.com” ”muc”
name = ”The example.com chatrooms server”
restrict_room_creation = true

 


  •  mod_motd

Permet d’envoyer un message à l’utilisateur, à chaque fois  qu’il se connecte.

ps: Je ne sais pas si je vais le laisser car un peu trop intrusif (une fenêtre de chat qui s’ouvre à chaque fois moi ça m’énerve :P)

modules_enabled = {
-- Other modules
”motd”; -- Enable mod_motd
}

motd_text = [[Welcome to the server! Please enjoy your stay.]]

 


  • mod_welcome

Envoi un message pour les nouveaux utilisateurs.

modules_enabled = {
-- Other modules
”welcome”; -- Enable mod_welcome
}

welcome_message = ”$host accepts you $user”

$host: l’hôte du nouvel utilisateur

$user: Le nom de l’utilisateur

 


  •  mod_compression

Permet comme son nom l’indique une compression des flux. L’option: compression_level permet de choisir le niveau de compression. Il va de 1 à 9, sachant  que 9 est le meilleur niveau de compression, il utilise aussi plus de ressource mais moins de bande passante.

modules_enabled = {
-- Other modules
”compression”; -- Enable mod_compression
}

compression_level = 5

 


VI.   Sécurisation

 

Vérifiez que dans le fichier de configuration:  /etc/prosody/prosody.cfg.lua, les deux lignes suivante soit présente (dans la conf global ou bien spécifié dans le virtualhost) et mise à true :

c2s_require_encryption = true
s2s_require_encryption = true