Homematic – Absicherung mit http-Authentifizierung via Synology NAS und Reverse Proxy
Das Scenario
Eine Homematic Anlage soll von überall erreichbar sein. Da die Anlage von Hause aus aber keine Authentifizierung mitbringt aber verhindert werden soll, dass jeder x-Beliebige die Heizung oder andere Komponenten steuert, ist eine Absicherung sinnvoll.
Die sicherste Variante ist sicherlich via VPN – der Komfort leidet darunter aber sehr. Daher hier ein Tutorial, wie die Homematic zumindest mit http-basic-authentication absichert werden kann.
Dieses Tutorial funktioniert natürlich auch auf anderen Systemen als einer Synology NAS – da diese aber in diesem Fall gegeben ist und der Reverse-Proxy bereits gut arbeitet, dient sie als Webserver (inkl. Reverse Proxy).
Technische Voraussetzungen
- Internetanschluss
- beliebiger Router mit konfigurierbarer Firewall (eingehende Port-Weiterleitung)
- feste IP-Adresse oder funktionierendes DynDNS
- DNS-Eintrag (in diesem Tutorial: hausautomation.ncsemke.de – dieser muss auf die feste IP des Internet-Anschlusses verweisen – bitte beachten: die URL gibt es in real nicht sondern ist nur ein Beispiel in diesem Tutorial)
- Homematic CCU (bzw. CCU2)
- Synology NAS (egal welche, DSM Version 6.x – in diesem Fall DS1815+ mit DSM 6.1)
- Nicht zwingend erforderlich: Eine App für das Smartphone (hier: Homedroid)
- Webbrowser (z.B. Chrome) und Putty
Konfiguration
Erste Schritte: Synology vorbereiten
Es wird davon ausgegangen, dass das Synology NAS bereits grundeingerichtet ist. Was ggf. noch aktiviert / installiert werden muss, sind die folgenden Komponenten:
- SSH-Zugang
- Web Station
- Anwendungsportal
Die Einstellungen werden als User „admin“ vorgenommen. In der Systemsteuerung unter „Terminal & SNMP“ im Reiter „Terminal“ den Haken bei „SSH-Dienst aktivieren“ setzen. Als Port wird in diesem Tutorial der Standard-Port 22 genutzt. Unter „Erweiterte Einstellungen“ kommt die Sicherheitsstufe „Mittel“ zum Einsatz. Mit „Übernehmen“ werden die Einstellungen gespeichert.
Nun kann mit Putty der Zugriff auf die Synology NAS durchgeführt werden:
Hostname oder IP der Synology: z.B. 192.168.1.1
Username der Synology: admin
Passwort: das gleiche wie im Webfrontend
Wichtig: der User „admin“ ist nicht der User „root“, der aber benötigt wird. Daher muss auf der Konsole nach dem erfolgreichen Login als User „admin“ folgendes eingegeben werden:
admin@galaxy: $ sudo su –
Password: <das gleiche Passwort wie vom User „admin“>root@galaxy:~#
Wenn das funktioniert hat ist der SSH-Zugang sauber eingerichtet und getestet.
Weiter geht es nun mit der Web Station. Dieses Paket sollte eigentlich vorinstalliert sein. Falls nicht einfach im Paket-Zentrum nach „Web Station“ suchen und diese installieren und anschließend öffnen (oder direkt aus dem Menü heraus öffnen).
Unter „Status“ gibt es unten eine Übersicht, welche Webserver und Komponenten installiert sind. Hier sollte „Nginx“ installiert sein. Ist dies nicht der Fall, kann das über den Status bzw. die Verwaltung nachgeholt werden.
Anschließend im Menü „Allgemeine Einstellungen“ der Web Station folgende Konfiguration auswählen:
PHP wird für diese Konfiguration nicht benötigt, ist in diesem Fall aber schon vom System vorgegeben. Persönliche Website aktivieren ist in diesem Fall deaktiviert, spielt aber keine Rolle.
Damit ist die Synology vorbereitet und es geht mit der Nginx-Konfiguration weiter.
Nginx konfigurieren
Es geht zurück in die SSH-Konsole als User „root“, da der eingebaute Reverse Proxy der Synology leider keine Authentifzierungs-Konfiguration zulässt.
Braucht man keine Authentifizierung, können trotz der folgenden manuellen Konfiguration in der Systemsteuerung -> Anwendungsportal oben im Reiter „Reverse Proxy“ beliebig viele Einträge erstellt werden.
Bitte im folgenden die Konfigurationsdatei auf den eigenen Namen ändern.
Außerdem auch die IP-Adresse unter „proxy_pass“ den eigenen Bedürfnissen anpassen. Hier im Beispiel ist die IP-Adresse der Homematic CCU 192.168.1.2.
Als Benutzer wird hier der User „Webbenutzer“ genommen – dieser kann frei gewählt werden, genau wie das Passwort.
root@galaxy:~# cd /etc/nginx/sites-enabled
vi hausautomation.ncsemke.de.conf
server {
listen 80;server_name hausautomation.ncsemke.de;
location / {
proxy_set_header Authorization „“;
auth_basic „Protected“;
auth_basic_user_file /etc/nginx/basic_auth;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_intercept_errors on;
proxy_http_version 1.1;
proxy_pass http://192.168.1.2:80;
}}
<escape> :wq
root@galaxy:/etc/nginx/sites-enabled# cd ..
root@galaxy:/etc/nginx/# htpasswd -c /etc/nginx/basic_auth Webbenutzer
New password: <passwort für Webbenutzer angeben>
Re-type new password: <passwort für Webbenutzer erneut angeben>
Adding password for user Webbenutzer
root@galaxy:/etc/nginx/# synoservicectl –restart nginx
nginx restarted.
root@galaxy:/etc/nginx/sites-enabled# exit
logout
admin@galaxy:/$ exit
Mehr ist nicht notwendig, der Reverse Proxy-Eintrag inkl. Authentifizierung ist eingerichtet.
Router konfigurieren
Final wird nun der Router eingerichtet. Je nach Modell und Möglichkeiten muss nun extern ein Port-Forwarding eingerichtet werden:
Port 80 extern auf Port 80 intern auf die IP-Adresse der Synlogoy
Diese verarbeitet dann die Authentifizierung und leitet bei erfolgreicher Anmeldung die Anfrage an die Homematic CCU weiter.
Was den Komfort erhöht ist ein statischer DNS-Eintrag für das interne Netz im Router. Hier muss der DNS-Eintrag von „hausautomation.ncsemke.de“ auf die IP-Adresse 192.168.1.1 eingetragen werden. Somit sind auch interne Systeme in der Lage, die URL zu nutzen. Gerade in Verbindung mit einer App ist dies sinnvoll, da man sonst immer die Adresse umkonfigurieren muss.
Leider bietet nicht jeder Router diese Möglichkeit.
App „Homedroid“ konfigurieren
Da die meisten Apps davon ausgehen, dass entweder die Homematic Online-Services genutzt werden oder die CCU gar ohne Schutz im Netz steht, ist das obige Scenario nicht immer möglich.
Homedroid hat eine Funktion eingebaut, die HTTP-Auth unterstützt.
Dazu in der App in den Einstellungen die Serveradresse eintragen:
hausautomation.ncsemke.de
Anschließend unter „Netzwerkeinstellungen“ ganz unten den Haken bei „HTTP-Authentifizierung“ setzen und unter Benutzername und Passwort die oben eingerichteten Zugangsdaten eintragen.