Allowed: Unterschied zwischen den Versionen
(Einleitung geändert) |
Krikan (Diskussion | Beiträge) K (→Beispiele) |
||
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{SEITENTITEL:allowed}} <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --> | {{SEITENTITEL:allowed}} <!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --> | ||
{{Infobox Modul | {{Infobox Modul | ||
|ModPurpose=Absicherung des FHEM-Servers | |ModPurpose=Absicherung des FHEM-Servers | ||
|ModType= | |ModType=h | ||
|ModCmdRef=allowed | |ModCmdRef=allowed | ||
|ModForumArea=Automatisierung | |ModForumArea=Automatisierung | ||
Zeile 9: | Zeile 8: | ||
|ModOwner=rudolfkoenig / [http://forum.fhem.de/index.php?action=profile;u=8 rudolfkoenig] | |ModOwner=rudolfkoenig / [http://forum.fhem.de/index.php?action=profile;u=8 rudolfkoenig] | ||
}} | }} | ||
DE | [[Allowed/en|EN]] | |||
[[allowed]] ist ein Erweiterungsmodul um Zugriffe auf | [[allowed]] ist ein Erweiterungsmodul um Zugriffe auf die von fhem.pl bereitgestellten Serverdienste (FHEM-Webserver und FHEM-telnet-Server) abzusichern und zu steuern. | ||
==Einführung== | ==Einführung== | ||
Zeile 23: | Zeile 23: | ||
Ein allowed-Device für ein- oder mehrere FHEMWEB oder telnet-Instanzen wird wie folgt definiert: | Ein allowed-Device für ein- oder mehrere FHEMWEB oder telnet-Instanzen wird wie folgt definiert: | ||
<pre> | |||
define <name> allowed <deviceList> | |||
</pre> | |||
==Weitere Hinweise== | ==Weitere Hinweise== | ||
Sofern FHEM nicht nur aus dem lokalen Netz erreichbar sein soll, sollten neben der Definition einer oder mehrerer allowed-Instanzen zusätzliche Sicherheitsmaßnahmen ergriffen werden. Mögliche Optionen dafür sind die Verwendung eines VPNs (Virtual Private Network) und/oder eines Reverse-Proxy-Servers mit z.B. [[Apache_Authentication_Proxy|Apache]] oder [[HTTPS-Absicherung_%26_Authentifizierung_via_nginx_Webserver|nginx]]. | Sofern FHEM nicht nur aus dem lokalen Netz erreichbar sein soll, sollten neben der Definition einer oder mehrerer allowed-Instanzen zusätzliche Sicherheitsmaßnahmen ergriffen werden. Mögliche Optionen dafür sind die Verwendung eines VPNs (Virtual Private Network) und/oder eines Reverse-Proxy-Servers mit z.B. [[Apache_Authentication_Proxy|Apache]] oder [[HTTPS-Absicherung_%26_Authentifizierung_via_nginx_Webserver|nginx]]. | ||
Es wird dringend empfohlen, für alle Webserver des Typs '''FHEMWEB''' mithilfe des Attributes {{Link2CmdRef|Anker=HTTPS|Lang=de|Label=HTTPS}} eine HTTPS-Verbindung zu aktivieren. Für telnet (welches mehr oder weniger ein TCP/IP Port ist) wird das Attribut {{Link2CmdRef|Anker=SSL|Lang=de|Label=SSL}} verwendet. | |||
<!-- | |||
== Einschränkungen == | == Einschränkungen == | ||
--> | |||
== Beispiele == | == Beispiele == | ||
Festlegen eines Users samt Passwort für gängige FHEMWEB-Instanzen: | Festlegen eines Users samt Passwort für gängige FHEMWEB-Instanzen: | ||
<pre> | |||
define allowedWEB allowed | |||
attr allowedWEB validFor WEB,WEBphone,WEBtablet | |||
attr allowedWEB basicAuth { "$user:$password" eq "admin:secret" } | |||
attr allowedWEB allowedCommands set,get | |||
</pre> | |||
Dasselbe für Telnet: | Dasselbe für Telnet: | ||
<pre> | |||
define allowedTelnet allowed | |||
attr allowedTelnet validFor telnetPort | |||
== | attr allowedTelnet password secret | ||
</pre> | |||
Die <code>set <allowed></code>-Befehle <code>basicAuth <username> <password></code>, <code>password <password></code> und <code>globalpassword <password></code> setzen das entsprechende Attribut, indem sie aus den Parameter(n) und Salt ein SHA256 Hashwert berechnen (Achtung: das Perl-Modul Digest::SHA wird benötigt.). Beim direkten Setzen der Attribute, beispielsweise über <code>attr</code>, erfolgt keine Umsetzung von Attributwerten; die Attribute werden so gespeichert, wie angegeben. | |||
Erweiterung, dass nicht bei jedem Login die Anmeldeinformationen abgefragt werden: | |||
<pre> | |||
attr allowedWEB basicAuthExpiry 90 | |||
</pre> | |||
basicAuthExpiry erwartet einen Wert in Tagen (in diesem Beispiel also 90 Tage). Nach der Anmeldung wird ein Cookie in den Browser des Benutzers gesetzt, der ein erneutes Eingeben der Anmeldedaten obsolet macht. Dies sollte nur in sicheren Umgebungen gemacht werden und lässt sich nur in Kombination mit einem gesetzten basicAuth realisieren. | |||
== Weblinks == | |||
*[https://demaya.de/fhem-eingeloggt-bleiben-basicauthexpiry/ Ausführliche Erklärung zu dem Attribut "basicAuthExpiry"] |
Aktuelle Version vom 7. Mai 2019, 16:03 Uhr
allowed | |
---|---|
Zweck / Funktion | |
Absicherung des FHEM-Servers | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | 96_allowed.pm |
Ersteller | rudolfkoenig / rudolfkoenig |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
DE | EN
allowed ist ein Erweiterungsmodul um Zugriffe auf die von fhem.pl bereitgestellten Serverdienste (FHEM-Webserver und FHEM-telnet-Server) abzusichern und zu steuern.
Einführung
In der Grundkonfiguration kann jeder, der sich in dem selben Netzwerk[1] wie der FHEM-Server befindet, unverschlüsselt und ohne der Eingabe von Benutzerdaten auf FHEM zugreifen. FHEM weist mit einer Sicherheitswarnung auf diesen Umstand hin. Das Definieren einer allowed-Instanz ist eine Möglichkeit, die Installation abzusichern.
Daher ist es erforderlich, eine allowed-Instanz zu definieren, um
- Zugriffe auf FHEM aus anderen Netzwerken zu ermöglichen und/oder
- die Möglichkeiten, auf FHEM zuzugreifen für Teilnehmer desselben Netzwerks einzuschränken oder auszuschließen.
Syntax
Ein allowed-Device für ein- oder mehrere FHEMWEB oder telnet-Instanzen wird wie folgt definiert:
define <name> allowed <deviceList>
Weitere Hinweise
Sofern FHEM nicht nur aus dem lokalen Netz erreichbar sein soll, sollten neben der Definition einer oder mehrerer allowed-Instanzen zusätzliche Sicherheitsmaßnahmen ergriffen werden. Mögliche Optionen dafür sind die Verwendung eines VPNs (Virtual Private Network) und/oder eines Reverse-Proxy-Servers mit z.B. Apache oder nginx. Es wird dringend empfohlen, für alle Webserver des Typs FHEMWEB mithilfe des Attributes HTTPS eine HTTPS-Verbindung zu aktivieren. Für telnet (welches mehr oder weniger ein TCP/IP Port ist) wird das Attribut SSL verwendet.
Beispiele
Festlegen eines Users samt Passwort für gängige FHEMWEB-Instanzen:
define allowedWEB allowed attr allowedWEB validFor WEB,WEBphone,WEBtablet attr allowedWEB basicAuth { "$user:$password" eq "admin:secret" } attr allowedWEB allowedCommands set,get
Dasselbe für Telnet:
define allowedTelnet allowed attr allowedTelnet validFor telnetPort attr allowedTelnet password secret
Die set <allowed>
-Befehle basicAuth <username> <password>
, password <password>
und globalpassword <password>
setzen das entsprechende Attribut, indem sie aus den Parameter(n) und Salt ein SHA256 Hashwert berechnen (Achtung: das Perl-Modul Digest::SHA wird benötigt.). Beim direkten Setzen der Attribute, beispielsweise über attr
, erfolgt keine Umsetzung von Attributwerten; die Attribute werden so gespeichert, wie angegeben.
Erweiterung, dass nicht bei jedem Login die Anmeldeinformationen abgefragt werden:
attr allowedWEB basicAuthExpiry 90
basicAuthExpiry erwartet einen Wert in Tagen (in diesem Beispiel also 90 Tage). Nach der Anmeldung wird ein Cookie in den Browser des Benutzers gesetzt, der ein erneutes Eingeben der Anmeldedaten obsolet macht. Dies sollte nur in sicheren Umgebungen gemacht werden und lässt sich nur in Kombination mit einem gesetzten basicAuth realisieren.
Weblinks
- ↑ Haben z.B. in Ihrem Heimnetzwerk alle angeschlossenen Geräte Adressen aus dem Bereich 192.168.178.x, wäre ein Zugriff von einem Gerät mit der Adresse 192.168.178.3 zulässig, nicht aber von 192.168.179.3