Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

FHEMWEB und allowed: Anleitungen unklar

Begonnen von IPWF, 15 April 2023, 15:43:15

Vorheriges Thema - Nächstes Thema

IPWF

Hallo,

meine FHEM-Installation möchte ich gern mit Benutzername und Passwort absichern und habe dazu Anleitungen in der Commandref, im Wiki, im Forum sowie auch im Internet und in einem Buch gelesen und bin auf widersprüchliche Angaben bezüglich der Vorgehensweise gestoßen.

Oft wird folgende Eingabe empfohlen: z.B.
attr WEB basicAuth <base64-Code>Dann soll automatisch ein allowedWEB-Device erzeugt werden.
Wenn ich dies eingebe, kommt jedoch eine Fehlermeldung.

In der Commandref und im Wiki habe ich zu "allowed" gelesen, dass man das allowedWEB-Device direkt anlegen soll: z.B.
define allowedWEB allowedDa dies funktioniert, gehe ich davon aus, dass es so richtig ist.

FRAGE 1: Ist es richtig, dass basicAuth jetzt grundsätzlich im allowed-Device und nicht mehr im WEB-Device gesetzt wird ?

Eine weitere Frage habe ich zum basicAuth-Wert.
In vielen Anleitungen wird beschrieben, dass man diesen in der Linux-Konole mit
echo -n <benutzername>:<passwort> | base64erzeugen soll.
Laut Commndref und Wiki kann man dann folgendes eingeben:
1.) attr allowed basicAuth <base64-Code>
2.) attr allowed basicAuth SHA256:<SHA256-Code>
3.) attr allowed basicAuth {"$user:$password" eq "fhemuser:secret"}

FRAGE 2: ist die Eingabeform 3.) prinzipiell gleichwertig zu 1.) bzw. 2.), oder wird bei einer Eingabe in dieser Form das Passwort weniger sicher gespeichert ?

Wenn 3.) gleichwertig mit den anderen Eingabeformen ist, würde ich diese bevorzugen, weil man dann nicht noch vorher einen Code erzeugen muß.

Noch eine Anmerkung zu meiner Installation:
Ich habe ein aktuelles FHEM und möchte die Weboberfläche ausschließlich aus meinem eigenen Netz aufrufen, nicht von unterwegs oder so. Deshalb reicht für mich nach meinem Verständnis die Absicherung über basicAuth (und HTTPS).
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04 LTS
Funkschnittstelle EnOcean

rudolfkoenig

Zu Frage #1:
Kurz: ja.
Lang: Die fruehere FHEMWEB und telnet Authentifizierung wurde Ende 2015 bzw. mit FHEM 5.8 in einem separaten Modul (allowed) ausgelagert, und damit ein Framework erstellt, was Authentifizierung und Authorisierung auch fuer andere Module (z.Bsp MQTT2_SERVER) ermoeglicht.
Das FHEMWEB(!) basicAuth Attribut hat danach eine allowed Instanz angelegt (um eine Migration zu unterstuetzen), dieses Feature wurde aber mit FHEM 6.2 entfernt.

Zu Frage #2:
Bei der Variante 1 und 3 kann man Benutzername/Passwort mehr oder weniger einfach rausfinden, wenn(!) man Zugriff auf die FHEM Konfiguration hat, oder die Detailseite der FHEMWEB Instanz anschauen kann. Bei der Variante 2 ist das nicht der Fall. Diese Variante erzeugt man mit "set allowed basicAuth <username> <password>".
Wenn man keinen Zugriff auf die Seite hat (d.h. von "Aussen", man sieht nur das Anmelde-Dialog), sind alle drei Verfahren gleichwertig.
Mit Variante 3 kann man auch weitere Verfahren integrieren, wie z.Bsp. LDAP (aka Active-Directory) oder MFA/TOTP.


IPWF

Danke für die schnelle und ausführliche Antwort.
Damit sind meine Fragen beantwortet.
FHEM auf Hardkernel ODROID-N2+ mit Ubuntu 22.04 LTS
Funkschnittstelle EnOcean

nortron

#3
Moin ich bin neu hier und habe auf dem Raspberry Pi FHEM nach dieser Anleitung installiert und möchte selbstverständlich, bevor ich loslege, die Weboberfläche mit einem Passwort versehen.

Leider sind die Anleitungen unverständlich bzw. so wie ich sie verstehe, funktionieren sie nicht.

rudolfkoenig

Falls beim FHEM Start kein Fehler auftritt, dann erscheint beim FHEMWEB Aufruf (http://fhemhost:8083) das unten angehaengte Bild #1.
Hier klickt man auf das gruene "define allowed allowed".
Diesen Befehl kann man auch in der FHEMWEB Eingabezeile oben eintippen, z.Bsp. weil beim FHEM-Start einen Fehler gab.

Danach landet man auf Bild #2. Hier hakt man WEB an, und klickt auf "attr".
Das soll einem zeigen, dass das einzugebende Befehl "attr allowed validFor WEB" ist (nicht wirklich intuitiv).
Damit wird diese allowed Instanz der WEB FHEMWEB Instanz zugeordnet.

Benutzer/Passwort setzt man mit "set allowed basicAuth meinBenutzer meinPasswort", d.h. man gibt in der "set" Zeile "meinBenutzer meinPasswort" ein, und man klickt auf set.

Zu Schluss "save config" nicht vergessen (oben links).


nortron

Das hat geholfen. Gefehlt hatten bei mir der Klick auf "attr" und "set".

Vielen Dank.  :D