[Tuto] Sécuriser jMQTT par un mot de passe

Ce tuto était noyé dans la discussion Question sécurité, ne devrait on pas mettre allow_anonymous à false pour bénéficier d'une protection par mot de passe?
Je l’ai extrais du fil de la discussion pour pouvoir mettre un titre plus explicite et respecter le « un message, un sujet ». On pourras ainsi le retrouver plus facilement.
Une précision : Je suis en jeedom 4 installé sur un pi. Mqtt a été installé automatiquement lors de l’installation de jMQTT.

TUTO : Comment mettre en place la sécurité utilisateur / mot de passe pour MQTT ?

Récemment, je me suis aperçu que dans la config du brocker MQTT, on pouvait rentrer n’importe quoi comme mot de passe ou utilisateur et tout marche quand même.
Du coup, j’ai été voir le fichier de config mosquito et on a allow_anonymous à true.

Bref, attention, de base, on ne bénéficie pas de la protection utilisateur/mdp.

Alors comment installer cette protection :

Par ssh (par puTTy par exemple), allez modifier le fichier de configuration de mosquito créé par jMQTT :

sudo nano /etc/mosquitto/conf.d/jMQTT.conf

Remplacez

allow_anonymous true

par

allow_anonymous false

Ajouter la ligne indiquant où se trouvera le fichier de mot de passe mosquito :

password_file /etc/mosquitto/passwd

Sortez en validant (Ctrl X)
Il faut maintenant donner les couples utilisateurs / mot de passe.

Une commande va permettre de créer le fichier mot de passe et d’ajouter le premier utilisateur :
(remplacez NOM_UTILISATEUR par le nom de l’utilisateur que vous souhaitez créer)
sudo mosquitto_passwd -c /etc/mosquitto/passwd NOM_UTILISATEUR

Vous aurez alors à rentrer 2 fois le mot de passe pour l’utilisateur en question.
Par curiosité, si vous ouvrez le fichier /etc/mosquitto/passwd vous verrez que le mot de passe est crypté.

Vous pouvez ajouter un autre utilisateur par la commande

sudo mosquitto_passwd -b /etc/mosquitto/passwd NOM_UTILISATEUR MOT_DE_PASSE
(remplacez NOM_UTILISATEUR et MOT_DE_PASSE par vos valeurs)

Pour effacer un utilisateur :

sudo mosquitto_passwd -D /etc/mosquitto/passwd NOM_UTILISATEUR

Il faut relancer mosquito pour que les changements soient pris en compte :

sudo systemctl restart mosquitto
6 « J'aime »

Bonjour,

Merci pour ces information, ça clarifie le fonctionnement du serveur mosquitto.

Je me demandais s’il n’était pas possible de gérer la combinaison UTILISATEUR/MDP avec une clé dans la base de donnée Jeedom.
Mauvais moyen pour conserver les paramètres en cas de restauration ?
Voir mosquitto + mysql auth + let’s encrypt – fab.ovh

La question est plus sur la configuration du service mosquitto installé sur la machine.

Quand tu réinstalles Jeedom et restores un backup, la conf de mosquito n’est conservée que si elle est dans un dossier de Jeedom (ce qui n’est pas le cas), donc tu auras beau faire une super config en bbd (j’aime beaucoup l’idée en passant), il faut malgré tout que le service mosquitto soit reconfiguré.

C’est un sujet que mqtt2 traite en installant mosquito en docker ou en changeant le chemin du fichier de config dans le cas d’une install locale.

A date, nous (jmqtt) ne touchons pas à la config du service mosquito et ne la sauvegardons pas dans jeedom.

C’est certainement un axe d’amélioration.

Bad