Description
Un serveur TURN est un serveur de VoIP - un serveur de trafic qui passe sur les réseaux NAT et au-travers des passerelles.
- Site web : https://github.com/coturn/coturn
- Version installée : 4.5.0.7p0
- OS : OpenBSD 6.4
Installation
Installez le paquet turnserver !
Un utilisateur _turnserver
sans droit système est créé !
Configuration
Fichier de configuration /etc/turnserver.conf
Il faut décommenter ou remplir les options suivantes :
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret
- pour générer un secret d'authentification …realm
- écrire le nom de domaine ou sous-domainetotal-quota
- paramétrer la à la valeur de100
bps-capacity
- valeur de0
stale-nonce
no-loopback-peers
no-multicast-peers
HTTP ou HTTPS
Quelques options à modifier pour avoir une configuration fonctionnelle :
- Si TLS/HTTPS :
tls-listening-port
- la valeur par défaut du port est5349
- Autrement :
listening-port
- la valeur par défaut du port est3478
Si vous utilisez HTTPS, il faut en plus paramétrer ces options :
cert
- chemin vers le certificat HTTPS du serveurpkey
- chemin vers la clé privée liée au certificat HTTPS du serveurcipherlist
- il est fortement recommandé de modifier cette option à l’identique de la configuration de votre serveur web, si vous en avez un actif sur le même serveur. Voici les valeurs minimales :ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5
- il est possible d’exclure les versions suivantes des protocoles TLS en utilisant les options suivantes :
no-tlsv1
etno-tlsv1_1
- il est possible de configurer un fichier Diffie-Hellman
, c’est l’option
dh-file
- n’utilisez pas le même que celui de votre serveur web ; générez-en exprès rien que pour ce service !
CLI
Par défaut, l’interface d’administration en ligne de commande est activée !
Pour la désactiver, il faut décommenter l’option *no-cli…
Sinon, décommentez les options suivantes pour ajouter un peu de sécurité dessus :
cli-ip
- la valeur par défaut est127.0.0.1
, sauf à raison contraire, laissez-la telle quelle.cli-port
- la valeur par défaut est5766
.cli-password
- si l’option reste commentée, il n’y aura pas de mot de passe - générez un nouveau mot de passe avec la commandeturnadmin
et copiez-le…
Bases de données
Par défaut, SQLite est utilisée, et les données sont enregistrées dans
/var/db/turndb
- là, encore, sous OpenBSD, il est nécessaire que
l’utilisateur _turnserver
ait les droits sur ledit fichier.
Pour les bases de données, MySQL/MariaDB, PostgreSQL, Mongo, Redis, veuillez lire le fichier INSTALL !
Logs
Il est possible de gérer les journaux en modifiant/activant les options suivantes :
no-stdout-log
- empêcher que les journaux soient publiés sur la sortie standardsyslog
- rediriger les sorties vers le journal syslogsimple-log
-log-file
- donnez-lui le chemin absolu vers le nom de fichier dans lequel vous désirez que les journaux soient écrits. -
/var/tmp/turn.log
.Secret d’authentification
Pour générer un secret d’authentification, il suffit de se servir de la
commande openssl, tel que : $ openssl rand -hex 32
Fichier Diffie-Hellman
Là, aussi, openssl sera notre secours, tel que :
$ openssl dhparam -out dhparam_4096.pem 4096
ce qui nous générera un
fichier de 4096 bits.
Turnadmin
Pour générer un mot de passe, il faut utiliser l’option -P
(ou son équivalent : --generate-encrypted-password*
) alliée de l’option
-p
(ou son équivalent : --password
).
- pour l’option
cli-password
:$ turnadmin -P -p cli-password
Dépannage
WARNING: cannot find private key file
Les journaux indiquent que le fichier relatif à la clé privée du certificat SSL/HTTPS ne peut être lu, tel que :
Dec 19 09:08:17 srvr turnserver: 0: WARNING: cannot find private key file: /etc/ssl/acme/private/mydomain.net.privkey.pem (1)
Dec 19 09:08:17 srvr turnserver: 0: WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
En effet, lors de la génération par le client acme natif sous OpenBSD,
les droits sur ledit fichier appartiennent en lecture seule à
root:wheel
- or, le serveur fonctionne avec les droits de
l’utilisateur _turnserver
, il ne peut donc pas y accéder…
(bien sûr, je n’ai pas abordé la génération de certificats TLS avec
Lets’Encrypt… voici un exemple d’explication pour le client acme sous OpenBSD)
- Une des manières est de copier la clé privée de la mettre dans un répertoire où seul l’utilisateur
_turnserver
aura accès avec des droits en lecture seule, et sur le répertoire et sur le fichier de clé privée copié. Une fois fait, indiquez à l’optionpvkey
le nouveau chemin. - L’autre serait de créer un groupe sans droits systèmes, d’y ajouter l’utilisateur
_turnserver
et d’attribuer les droits 0440 sur le fichier original de la clé privée.
Personnellement, je n’aime ni l’une, ni l’autre de ces deux solutions… mais je ne peux proposer mieux !
Démarrer le service
Une fois le fichier configuré, il ne vous reste plus qu’à activer le
service et le démarrer à l’aide de l’outil rcctl
:
# rcctl start turnserver
Règles PF
La configuration des règles du pare-feu PF est un peu plus délicate. Gardez à l’esprit que ce sont des règles à modifier selon vos nécessités :
Fichier : /etc/pf.conf
|
|
Il est très intéressant de déclarer une table abuse et de modifier la règle qui bloque la connexion à l’interface CLI afin que les IP correspondantes soient enregistrées dans la table abuse. Veillez à créer une tâche cron pour purger régulièrement ladite table ;)
Remerciements
Source : https://help.nextcloud.com/t/howto-setup-nextcloud-talk-with-turn-server/30794
Enjoy-ID! Enjoy-IT!