Spätestens nachdem Ihr die ersten Konfigurationen in Eurer FHEM-Oberfläche vorgenommen habt solltet Ihr euch auch mit dem Thema Sicherheit auseinandersetzen. Es ist nämlich wirklich ärgerlich, wenn Ihr die mühsam zusammengetragenen und fein säuberlich einprogrammierten Funktionen Eures SmartHome-Systems verliert. Sei es durch Datenverlust oder weil andere Personen unberechtigterweise Zugriff auf Euer System erlangt haben.
Gerade der potentielle Zugriff durch unberechtigte Personen sollte dabei nicht vernachlässigt werden. Im Worst Case lässt sich mit diesem Zugriff nämlich mehr Unfug anstellen als nur eine Lampe ein- und auszuschalten.
Wie Ihr eure FHEM-Instanz absichert und gegen Datenverlust schützen könnt, ist im folgenden Artikel erklärt.
Sicherheitshinweise
Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/
Affiliatelinks/Werbelinks
Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂
Voraussetzungen
Bevor ihr mit diesem Artikel startet solltet ihr den RaspberryPi soweit vorbereitet haben, dass dieser über das Netzwerk erreichbar und per SSH Steuerbar ist.
Die folgenden drei Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
RaspberryPi – Einrichten für Nerdiys!
RaspberryPi – Die Erste Konfiguration!
RaspberryPi – Den RaspberryPi über SSH steuern
FHEM – Installation auf dem RaspberryPi
Benötigte Werkzeuge:
-keins-
Benötigte Materialien:
In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.
Ändern der eventuell vorhandenen (Standard-)Zugangspasswörter
Die wichtigste – weil am meisten ausgenutzte – Sicherheitsvorkehrung ist es eventuell vorhandene Standardpasswörter zu ändern. Verwendet Ihr als Host-Hardware für den FHEM-Server zum Beispiel einen RaspberryPi ist es wichtig, dass Ihr dessen Standard-Login-Daten ändert. Die Standard-Login-Daten „pi“ und „raspberry“ sind nämlich jeder halbwegs technikinteressierten Person bekannt. Solltet Ihr also hier gerade Eure RaspberryPi-Login-Daten gelesen haben, ist es höchste Zeit diese zu ändern.
Wie Ihr diese ändert ist im Artikel RaspberryPi – Die Erste Konfiguration! beschrieben.
HTACCESS-Benutzerlogin erstellen
Die nächste Sicherheitsvorkehrung gegen unberechtigten Zugriff auf eure FHEM Oberfläche ist der Zugriffsschutz per HTACCESS. Ist dieser erst mal eingerichtet werdet Ihr bei jedem Zugriffsversuch auf Eure FHEM Instanz aufgefordert die dazugehörigen Logindaten einzugeben.
Um diesen Zugriffscchutz einzurichten müsst Ihr zunächst Eure Benutzername/Passwort-Kombination per base64 kodieren. Dies funktioniert unter Linux mit einem integrierten Befehl. Um damit Eure Kombination aus Benutzername und Passwort zu kodieren nüsst ihr lediglich folgenden Befehl in die Konsole eingeben. Zuvor müsst Ihr natürlich tollerBenutzername durch Euren Benutzernamen und tollesPasswort durch Euer Passwort ersetzen.
echo -n tollerBenutzername:tollesPasswort | base64
Ohne Linux hilft ein Online Base64 Encoder wie www.base64online.com . Gebt dort einfach Eure Kombination aus Benutzername und Passwort nach dem Muster benutzername:passwort ein und klickt auf kodieren(DECODE).
Um den Login mit den eingestellten Login-Daten nun zu aktivieren müsst Ihr folgendes tun.
define allowedWEB allowed
Nun müsst Ihr Eure kopierten Login-Daten mit diesem Modul verknüpfen indem Ihr ein entsprechendes Attribut setzt. Dies geht mit folgendem Befehl.
attr allowedWEB basicAuth dG9sbGVyQmVudXR6ZXJuYW1lOnRvbGxlc1Bhc3N3b3J0
attr allowedWEB validFor WEB,WEBphone,WEBtablet
Das war es auch schon. Startet FHEM nun noch mal neu indem Ihr folgendne Befehl eingebt
shutdown restart
Verbindung mit einem SSL-Zertifikat verschlüsseln
Nachdem Ihr nun den Zugriff auf Eure FHEM Oberfläche abgesichert habt, ist die nächste Sicherheitsvorkehrung dafür zu sorgen, dass Eure Kommunikation mit eben dieser weder abgehört noch manipuliert werden kann. Dazu wird nun eine SSL-Verschlüsselung der Kommunikationsdaten eingerichtet. Dazu muss zuerst ein SSL-Zertifikat erstellt und dann mit FHEM verbunden werden.
sudo apt-get install libio-socket-ssl-perl && sudo apt-get install libwww-perl
cd /opt/fhem
sudo mkdir certs
cd /opt/fhem/certs
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem
sudo chmod 644 /opt/fhem/certs/*.pem
sudo chmod 711 /opt/fhem/certs
attr WEB HTTPS
shutdown restart
Habt Ihr Euren FHEM-Server neu gestartet könnt Ihr fast wie gewohnt auf diesen Zugreifen. Der einzoge Unterschied ist, dass Ihr der Adresse zu Eurem FHEM-Server nun ein HTTPS voranstellen müsst.
Automatisches Backup vor jedem Update einstellen
Gegen die Gefahren durch böse Menschen und Maschinen seid Ihr nun größtenteils gut geschützt. Eine weitere sinnvolle Einstellung sind die automatischen Backups vor jedem update der FHEM-Umgebung. So seid ihr auch im Falle eines fehlerhaften Updates geschützt und müsst nicht die komplette Konfiguration manuell wiederherstellen.
attr global updateInBackground 1
attr global backup_before_update 1
Telnet-Zugang absichern
FHEM bietet unter anderem Die Möglichkeit Befehel per Telnet-Verbindung auszuführen. Diese ist standardmäßig nicht installiert/aktiviert. Solltet Ihr diese jedoch nutzen ist es wichtig, dass Ihr auch hier den Zugriff durch ein Passwort schützt. Dies geht mit folgendem Befehl. Dabei müsst Ihr natürlich noch den Teil tollesPasswort durch das von Euch gewählte Passwort ersetzen. Ggf. müsst Ihr hier auch den Teil „telnetPort“ anpassen. Dies ist der Name Eures konfigurierten Telnet-Moduls und sollte mit dem von Euch genutzten Namen übereinstimmen.
attr telnetPort password tollesPasswort
FHEM Sicherung
Gegen die Gefahren durch böse Menschen und Maschinen seid Ihr nun größtenteils gut geschützt. Nun müsst ihr Euch aber noch gegen den Größten Feind wappnen: Die eigene Duseligkeit. Gerade beim aus- und rumprobieren kann es nämlich schnell passieren, dass Ihr das bis gerade gut funktionierende System falsch konfiguriert. Ein nicht mehr startendes System ist im Fall der Fälle aber schnell wiederhergestellt. Vorausgesetzt ihr habt ein aktuelles Backup am besten noch auf einem externen Datenträger. So könnt Ihr ohne Probleme den letzten funktionierenden Stand zurückspielen.
define regularBackup at *03:00:00 backup
Mit dieser Einstellung wird täglich um 03:00 Uhr ein Backup erstellt und in dem Ordner /opt/fhem/backup abgelegt. Die hier abgelegten Dateien sollten dann natürlich auch mit einem anderen Laufwerk synchronisiert werden. Nur so sind sie im Falle eines Fehlers mit dem Laufwerk oder der SD-Karte auch gesichert.
Weiterführende Informationen
https://de.wikipedia.org/wiki/Base64
https://wiki.fhem.de/wiki/Telnet
Viel Spaß mit dem Projekt
Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂
P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂
Ein Kommentar