Installation de DOMOTICZ sur un Raspberry PI 3 B
Nous allons voir comment installer et configurer DOMOTICZ sur votre RPI 3B.
Sources:
http://domoticz.com
https://www.raspberrypi.org/downloads/raspbian/
Tout d’abord qu’est-ce que DOMOTICZ ???
DOMOTICZ est un système de gestion domotique GRATUIT opensource qui va vous permettre de contrôler un paquet de choses chez vous, via votre Raspberry est ses port GPIO mais surtout avec des émetteurs récepteurs radio, comme le RfxTrx433 de chez Rfxcom le USB Z-Stick S2 Z-Wave de chez Z-Wave ou le RFLink. Personnellement j’ai opté pour Rfxcom qui est plus dans l’esprit de l’opensource que Z-Wave et les objets connectées sont moins cher et pas propriétaires et puis je voulais un produit déjà monté (RFLink est à fabriquer soi même).
Commençons notre installation:
Pour se faire il faut télécharger l’image Debian pour RPI ici: Raspbian Jessie with PIXEL mais la version Lite est suffisante, l’installer comme indiqué sur le site de Raspberrypi, vous aurez besoin de l’outil Win32diskimage pour installer l’image sur votre carte SD.
Une fois l’image en place et le Raspberry démarrer vous allez devoir vous connecter avec Putty sur le Raspberry, donc rechercher l’ip local de votre RPI et connectez vous avec l’identifiant mot de passe suivant:
User: pi Password: raspberry
Si vous rencontrez une erreur « connection refused » il faut créer un fichier sans extension nommé « ssh » à la racine de la partition boot.
Une fois connecté il faut faire quelques réglages, taper les commandes (vous pouvez aller vous prendre un café la maj de la distrib prend un bout de temps):
sudo apt-get update sudo apt-get upgrade sudo raspi-config
Ce qui met à jour votre Debian et vous donne accès à la configuration de la distrib Debian du Raspberry, vous devez:
1- Configurer la langue et le clavier.
2- Changer le mot de passe.
3- Étendre la partition système à la capacité de la carte SD.
Vous pouvez quitter et reboot le RPI.
Nous pouvons passer à l’installation de domoticz:
sudo curl -L install.domoticz.com | bash
Dernièrement j’ai rencontré un problème lors d’une nouvelle installation de Domoticz, il plantait au lancement indiquant:
/home/pi/domoticz/domoticz: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or direc
il faut donc installer le packet demandé:
cd /tmp wget http://ftp.fr.debian.org/debian/pool/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb sudo dpkg -i libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb
Voilà c’est fait !! Super compliqué non? ^^
Mais c’est pas fini il faut un peu sécuriser votre installation, pour ce faire il faut installer un outil bien pratique qui est « Fail2Ban » qui va bannir les IP qui essaies a plusieurs reprise de se connecter à votre installation.
Instalaltion de Fail2Ban:
sudo apt-get install fail2ban
Ajouter le log de domoticz dans fail2ban:
cd /etc/fail2ban sudo cp jail.conf jail.local sudo nano jail.local
Ajouter les lignes suivantes:
[domoticz] enabled = true port = 8080 # à modifier si vous avez modifié le port de domoticz par défaut filter = domoticz logpath = /var/log/domoticz.log maxretry = 3 # nombre de tentatives avant bannissement findtime = 3600
Modifier le fichier de conf de domoticz:
sudo nano /etc/init.d/domoticz.sh
Modifier les lignes suivantes:
DAEMON_ARGS="$DAEMON_ARGS -www 8080 -log /var/log/domoticz.log" DAEMON_ARGS="$DAEMON_ARGS -sslwww 443 -log /var/log/domoticz.log"
Redémarrer le service domoticz pour prendre en compte les modifications:
<code>sudo /etc/init.d/domoticz.sh restart</code>
Créer les définitions de recherche des IP a bannir:
<code>sudo nano /etc/fail2ban/filter.d/domoticz.conf</code>
Ajouter les lignes suivantes:
# Fail2Ban configuration file for domoticz # # Author: Domoticz user 'ThinkPad' # # $Revision$ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named "host". The tag "<HOST>" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P<host>[\w\-.^_]+) # Values: TEXT # failregex = Error: Failed login attempt from <HOST> for user '.*' ! Error: Failed login attempt from <HOST> for '.*' ! Error: Webserver: Failed authentication attempt, ignoring client request \(remote addresses: <HOST>\) #First line is for 'Login Page' authentication mode of Domoticz #Second line is for 'Basic-Auth' authentication mode in Domoticz # # # # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Puis créer une liste d’IP que Fail2Ban ne bannira jamais:
sudo nano /etc/fail2ban/jail.local
Modifier la ligne:
ignoreip = 127.0.0.1/8 192.168.X.X/24 #Modifier selon votre réseau local.
Redémarrer Fail2Ban:
sudo /etc/init.d/fail2ban restart
Pour ma part j’utilise aussi GeoIP pour Iptables qui permet de bannir des IP celons leur géolocalisation, en d’autres termes bannir n’importe quelle IP venant de Russie par exemple, l’inconvénient est que si vous êtes en déplacement dans un pays banni, vous ne pourrez pas vous connectera à votre système domotique, à moins de passer par une passerelle VPN pour obtenir un IP local.
Lors de mes premiers tests de GeoIP j’ai eu des problème qui semble lié au kernel, j’ai donc trouvé un site qui explique comment l’installer sur Raspian sans avoir de problème à l’utilisation.
Installation des dépendances:
sudo apt-get update && sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev -y
Upgrade Raspian:
sudo apt-get dist-upgrade -y
Installation d’RPI-source:
sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update
Obtenir la version du kernel:
cd ~ rpi-source
Installation d’xtables-addons depuis les sources:
git clone git://git.code.sf.net/p/xtables-addons/xtables-addons cd xtables-addons ./autogen.sh ./configure make sudo make install
Copie de l’outil GeopIP:
sudo mkdir /usr/share/xt_geoip sudo cp /home/pi/xtables-addons/geoip/xt_geoip_dl /usr/share/xt_geoip/ sudo cp /home/pi/xtables-addons/geoip/xt_geoip_build /usr/share/xt_geoip/
Télécharger et mettre à jour GeoIP data:
cd /usr/share/xt_geoip sudo ./xt_geoip_dl sudo ./xt_geoip_build -D . *.csv
Redémarrer votre RPI:
sudo reboot
Je ne saurai vous dire pourquoi, mais il faut démarrer depmod celons plusieurs sites parlants du problème:
sudo depmod
Vous pouvez maintenant ajouter une restriction de localisation.
Pour le blocage de port:
sudo iptables -A INPUT -p tcp -m tcp --dport XX -m geoip --source-country XX -j DROP # Choisir le port et le code du pays !
Pour un blocage total:
sudo iptables -A INPUT -m geoip --source-country XX -j DROP # Choisir le code pays !
Pour le blocage d’une IP:
sudo iptables -A INPUT -s XXX.XXX.XXX.XXX -j DROP
Retirer le blocage d’une IP :
sudo iptables -D INPUT -s XXX.XXX.XXX.XXX -j DROP
Liste des codes pays: http://www.iso.org/iso/fr/french_country_names_and_code_elements
Voici un fichier contenant les codes pays ainsi qu’un grand nombre d’IP qui mon cassées les c.. pieds et que j’ai fini par bannir définitivement !
ipban-rasp
Pour info, GeoIP n’accepte pas plus de 10 codes pays par lignes.
ATTENTION APRÈS REBOOT LES RÈGLES IPTABLES SAUTES IL FAUT DONC REJOUER LE SCRIPT POUR LES AJOUTER OU FAIRE EN SORTE QUE LE SCRIPT SE LANCE AU DÉMARRAGE DU RPI !!
Maintenant que votre RPI est opérationnel avec DOMOTICZ dessus, vous pouvez accéder à l’interface web via l’url http://IP.DE.VOTRE.RPI:8080.
Leave a Reply