FHEM Forum

FHEM => Automatisierung => Thema gestartet von: cmonty14 am 07 Mai 2019, 09:48:44

Titel: allowed - Welche Konfiguration notwendig für Full Access bei Multi-User Setup?
Beitrag von: cmonty14 am 07 Mai 2019, 09:48:44
Hallo,

ich habe 2 Benutzer angelegt mit
define admin allowed
attr admin validFor WEB
attr admin basicAuth { "$user":"$password" eq "admin":"<secret>" }
attr admin allowedCommands *

define user allowed
attr user validFor WEB
attr user basicAuth { "$user":"$password" eq "fhem":"<secret>" }
attr user allowedCommands get,set


Die Annahme war, dass der Benutzer admin alle Befehle ausführen darf.
Dies ist aber nicht so.

Frage:
Welche Konfiguration ist notwendig, damit admin vollständige Berechtigung bekommt?

THX
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: marvin78 am 07 Mai 2019, 09:50:34
Lass das Attribut allowedCommands einfach weg.
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Otto123 am 07 Mai 2019, 11:30:44
Hi,

ergänzend zu marvins Vorschlag: Ein Blick in die Doku:
ZitatallowedCommands
A comma separated list of commands allowed from the matching frontend (see validFor).
If set to an empty list , (i.e. comma only) then no comands are allowed. If set to get,set, then only a "regular" usage is allowed via set and get, but changing any configuration is forbidden.
Sterne sind da nicht sinnvoll:)

Gruß Otto
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: cmonty14 am 07 Mai 2019, 18:35:30
Ich habe die Konfiguration von allowed modifiziert:
define admin allowed
setuuid admin 5cd07e78-f33f-a13d-ac71-574c44a1641d2db0
attr admin basicAuth SHA256:11E96F3B:BbPXVzVh8FgIxj75ycXrH9u
attr admin room Einstellungen
attr admin validFor WEB
define user allowed
setuuid user 5cd07f09-f33f-a13d-f76c-0d866ce00770e976
attr user allowedCommands get,set
attr user basicAuth SHA256:2D370CFD:ZNY/aAgIcjzeRZvgDHKsSN1
attr user room Einstellungen
attr user validFor WEB

Jetzt erhalte ich diese Fehlermeldung (im Log) beim Versuch, eine Modifikation zu speichern:
2019.05.07 18:31:03 3: Forbidden command save for WEB_192.168.1.28_32324
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Otto123 am 07 Mai 2019, 22:26:40
Als User oder als Admin?
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Frank_Huber am 07 Mai 2019, 22:31:16
Würde sagen falsch angemeldet?
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: cmonty14 am 07 Mai 2019, 23:04:16
Es sieht für mich danach aus, als ob ein Passwort mit Sonderzeichen (: oder %) Probleme bereitet.
Ich verwende einen Passwort-Generator und generiere damit komplexe Passwörter.

Kann ich auch auf CLI ein Passwort generieren und dieses dann in der fhem.cfg als
attr admin basicAuth SHA256:<encoded password>
eintragen?
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: cmonty14 am 08 Mai 2019, 20:27:08
Nun verwende ich diese Konfiguration:
define admin allowed
setuuid admin 5cd1f4f5-f33f-a13d-be39-966d5fa94a1aa599
attr admin basicAuth SHA256:2E4EAF70:pa7j7xgwwyFbmQ/86akoY7K
attr admin room Einstellungen
attr admin validFor WEB


Ich finde diese Meldung im Log nachdem ich mich als admin angemeldet habe:
2019.05.08 20:22:13 3: Forbidden command perl for WEB_192.168.1.28_62396
2019.05.08 20:22:13 1: stacktrace:
2019.05.08 20:22:13 1:     main::allowed_Authorize             called by fhem.pl (3717)
2019.05.08 20:22:13 1:     main::CallFn                        called by fhem.pl (5530)
2019.05.08 20:22:13 1:     main::Authorized                    called by fhem.pl (1101)
2019.05.08 20:22:13 1:     main::AnalyzePerlCommand            called by fhem.pl (1157)
2019.05.08 20:22:13 1:     main::AnalyzeCommand                called by fhem.pl (1086)
2019.05.08 20:22:13 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2667)
2019.05.08 20:22:13 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (897)
2019.05.08 20:22:13 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (567)
2019.05.08 20:22:13 1:     main::FW_Read                       called by fhem.pl (3717)
2019.05.08 20:22:13 1:     main::CallFn                        called by fhem.pl (749)
2019.05.08 20:22:40 3: Forbidden command rereadcfg for WEB_192.168.1.28_62394
2019.05.08 20:22:40 1: stacktrace:
2019.05.08 20:22:40 1:     main::allowed_Authorize             called by fhem.pl (3717)
2019.05.08 20:22:40 1:     main::CallFn                        called by fhem.pl (5530)
2019.05.08 20:22:40 1:     main::Authorized                    called by fhem.pl (1221)
2019.05.08 20:22:40 1:     main::AnalyzeCommand                called by fhem.pl (1086)
2019.05.08 20:22:40 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2667)
2019.05.08 20:22:40 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (940)
2019.05.08 20:22:40 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (567)
2019.05.08 20:22:40 1:     main::FW_Read                       called by fhem.pl (3717)
2019.05.08 20:22:40 1:     main::CallFn                        called by fhem.pl (749)
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Wernieman am 08 Mai 2019, 21:01:31
Du solltest Dein Passwort ändern. Obiges Passwort ist relativ einfach zu encodieren .. und damit weiß das Web Dein Passwort
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: rudolfkoenig am 08 Mai 2019, 23:09:07
ZitatObiges Passwort ist relativ einfach zu encodieren .. und damit weiß das Web Dein Passwort
Ich gehe immer noch davon auss, dass SHA256 sicher ist.
Genau fuer solche "Unfaelle" habe ich es eingebaut.

ZitatIch finde diese Meldung im Log nachdem ich mich als admin angemeldet habe:
Da ich kein alleowedCommand sehe: hast du das Attribut entfernt?
Was war vorher gesetzt?
Kommt das Problem auch nach einem FHEM Neustart?
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: cmonty14 am 09 Mai 2019, 00:28:33
Zitat von: rudolfkoenig am 08 Mai 2019, 23:09:07
Ich gehe immer noch davon auss, dass SHA256 sicher ist.
Genau fuer solche "Unfaelle" habe ich es eingebaut.
Da ich kein alleowedCommand sehe: hast du das Attribut entfernt?
Was war vorher gesetzt?
Kommt das Problem auch nach einem FHEM Neustart?

Das in meinem Posting angegebene Passwort ist gekürzt; aus Sicherheitsbedenken poste ich niemals mein Passwort, weder decoded noch encoded.

Ja, ich habe das Attribut allowedCommands gelöscht, weil hier im Thread dazu instruiert wurde, d.h. wenn ich einen Benutzer mit Full Access haben möchte, dann soll dieses Attribut gelöscht werden.

Kann ich das Passwort mit Sonderzeichen in der CLI encoded generieren; ich habe den Eindruck, dass dies über die WebUI fehlschlägt.
Oder funktioniert dieser Befehl:
set admin basicAuth admin "<passwort_mit_sonderzeichen"

Zusammengefasst gibt es 2 Probleme:
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Wernieman am 09 Mai 2019, 08:27:24
@rudolfkoenig

Bezüglich Passwort:
Stimmt .. das hatte ich jetzt übersehen ... trotzdem sollte man ein Passwort nicht posten .. egal wie ;o)

@cmonty14
Das war nur aus Deinem posting nicht ersichtlich. Ich werde immer eine solche Bemerkung schreiben, wenn ich so etwas sehe ;o)

"Nichts für ungut"
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: rudolfkoenig am 09 Mai 2019, 08:35:14
 
ZitatAnlegen eines Benutzers admin mit Full Access (der alle Befehle ausführen kann)
In der zugeordneten allowed Instanz kein allowedCommands setzen, oder alle Befehle einzeln auffuehren, d.h. alle bekannten FHEM-Befehle + perl und shell
ZitatErstellen eines Passworts mit Sonderzeichen
Meines Wissens gibt es damit keine Probleme, bis jemand mir mit einem Beispiel das Gegenteil beweist.
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Otto123 am 09 Mai 2019, 09:11:37
Zitat von: cmonty14 am 09 Mai 2019, 00:28:33
Oder funktioniert dieser Befehl:
set admin basicAuth admin "<passwort_mit_sonderzeichen"

Zusammengefasst gibt es 2 Probleme:

  • Anlegen eines Benutzers admin mit Full Access (der alle Befehle ausführen kann)
  • Erstellen eines Passworts mit Sonderzeichen
Hi,

ich habe das bei gerade nochmal probiert:
set allowedOTTO basicauth otto *#?§$%&
Die gesamte Raw DEF, ungekürzt und ohne fake. Kann man so direkt verwenden und testen.
defmod allowedOTTO allowed
attr allowedOTTO basicAuth SHA256:1F2DBB3C:y0Wgv9kKNJD8RzhONB9oT6nVMVdClv96Ajr57Nj1QCI
attr allowedOTTO validFor WEBfest
defmod WEBfest FHEMWEB 8089 global
attr WEBfest stylesheetPrefix f18
Der Benutzer otto kann sich anmelden und FHEM normal und komplett bedienen.

Gruß Otto
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: cmonty14 am 09 Mai 2019, 12:21:44
Ich habe die Schritte zum Anlegen der Benutzer nochmals neu gestartet nachdem ich die vorige Konfiguration gelöscht habe.

Hier die genaue Vorgehensweise:

Danach muss beim Aufruf der WebUI eine Authentifizierung mit admin + <password> erfolgen.
Das bedeutet, das (komplexe) Passwort mit Sonderzeichen funktioniert.
Es gibt allerdings 1 Einschränkung: das Passwort darf keinen Doppelpunkt enthalten.

Jetzt lege ich einen weiteren Benutzer wie folgt an:

Unmittelbar nach der Definition des Attributs allowedCommands kann ich die Konfiguration nicht mehr speichern; diese Meldungen werden im Log angezeit:
2019.05.09 11:48:14 3: Forbidden command save for WEB_192.168.1.20_56663                                                          2019.05.09 11:48:14 1: stacktrace:
2019.05.09 11:48:14 1:     main::allowed_Authorize             called by fhem.pl (3717)
2019.05.09 11:48:14 1:     main::CallFn                        called by fhem.pl (5530)
2019.05.09 11:48:14 1:     main::Authorized                    called by fhem.pl (1221)
2019.05.09 11:48:14 1:     main::AnalyzeCommand                called by fhem.pl (1086)
2019.05.09 11:48:14 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2667)
2019.05.09 11:48:14 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (897)
2019.05.09 11:48:14 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (567)
2019.05.09 11:48:14 1:     main::FW_Read                       called by fhem.pl (3717)
2019.05.09 11:48:14 1:     main::CallFn                        called by fhem.pl (749)


Sobald ich das diese Zeile
attr allowed_fhem allowedCommands get,set,help,show
in /opt/fhem/fhem.cfg auskommentiere und den Service fhem restarte funktioniert das Sichern von Änderungen wieder.

Allerdings hat dann der Benutzer fhem volle Berechtigung.
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Otto123 am 09 Mai 2019, 12:30:53
https://commandref.fhem.de/#allowed
ZitatIf set to get,set, then only a "regular" usage is allowed via set and get, but changing any configuration is forbidden.
Works as designed :)
Oder habe ich das Vorgehen falsch verstanden? Ich konnte aus dem letzten Post jetzt irgendwie kein Fehlverhalten erkennen?
Edit:
Ach so: Nach dem ich den Beitrag von Leon gelesen habe: Du warst noch als admin und nicht fhem angemeldet? Oder gar nicht angemeldet?

Säge nie an dem Ast auf dem Du gerade sitzt ...  ;D ;D ;D
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: CoolTux am 09 Mai 2019, 12:32:24
Ich überlege gerade ob es nicht so war das man gar nicht 2 User pro FHEMWEB Instanz anlegen kann. Bzw glaube ich das der kleinste gemeinsame Nenner vom allowed genommen wird.
Sprich wie ich schon mal gaaaaanz zu Anfang schrieb. Pro User eine FHEMWEB Instanz.

Aber Rudi kann da sicherlich was genaueres zu meiner Aussage sagen.
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: Otto123 am 09 Mai 2019, 12:44:07
ZitatIf there are multiple instances defined which are valid for a given frontend device, then all authorizations must succeed. For authentication it is sufficient when one of the instances succeeds. The checks are executed in alphabetical order of the allowed instance names.
Naja auch dazu würde ich sagen, arbeitet richtig.
Erst Instanz admin - kein allowedCommands keine Einschränkung
Zweite Instanz fhem - allowedCommands definiert Einschränkung zieht.

Wenn es jetzt eine gäbe mit xantippe - und allowedCommands wäre nur get,set dann wäre würde nur noch set,get gehen. ?
Titel: Antw:allowed - Welche Konfiguration notwendig für Full Access?
Beitrag von: cmonty14 am 09 Mai 2019, 14:43:45
Zitat von: Otto123 am 09 Mai 2019, 12:30:53
https://commandref.fhem.de/#allowedWorks as designed :)
Oder habe ich das Vorgehen falsch verstanden? Ich konnte aus dem letzten Post jetzt irgendwie kein Fehlverhalten erkennen?
Edit:
Ach so: Nach dem ich den Beitrag von Leon gelesen habe: Du warst noch als admin und nicht fhem angemeldet? Oder gar nicht angemeldet?

Säge nie an dem Ast auf dem Du gerade sitzt ...  ;D ;D ;D

Ich bin/war als Benutzer "admin" angemeldet wenn ich einen zusätzlichen Benutzer anlege.

Wenn ich dann mit dieser Konfiguration
define allowed_admin allowed
setuuid allowed_admin 5cd3f57f-f33f-a13d-390e-e2cc8a57d61af39e
attr allowed_admin basicAuth SHA256:3320BBAD:pTdk671h9X9jnsT2RPNgWs/
attr allowed_admin room Einstellungen
attr allowed_admin validFor WEB
define allowed_fhem allowed
setuuid allowed_fhem 5cd3f5ef-f33f-a13d-5202-0a0238a922c3fede
attr allowed_fhem basicAuth SHA256:1B234E52:4zrRV2aPtaTiLY1thKBMt6o
attr allowed_fhem room Einstellungen
attr allowed_fhem validFor WEB,WEBphone,WEBtablet
attr allowed_fhem allowedCommands get,set,help,show

fhem starte habe ich keine Berechtigung als Benutzer admin.

Das entspräche dann der Aussage, die Berechtigungen werden in alphabetischer Reihenfolge vergeben, d.h. allowed_fhem überschreibt die Berechtigung "Full access" von allowed_admin.
Diese Logik ist aus meiner Sicht aber seltsam, denn es stellt sich die Frage, warum die Berechtigungen nicht per User gesetzt werden sondern per Instanz? Und diese Logik muss dann dazu führen, dass pro Instanz niemals mehr als 1 Benutzer angelegt werden sollte, weil ja jeder zusätzliche Benutzer die Berechtigungen "überschreibt" wenn er alphabetisch nachrangig ist.