{"id":121,"date":"2017-04-05T12:11:22","date_gmt":"2017-04-05T11:11:22","guid":{"rendered":"http:\/\/ncsemke.de\/?p=121"},"modified":"2021-10-26T13:33:54","modified_gmt":"2021-10-26T12:33:54","slug":"homematic-absicherung-mit-http-authentifizierung-via-synology-nas-und-reverse-proxy","status":"publish","type":"post","link":"https:\/\/ncsemke.de\/?p=121","title":{"rendered":"Homematic &#8211; Absicherung mit http-Authentifizierung via Synology NAS und Reverse Proxy"},"content":{"rendered":"<h1>Das Scenario<\/h1>\n<p>Eine Homematic Anlage soll von \u00fcberall 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.<\/p>\n<p>Die sicherste Variante ist sicherlich via VPN &#8211; der Komfort leidet darunter aber sehr. Daher hier ein Tutorial, wie die Homematic zumindest mit http-basic-authentication absichert werden kann.<\/p>\n<p>Dieses Tutorial funktioniert nat\u00fcrlich auch auf anderen Systemen als einer Synology NAS &#8211; da diese aber in diesem Fall gegeben ist und der Reverse-Proxy bereits gut arbeitet, dient sie als Webserver (inkl. Reverse Proxy).<\/p>\n<p>&nbsp;<\/p>\n<h1>Technische Voraussetzungen<\/h1>\n<ul>\n<li>Internetanschluss<\/li>\n<li>beliebiger Router mit konfigurierbarer Firewall (eingehende Port-Weiterleitung)<\/li>\n<li>feste IP-Adresse oder funktionierendes DynDNS<\/li>\n<li>DNS-Eintrag (in diesem Tutorial: hausautomation.ncsemke.de &#8211; dieser muss auf die feste IP des Internet-Anschlusses verweisen &#8211; bitte beachten: die URL gibt es in real nicht sondern ist nur ein Beispiel in diesem Tutorial)<\/li>\n<li>Homematic CCU (bzw. CCU2)<\/li>\n<li>Synology NAS (egal welche, DSM Version 6.x &#8211; in diesem Fall DS1815+ mit DSM 6.1)<\/li>\n<li>Nicht zwingend erforderlich: Eine App f\u00fcr das Smartphone (hier: Homedroid)<\/li>\n<li>Webbrowser (z.B. Chrome) und Putty<\/li>\n<\/ul>\n<h1><\/h1>\n<h1>Konfiguration<\/h1>\n<h2>Erste Schritte: Synology vorbereiten<\/h2>\n<p>Es wird davon ausgegangen, dass das Synology NAS bereits grundeingerichtet ist. Was ggf. noch aktiviert \/ installiert werden muss, sind die folgenden Komponenten:<\/p>\n<ul>\n<li>SSH-Zugang<\/li>\n<li>Web Station<\/li>\n<li>Anwendungsportal<\/li>\n<\/ul>\n<p>Die Einstellungen werden als User &#8222;admin&#8220; vorgenommen. In der Systemsteuerung unter &#8222;Terminal &amp; SNMP&#8220; im Reiter &#8222;Terminal&#8220; den Haken bei &#8222;SSH-Dienst aktivieren&#8220; setzen. Als Port wird in diesem Tutorial der Standard-Port 22 genutzt. Unter &#8222;Erweiterte Einstellungen&#8220; kommt die Sicherheitsstufe &#8222;Mittel&#8220; zum Einsatz. Mit &#8222;\u00dcbernehmen&#8220; werden die Einstellungen gespeichert.<\/p>\n<p>Nun kann mit Putty der Zugriff auf die Synology NAS durchgef\u00fchrt werden:<\/p>\n<p>Hostname oder IP der Synology: z.B. 192.168.1.1<br \/>\nUsername der Synology: admin<br \/>\nPasswort: das gleiche wie im Webfrontend<\/p>\n<p>Wichtig: der User &#8222;admin&#8220; ist nicht der User &#8222;root&#8220;, der aber ben\u00f6tigt wird. Daher muss auf der Konsole nach dem erfolgreichen Login als User &#8222;admin&#8220; folgendes eingegeben werden:<\/p>\n<blockquote><p>admin@galaxy: $ sudo su &#8211;<br \/>\nPassword:\u00a0 &lt;das gleiche Passwort wie vom User &#8222;admin&#8220;&gt;<\/p>\n<p>root@galaxy:~#<\/p><\/blockquote>\n<p>Wenn das funktioniert hat ist der SSH-Zugang sauber eingerichtet und getestet.<\/p>\n<p>&nbsp;<\/p>\n<p>Weiter geht es nun mit der Web Station. Dieses Paket sollte eigentlich vorinstalliert sein. Falls nicht einfach im Paket-Zentrum nach &#8222;Web Station&#8220; suchen und diese installieren und anschlie\u00dfend \u00f6ffnen (oder direkt aus dem Men\u00fc heraus \u00f6ffnen).<\/p>\n<p>Unter &#8222;Status&#8220; gibt es unten eine \u00dcbersicht, welche Webserver und Komponenten installiert sind. Hier sollte &#8222;Nginx&#8220; installiert sein. Ist dies nicht der Fall, kann das \u00fcber den Status bzw. die Verwaltung nachgeholt werden.<\/p>\n<p><a href=\"https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-138 size-full\" src=\"https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation01.png\" alt=\"\" width=\"983\" height=\"482\" srcset=\"https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation01.png 983w, https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation01-300x147.png 300w, https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation01-768x377.png 768w\" sizes=\"auto, (max-width: 983px) 100vw, 983px\" \/><\/a><\/p>\n<p>Anschlie\u00dfend im Men\u00fc &#8222;Allgemeine Einstellungen&#8220; der Web Station folgende Konfiguration ausw\u00e4hlen:<\/p>\n<p><a href=\"https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-139 size-full\" src=\"https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation02.png\" alt=\"\" width=\"983\" height=\"573\" srcset=\"https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation02.png 983w, https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation02-300x175.png 300w, https:\/\/ncsemke.de\/wp-content\/uploads\/2017\/04\/webstation02-768x448.png 768w\" sizes=\"auto, (max-width: 983px) 100vw, 983px\" \/><\/a><\/p>\n<p>PHP wird f\u00fcr diese Konfiguration nicht ben\u00f6tigt, ist in diesem Fall aber schon vom System vorgegeben. Pers\u00f6nliche Website aktivieren ist in diesem Fall deaktiviert, spielt aber keine Rolle.<\/p>\n<p>Damit ist die Synology vorbereitet und es geht mit der Nginx-Konfiguration weiter.<\/p>\n<p>&nbsp;<\/p>\n<h2>Nginx konfigurieren<\/h2>\n<p>Es geht zur\u00fcck in die SSH-Konsole als User &#8222;root&#8220;, da der eingebaute Reverse Proxy der Synology leider keine Authentifzierungs-Konfiguration zul\u00e4sst.<\/p>\n<p>Braucht man keine Authentifizierung, k\u00f6nnen trotz der folgenden manuellen Konfiguration in der Systemsteuerung -&gt; Anwendungsportal oben im Reiter &#8222;Reverse Proxy&#8220; beliebig viele Eintr\u00e4ge erstellt werden.<\/p>\n<p>Bitte im folgenden die Konfigurationsdatei auf den eigenen Namen \u00e4ndern.<br \/>\nAu\u00dferdem auch die IP-Adresse unter &#8222;proxy_pass&#8220; den eigenen Bed\u00fcrfnissen anpassen. Hier im Beispiel ist die IP-Adresse der Homematic CCU 192.168.1.2.<\/p>\n<p>Als Benutzer wird hier der User &#8222;Webbenutzer&#8220; genommen &#8211; dieser kann frei gew\u00e4hlt werden, genau wie das Passwort.<\/p>\n<p>&nbsp;<\/p>\n<blockquote><p>root@galaxy:~# cd \/etc\/nginx\/sites-enabled<\/p>\n<p>vi hausautomation.ncsemke.de.conf<\/p>\n<p>&nbsp;<\/p>\n<p>server {<br \/>\nlisten 80;<\/p>\n<p>server_name hausautomation.ncsemke.de;<\/p>\n<p>location \/ {<br \/>\nproxy_set_header\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Authorization &#8222;&#8220;;<br \/>\nauth_basic\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8222;Protected&#8220;;<br \/>\nauth_basic_user_file\u00a0\u00a0\u00a0 \/etc\/nginx\/basic_auth;<br \/>\nproxy_set_header\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Host\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $http_host;<br \/>\nproxy_set_header\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X-Real-IP\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $remote_addr;<br \/>\nproxy_set_header\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X-Forwarded-For\u00a0\u00a0\u00a0\u00a0 $proxy_add_x_forwarded_for;<br \/>\nproxy_set_header\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X-Forwarded-Proto\u00a0\u00a0 $scheme;<br \/>\nproxy_intercept_errors\u00a0 on;<br \/>\nproxy_http_version\u00a0\u00a0\u00a0\u00a0\u00a0 1.1;<br \/>\nproxy_pass http:\/\/192.168.1.2:80;<br \/>\n}<\/p>\n<p>}<\/p>\n<p>&lt;escape&gt; :wq<\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<blockquote><p>root@galaxy:\/etc\/nginx\/sites-enabled# cd ..<\/p>\n<p>root@galaxy:\/etc\/nginx\/# htpasswd -c \/etc\/nginx\/basic_auth Webbenutzer<br \/>\nNew password: &lt;passwort f\u00fcr Webbenutzer angeben&gt;<br \/>\nRe-type new password: &lt;passwort f\u00fcr Webbenutzer erneut angeben&gt;<br \/>\nAdding password for user Webbenutzer<\/p>\n<p>&nbsp;<\/p>\n<p>root@galaxy:\/etc\/nginx\/# synoservicectl &#8211;restart nginx<br \/>\nnginx restarted.<br \/>\nroot@galaxy:\/etc\/nginx\/sites-enabled# exit<br \/>\nlogout<br \/>\nadmin@galaxy:\/$ exit<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<p>Mehr ist nicht notwendig, der Reverse Proxy-Eintrag inkl. Authentifizierung ist eingerichtet.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Router konfigurieren<\/h2>\n<p>Final wird nun der Router eingerichtet. Je nach Modell und M\u00f6glichkeiten muss nun extern ein Port-Forwarding eingerichtet werden:<\/p>\n<p>Port 80 extern auf Port 80 intern auf die IP-Adresse der Synlogoy<\/p>\n<p>Diese verarbeitet dann die Authentifizierung und leitet bei erfolgreicher Anmeldung die Anfrage an die Homematic CCU weiter.<\/p>\n<p>Was den Komfort erh\u00f6ht ist ein statischer DNS-Eintrag f\u00fcr das interne Netz im Router. Hier muss der DNS-Eintrag von &#8222;hausautomation.ncsemke.de&#8220; 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.<\/p>\n<p>Leider bietet nicht jeder Router diese M\u00f6glichkeit.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>App &#8222;Homedroid&#8220; konfigurieren<\/h2>\n<p>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\u00f6glich.<\/p>\n<p>Homedroid hat eine Funktion eingebaut, die HTTP-Auth unterst\u00fctzt.<\/p>\n<p>Dazu in der App in den Einstellungen die Serveradresse eintragen:<\/p>\n<p>hausautomation.ncsemke.de<\/p>\n<p>Anschlie\u00dfend unter &#8222;Netzwerkeinstellungen&#8220; ganz unten den Haken bei &#8222;HTTP-Authentifizierung&#8220; setzen und unter Benutzername und Passwort die oben eingerichteten Zugangsdaten eintragen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Scenario Eine Homematic Anlage soll von \u00fcberall 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 &#8211; der Komfort leidet darunter aber sehr. Daher hier ein Tutorial, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[8,4,6,7,5],"class_list":["post-121","post","type-post","status-publish","format-standard","hentry","category-tech-blog","tag-authentication","tag-homematic","tag-nginx","tag-reverse-proxy","tag-synolgoy"],"_links":{"self":[{"href":"https:\/\/ncsemke.de\/index.php?rest_route=\/wp\/v2\/posts\/121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ncsemke.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ncsemke.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ncsemke.de\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ncsemke.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=121"}],"version-history":[{"count":3,"href":"https:\/\/ncsemke.de\/index.php?rest_route=\/wp\/v2\/posts\/121\/revisions"}],"predecessor-version":[{"id":141,"href":"https:\/\/ncsemke.de\/index.php?rest_route=\/wp\/v2\/posts\/121\/revisions\/141"}],"wp:attachment":[{"href":"https:\/\/ncsemke.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ncsemke.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ncsemke.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}