MagicMirror-Modul MMM-FHEM und Passwortabfrage

Begonnen von musicnrw, 15 Januar 2019, 10:30:14

Vorheriges Thema - Nächstes Thema

musicnrw

Hallo zusammen,
ich habe eine FHEM-Installation auf einem Raspberry laufen, passwort-geschützt.
Nun habe ich parallel dazu einen MagicMirror, auf dem ich über das MMM-FHEM-Modul einige Messwerte von den FHEM-Komponenten (z.B. Temperatursensoren) darstellen möchte.
Problem: Das MMM-FHEM-Modul sieht nicht die Eingabe der FHEM-Benutzername/Passwort-Kombination vor. Ich möchte aber in FHEM nicht auf diese Sicherheit verzichten, d.h. eine Deaktivierung der Passworteingabe scheidet für mich aus.
Ich habe irgendwo einmal gelesen, dass man in der fhem.cfg eine IP-Adresse definieren kann, die sich ohne die Benutzername/Passwort-Kombination anmelden darf, weiß aber nicht mehr wo ich das wiederfinde bzw. wie das zu definieren ist.
Kann mir da jemand helfen?

Besten Dank!
Gruß, Thomas

Beta-User

Allgemein sollte man bei Modulen, die nicht über den offiziellen Kanal verteilt werden, auch dort nachfragen, wo man es jeweils her hat: https://wiki.fhem.de/wiki/Dokumentationsstruktur

Wenn ich das README auf https://github.com/BenRoe/MMM-FHEM richtig verstehe, greift das Modul über FHEMWEB zu. Dann gelten die allgemeinen Spielregeln, dein Stichwort dürfte also "allowed" heißen. Ob du dir damit aber eine Sicherheitslücke reißt, kann ich nicht beantworten (ich vermute ja, jedenfalls, wenn die Kommunikation zwischen dem Mirror und der nodejs-Schnittstelle nicht besonders gesichert ist); damit wären wir wieder bei dem Einleitungssatz: Dort anfragen...

Eventuell bietet der Mirror auch direkt die Option, anders zu kommunizieren, dann wären z.B. RSS oder MQTT Stichworte, die mir dazu einfallen würden.

Gruß,

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

PieBa

Ich weiß nicht, ob Du den Punkt schon gelöst hast, aber evtl. ist es noch für andere relevant. Ich habe es wie von Beta-User beschrieben mit allowed umgesetzt.

Das heißt, ich habe in FHEM extra für den MagicMirror ein FHEMWEB Device mit allowfrom attribut und csrfToken "none" angelegt. Für dieses Device habe ich dann ein allowed device erstellt.

Im MagicMirror gebe ich dann in der config.js im Bereich für das MMM-FHEM unter "host" den für das allowed erstellten "username" und "password" an:

host: 'username:password@host',
port: 'port',
https: false,


Leider habe ich es nicht geschafft, den MMM-FHEM Zugriff über https abzusichern.

MadMax-FHEM

Das ist aber schon ein alter Thread gewesen ;)

Hier gibt es eine Erweiterung bzgl. (zumindest fixem) csrfToken und auch bzgl. Verbindungsabbrüchen: https://github.com/BenRoe/MMM-FHEM/issues/8

Eigentlich sollte https gehen, ist auch so in den Sourcen drin, evtl. etwas bzgl. Zertifikat...

Wenn du auf dem MagicMirror-Rechner einen https-Request auf der Console absetzt, was kommt zurück!?

Also in etwa sowas:


wget https://username:passwort@IP-von-fhem:Port/fhem?cmd=jsonlist2%20NAME=DeviceName&XHR=1


Weil das ist genau der Aufruf, der bei der "Option" https=true laut Code abgesetzt wird/werden sollte...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

PieBa

#4
Hallo MadMax,
vielen Dank für die unglaublich schnelle Antwort, obwohl der Thread so alt ist.
Nach dem wget bekomme ich den folgenden Fehler, der auf Probleme mit dem Zertifikat meines FHEM hinweist:

FEHLER: Dem Zertifikat von »IP-von-fhem« wird nicht vertraut.
FEHLER: Das Zertifikat von »»IP-von-fhem«« hat keinen bekannten Austeller.

MadMax-FHEM

Hattest Glück, lag am Titel und dass ich zufällig drüber gestolpert bin ;)


Tja und das könnte dann eben auch sein warum es (trotz der vorgesehenen Möglichkeit, es gibt ja eine Einstellung für https) mit https nicht geht...

Ich habe ja schon mal etwas im Code "rumgewühlt" und eben die Erweiterung bzgl. csrfToken gepostet und auch eine (unschöne) Änderung bzgl. "disconnect" (siehe Link)...

Weil immer wenn mein fhem neu gestartet wurde (war mein Testsystem mit dem ich das erst mal probiert habe ;)  ), dann musste ich auch den MagicMirror neu starten...

Ich habe da jetzt keine (genaue) Fehlerauswertung eingebaut, sondern nur, dass nach einem Fehler (egal welcher) nicht aus der "Datenabhol-Loop" gesprungen wird bzw. diese komplett beendet wird...

Wie geschrieben ich weiß nicht, ob das der Grund ist (eher eine Vermutung), ich weiß leider auch nicht ob die Stelle an der ich rumgefummelt habe die richtige ist und ob man an der Stelle auch das bzgl. https "fixen" kann/könnte...

Ich weiß auch nicht wie man dem MagicMirror (bzw. der node-js Umgebung!?) "beibringt" dein Zertifikat zu akzeptieren...

Was helfen könnte wäre ein "offizielles" Zertifikat zu nutzen, beispielsweise von letsencrypt, da habe ich aber keine Ahnung.

Ich nutze mein fhem ausschließlich lokal im WLAN und das ist ja bereits verschlüsselt...
...da brauche ich ja nicht noch zusätzlich https... ;)
Bzw. wenn jemand da eingedrungen ist, ist das Nicht-Verwenden von https mein kleinstes Problem ;)

Und da nur ich auf die Seiten zugreife auch kein user/passwort...

Zugriff von "außen" erfolgt (wenn) über vpn...


Allerdings nutze ich eben csrfToken, weil da kann schon mal was passieren (zumindest theoretisch und selbst bei "meiner Art der Nutzung")!
(zumindest die "statische" Variante aber immer noch besser als gar kein Token, meine Meinung)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

PieBa

Vielen Dank!
Mit Deinem Tipp und Deinem Code in Issue 8 habe ich es hinbekommen:
Ich habe auf meinem FHEM ein selbstsigniertes Zertifikat. Der korrekte WEg wäre gewesen, das dem node.js auf dem MagicMirror bekannt zu machen. Das habe ich nicht hinbekommen.

Ich habe in der node_helper.js folgende Zeile in der Funktion getFhemJson vor url: ergänzt:
rejectUnauthorized: false,

Damit werden nun auch Zertifikate von unbekannten Zertifizierungsstellen akzeptiert. Es besteht jetzt das Risiko, dass jemand die Verbindung auf einen eigenen Server umleiten könnte. Damit lebe ich erstmal.

MadMax-FHEM

#7
Bitte gerne!

Noch dazu wo viel Glück dabei war ;)

Hast du auch Probleme mit "Verbindungsabbrüchen" bei fhem-Restart?
Oder läuft fhem auf dem selben "Rechner" und fhem ist immer schnell genug "oben"!?

Ansonsten kannst du ja mal die Sachen von mir anschauen/übernehmen ;)
Und wenn nicht muss ich noch mal schauen warum das bei mir so ist...

Evtl., wenn schon Sicherheit (also https und user/passwort) noch mal über csrfToken nachdenken...

Dann viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

PieBa

Hallo Joachim,
Verbindungsabbrüche habe ich bewusst noch nicht wahrgenommen. Ich werde darauf achten und falls ich welche bemerke, hier berichten.
Mein FHEM und MagicMirror laufen auf zwei unterschiedlichen pis, jeweils 3B+.

Ich habe alle Deine Änderungen übernommen, csrf funktioniert damit einwandfrei. Danke dafür.

Ich wollte Dir vorschlagen, einen Pull Request dafür einzustellen. Das macht allerdings keinen Sinn mehr, da BenRoe geschrieben hat, dass er das Modul mangels Zeit nicht mehr länger pflegen kann. Er sucht einen Nachfolger:
https://github.com/BenRoe/MMM-FHEM/issues/8#issuecomment-547039884
Was hältst Du davon, das Modul zu übernehmen?

MadMax-FHEM

Hi,

ja hab ich mitbekommen, BenRoe hat mich auch "angeschrieben" wegen "Übernahme" bzw. mir eben mitgeteilt, dass es übernommen werden kann...

Allerdings ist die Übernahme "fremder" Module nicht so einfach, dazu verstehe ich es dann doch zu wenig und wenn ich ganz ehrlich bin: mir fehlt die Zeit mich da einzuarbeiten (auch, wenn ich MM-Modulentwicklung immer schon mal anschauen wollte)...
Und wirklich fit bin ich bzgl. Git etc. auch nicht (ja kann man sich auch anschauen und wollte ich auch schon mal ;) aber es ist leider [deutlich] mehr wollen als Zeit vorhanden ;)  )...

Und: aktuell läuft es so wie es jetzt (mit meinen geposteten Änderungen) ja prima (bei mir)

Du könntest ja auch übernehmen ;)

Hast du deine Änderung auf Git "bekannt gegeben"!?
Hilft ja vielleicht anderen die drüber stolpern...
...drum hab ich das ja zumindest mal als "Kommentar" hinterlassen...

Interessant wäre gewesen, ob es bei dir auch zu Verbindungsabbrüchen bzw. ein Neustart von MM notwendig ist, wenn fhem "mal weg" ist/war OHNE meine Änderungen...
...das aber nur interessehalber, ob das nur bei mir ein Problem ist/war oder generell... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)