Page 1 sur 1
Comment sécuriser les appels API de Domoticz
Publié : 29 janv. 2021, 07:49
par Olivier_1968
Bonjour à tous,
Voila en quelques mots la problématique :
J'ai mis en place dans un autre domicile que le miens un automatisme basé sur une Arduino. Cette Arduino étant connectée au réseau local, je pensais superviser cet automatisme via mon Domoticz (installé sur un raspberry) mais qui se trouve chez moi. Pour cela j'envisageais d'utiliser l'API de domoticz pour que l'Arduino vienne via des appel API changer l'état de "dummy" équipements déclaré dans mon domoticz.
Mon problème c'est qu'il m'est difficile de sécuriser les appels depuis l'Arduino (celle-ci ne sachant, en autre, pas faire du Https) d'où ma question, comment sécuriser au mieux les appels entrant vers mon API domoticz qui devront se faire sur le port "non sécurisé de domoticz soit le 8080 ? Autre question, est-il possible de créer un compte spécial dans domoticz qui serait restreint aux appels API, qui ne pourrait pas être utilisé pour se connecter au serveur HTTP de domoticz ?
Merci d'avance pour vos suggestions.
Olivier
Re: Comment sécuriser les appels API de Domoticz
Publié : 29 janv. 2021, 08:48
par lost
Olivier_1968 a écrit : 29 janv. 2021, 07:49
Mon problème c'est qu'il m'est difficile de sécuriser les appels depuis l'Arduino (celle-ci ne sachant, en autre, pas faire du Https) d'où ma question, comment sécuriser au mieux les appels entrant vers mon API domoticz qui devront se faire sur le port "non sécurisé de domoticz soit le 8080 ? Autre question, est-il possible de créer un compte spécial dans domoticz qui serait restreint aux appels API, qui ne pourrait pas être utilisé pour se connecter au serveur HTTP de domoticz ?
Tout devant passer par l'API HTTP/JSON de Domoticz, bloquer l'interface en laissant passer les appels ne pourra AMHA se faire qu'en filtrant sur les URL sachant que le format des appels est:
Code : Tout sélectionner
http://<username:password@>domoticz-ip<:port>/json.htm?api-call
Il ne faudrait lasser passer, du dehors, que les url contenant "json.htm". Sans doute possible, mais pas certain que ce soit si simple à faire (une règle FW va taper les couches en dessous, il faudrait sans doute un proxy).
Puis comme cette API est bien documentée, permet tout et que les mdp vont passer en clair, la question se pose de l'intérêt à faire ainsi vs mettre un raspberry PI ZeroW (par exemple) au lieu de l'arduino. Là, forcément, les solutions sécurisées sont plus ouverte: HTTPS bien sûr, mais également commandes distantes via SSH (qui s’exécuteront alors "localement" côté Domoticz, donc pas de pb de mdp etc si configuré pour ne pas en demander localement) voir VPN si besoins plus étendus.
Re: Comment sécuriser les appels API de Domoticz
Publié : 29 janv. 2021, 12:03
par Antori91
Bonjour,
De prime abord, je m'orienterai plutôt vers du MQTT que du HTTP pour un tel cas d'usage. Déjà avec MQTT, c'est session oriented, donc le user/password va ne circuler qu'une seule fois et non à chaque envoi de données. On peut éventuellement faire du MQTT/SSL si on veut que le password ne circule pas en clair et que toutes les données transmises soient cryptées.
Par ailleurs MQTT est supporté sur Arduino.
Re: Comment sécuriser les appels API de Domoticz
Publié : 29 janv. 2021, 19:21
par Olivier_1968
Merci pour vos réponses, effectivement pas de solution idéale.
L'Arduino étant déjà en place pour assurer le pilotage d'automatisme il est difficile de la remplacer par un rasp.
L'idée du MQTT est bonne, mais la problématique reste la même.
Si j'installais sur place (sur le même réseau que l'arduino) un petit raspZeroW dedié a la communication vers mon domoticz, est-ce que je pourrais monter un VPN entre ce rasp et celui sur lequel est installé mon domoticz ? ou faudrait-il que je passe par des routeurs que je viendrais intercaler entre les raps et les box internet ?
olivier
Re: Comment sécuriser les appels API de Domoticz
Publié : 30 janv. 2021, 17:42
par Antori91
Olivier_1968 a écrit : 29 janv. 2021, 19:21
L'idée du MQTT est bonne, mais la problématique reste la même.
olivier
Vraiment pas compris ce qui motive cette affirmation ! Un peu de recherche sur Internet montre qu'avec du code Arduino vous pouvez faire du MQTT/SSL, ce qui correspond à priori à votre besoin. Je dois dire que si j'utilise MQTT sur des ESP8266 (avec du code Arduino), je n'ai pas essayé avec SSL. Par contre sur Raspberry et Synology, je fais du MQTT avec messages cryptés et signés MD5 ne permettant pas à un pirate de les rejouer (messages générés et vérifiés en Python ou nodeJS selon la plateforme et l'application cliente de ces messages).
Enfin, il me semble que Domoticz dans sa dernière version sait dialoguer en MQTT/SSL (Je parle bien de MQTT/SSL car évidemment cela fait belle lurette que Domoticz sait s'interfacer à MQTT sans SSL).
Re: Comment sécuriser les appels API de Domoticz
Publié : 30 janv. 2021, 18:35
par Olivier_1968
Bonjour,
Effectivement j'avais mal compris votre réponse. Je vais creuser cette piste.
Merci pour l'info.
Olivier