Sicherheitseinstellungen im fhem

Begonnen von mathyou, 16 April 2013, 05:25:45

Vorheriges Thema - Nächstes Thema

mathyou

Hallo,
seit der Vers. 5.4 bekomme ich ständig die Meldungen:

SecurityCheck:\ \ WEB,WEBphone,WEBtablet has no basicAuth attribute.\ telnetPort has no password/globalpassword attribute.\ \ Restart fhem for a new check if the problem is fixed,\ or set the global attribute motd to none to supress this message.\

Muß man hier tätig werden, ist die Fritzbox ewtl. so nach außen offen ?

Und wenn man das alles sichern will, gibt es dazu schon eine step for step Anleitung wie man die Punkte korrekt abarbeitet ?
Danke für Euere Hilfe, Gruß mathyou.

jhohn

FHEM auf Synology Diskstation DS413j (DSM4.3), HM LAN Adapter
Steuerung für Nachtspeicheröfen:
Ladung:   HM-WDS10-TH-O, HM-LC-Sw4-DR, Weather-Modul
Gebläse: HM-CC-TC, HM-LC-SW1-FM, HM-Sec-RHS
FHEM auf FritzBox 7390 für Telefon Funktionen

klausdor

Hallo,

dieser Frage kann ich mich als Anfänger nur anschließen.

Da ich nur im Heimnetz aktiv bin, unterstelle ich mal, daß ich hier kein Sicherheitsproblem habe.

Allerdings kann ich mich auch von meinem Android 4.0 Tablet mit der App  andFHEM  nicht auf FHEM aufschalten, obwohl nach dem Logfile alle Ports standardmäßig geöffnet wurden. Muß ich evtl. für die Verbindung zwingend das  auth definieren?

Mit Firefox kann ich vom Tablet auf FHEM, also soweit alles ok.

Was verstehe ich da noch nicht?

Danke!


Grüße
Klaus
-------------------------------
Raspi2 mit V6.1; HMLAN; CUL868; FHT80TF-2; HM-CC-RT-DN und andere HM-Komponenten; 5x DECT200; xTrend9200_enigma2; diverse WLAN-Plugs

kekschen

Für den Webzugriff (mein Beispiel ist auf HTTPS eingestellt!! Wer das nicht möchte/kann lasse das HTTPS bzw SSL Attribut aus):
Zuerst Username und Passwort in eine base64 encodierte Passphrase umwandeln:

Eingabe in eine Unix Shell:
echo -n hiereinusername:heiereinpasswort | base64
ergibt:
aGllcmVpbnVzZXJuYW1lOmhlaWVyZWlucGFzc3dvcnQ=      | BITTE! NICHT DIESEN STRING NEHMEN SONDERN EIGENEN ANHAND DER OBEREN ZEILE ERSTELLEN!!!!

define WEB FHEMWEB 8083 global
attr WEB HTTPS 1
attr WEB basicAuth aGllcmVpbnVzZXJuYW1lOmhlaWVyZWlucGFzc3dvcnQ=
    | BITTE! NICHT DIESEN STRING NEHMEN SONDERN EIGENEN ANHAND DER OBEREN ZEILE ERSTELLEN!!!!
 

Die Einstellungen für WEPphone und WEBtablet sind grundsätzlich identisch

Für Telnet:

define telnetPort telnet 7072 global
attr telnetPort SSL 1
attr telnetPort password hierdaspassworteintragen


Hoffe das ist so verständlich.

Zu der Frage, ob das System ansonsten "offen" ist. Ja ist es, sperrangelweit offen,  um genau zu sein. Wenn Du FHEMWEB bzw telnet GLOBAL eingerichtet hast kann ohne AUTH im schlimmsten Fall grundsätzlich jeder der weiß wonach er sucht Deine Rollos bedienen (Portweiterleitung von Aussen aktiv?). Natürlich kennt normalerweise niemand Deine (meist dynamische) IP und die Ports (wenn geändert). Jeder Forenbetreiber, dessen Seiten Du nutzt kennt Deine IP sobald Du schreibst. Wenn Du von aussen (andfhem) zugreifen möchtest musst Du sinnvollerweise auch eine Authentifizierung nutzen. Wie gesagt, alles andere ist sonst reine Glücksache.

vG

Thorsten

klausdor

Hallo Thorsten,

danke für die Anleitung. Werde ich sicher machen, wenn ich dann von aussen zugreifen werde. Dauert aber noch.

Aber: braucht denn andFHEM auf dem Tablet auch zwingend dieses auth?

Der Check beim Hochfahren sagt mir ja gerade, dass ich ungesichert bin.


 

2013.04.16 20:35:46 1: Including /etc/fhem.cfg
2013.04.16 20:35:49 3: WEB: port 8083 opened
2013.04.16 20:35:49 3: WEBphone: port 8084 opened
2013.04.16 20:35:49 3: WEBtablet: port 8085 opened
2013.04.16 20:35:49 1: WEB: Can't open server port at 8083: Address already in use. Exiting.
2013.04.16 20:35:50 3: telnetPort: port 7072 opened
2013.04.16 20:35:50 3: Opening CUL_0 device /dev/ttyACM0
2013.04.16 20:35:50 3: Setting CUL_0 baudrate to 9600
2013.04.16 20:35:50 3: CUL_0 device opened
2013.04.16 20:35:51 3: CUL_0: Possible commands: BCFiAZEGMRTVWXefmltux
2013.04.16 20:35:51 1: Including /var/log/fhem/fhem.save
2013.04.16 20:35:51 1: usb create starting
2013.04.16 20:35:51 3: Opening CUL device /dev/ttyACM1
2013.04.16 20:35:51 3: Can't open /dev/ttyACM1: Invalid argument
2013.04.16 20:35:51 3: Opening TCM310 device /dev/ttyUSB0
2013.04.16 20:35:51 3: Can't open /dev/ttyUSB0: No such device or address
2013.04.16 20:35:51 3: Opening TCM310 device /dev/ttyUSB1
2013.04.16 20:35:51 3: Can't open /dev/ttyUSB1: No such device or address
2013.04.16 20:35:51 1: usb create end
2013.04.16 20:35:51 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute. Running with root privileges. Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.



Was ich im Heimnetz zu Beginn auch so lassen will. (Es gibt genug zu verstehen... )


Was soll ich tun?

Grüße
Klaus
-------------------------------
Raspi2 mit V6.1; HMLAN; CUL868; FHT80TF-2; HM-CC-RT-DN und andere HM-Komponenten; 5x DECT200; xTrend9200_enigma2; diverse WLAN-Plugs

LuckyDay

Wenn du nur im Heimnetz bleiben willst,
wie ich auch,
kannst du mit
attr global motd none

die Meldung bei start abschalten . steht als Hinweis in der Meldung am Schluß ja auch,
or set the global attribute motd to none to supress this message.


mathyou

Hallo Thorsten
Daß ich dies in die fhem.cfg kopieren muß ist klar:
1.
define WEB FHEMWEB 8083 global
attr WEB basicAuth aGllcmVpbnVzZXJuYW1lOmhlaWVyZWlucGFzc3dvcnQ=

wie ich aber das Passwort erstelle mit Eingabe in eine Unix Shell:(wo, mit was ???) weis ich nicht ?

was oder wo fühge ich das ein: echo -n hiereinusername:heiereinpasswort | base64
damit ich die Kombi <Username:Passwort> erhalte...

2.
wenn ich den Telnet so absicher (in der fhem.cfg), wie muß ich mich dann korrekt einloggen ?

define telnetPort telnet 7072 global
attr telnetPort SSL 1
attr telnetPort password 1234567890


Sicher bin ich damit dann wohl ein Anfänger... Danke für Deine Hilfe,
Gruß, mathyou.


kekschen

Hallo Ihr,

Damit eins klar ist: Nur weil "man fhem nur lokal einsetzt" oder die motd global ausschaltet ist die Standardkonfiguration von aussen erreichbar. Es ist die Aufgabe des Users, sich mittels Router/Server und fhem-Konfiguration vor äusseren Einflüssen zu schützen.

Ob eure Konfiguration angreifbar ist hängt von unterschiedlichen Bedingungen ab. Wenn ihr mittels dydns o.ä. erreichbar seid und ohne auth mittels dyndns oder ansonsten über die router ip auf euer fhem zugreifen könnt, dann kann das im Zweifel jeder andere auch.

Im Telnet wird das pw plain abgefragt. Wenn die ssl option gesetzt ist muss der client das protokoll beherrschen.

Bin jetzt bei der arbeit, melde mich abends ggfs nochmal.

klausdor

@kekschen

>ohne auth mittels dyndns oder ansonsten über die router ip auf euer fhem zugreifen könnt, dann kann das im Zweifel jeder andere auch.

Das habe ich auch so verstanden. Aber die Ports habe ich bei meiner Fritzbox nicht freigegeben. Wie gesagt: später gerne mal, wenn´s läuft. Dann nehem ich aber auch auth etc.

Oder macht da FHEM was an meiner Fritzbox_als_Router vorbei?

Grüße
Klaus
-------------------------------
Raspi2 mit V6.1; HMLAN; CUL868; FHT80TF-2; HM-CC-RT-DN und andere HM-Komponenten; 5x DECT200; xTrend9200_enigma2; diverse WLAN-Plugs

kekschen

Zitat von: klausdor schrieb am Mi, 17 April 2013 09:16@kekschen

Oder macht da FHEM was an meiner Fritzbox_als_Router vorbei?

Gute Frage, ich nutze einen arm server hinter der fb, daher muss ich ports freigeben. Ob die fritz die ports durchschleift kannst du leicht herausfinden indem du die ip der fritz mit fhemweb port anwählst.

Vg thorsten

mathyou

Hallo, meine Frage ist wohl unter gegangen, deshalb hier noch mal, vielleicht kann ja wer helfen...

Daß ich dies in die fhem.cfg kopieren muß ist klar:
1.
define WEB FHEMWEB 8083 global
attr WEB basicAuth aGllcmVpbnVzZXJuYW1lOmhlaWVyZWlucGFzc3dvcnQ=

wie ich aber das Passwort erstelle mit Eingabe in eine Unix Shell:(wo, mit was ???) weis ich nicht ?

was oder wo fühge ich das ein: echo -n hiereinusername:heiereinpasswort | base64
damit ich die Kombi <Username:Passwort> erhalte...

2.
wenn ich den Telnet so absicher (in der fhem.cfg), wie muß ich mich dann korrekt einloggen ? (Komme dann nicht hinein...)

define telnetPort telnet 7072 global
attr telnetPort SSL 1
attr telnetPort password 1234567890


Sicher bin ich damit dann wohl ein Anfänger... Danke für Deine Hilfe,
Gruß, mathyou.

Zrrronggg!

Zitatwie ich aber das Passwort erstelle mit Eingabe in eine Unix Shell:(wo, mit was ???) weis ich nicht ?

was oder wo fühge ich das ein: echo -n hiereinusername:heiereinpasswort | base64
damit ich die Kombi <Username:Passwort> erhalte...

Ist ja nur eine Möglichkeit. Für den Nicht-UNIX-Nerd bieten sich eigentlich eher entsprechende Webseiten an.

http://www.motobit.com/util/base64-decoder-encoder.asp
oder
http://www.base64encode.org/

zum Beispiel.

Accountname:Passwort eingeben, auf CONVERT klicken, Ergebnis bestaunen und kopieren.


FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

jhohn

oder, wenn man das nicht über eine unbekannte Webseite erledigen will, ein Base64 Encoder wie z.B. http://www.heise.de/download/base64-de-encoder-1158399.html
FHEM auf Synology Diskstation DS413j (DSM4.3), HM LAN Adapter
Steuerung für Nachtspeicheröfen:
Ladung:   HM-WDS10-TH-O, HM-LC-Sw4-DR, Weather-Modul
Gebläse: HM-CC-TC, HM-LC-SW1-FM, HM-Sec-RHS
FHEM auf FritzBox 7390 für Telefon Funktionen

mathyou

Danke mal, das werd ich dann alles abarbeiten, so komme ich mal weiter...

ist noch offen:
2.
wenn ich den Telnet so absicher (in der fhem.cfg), wie muß ich mich dann korrekt einloggen ? (Komme dann nicht hinein...)

define telnetPort telnet 7072 global
attr telnetPort SSL 1
attr telnetPort password 1234567890


Kann mir jemand mal hier her schreiben was ich dann im Telnet Fenster eingeben muß daß der Log in klappt, also:
so ähnlich wie: !                telnet 192.168.178.1 7072  und Taste Enter drücken

und nun aber mit Passwort wie oben und SSL 1 Befehl ??? Wie muß da dann der Befehl lauten/ aussehen ???
Danke, Gruß mathyou.


rudolfkoenig

- Benutzername/Passwort kann man nicht nur mit base64 sondern auch mit einem Perl-Ausdruck pruefen. Das  wird auch in http://fhem.de/commandref.html#basicAuth beschrieben, ich finde das fuer Anfaenger einfacher, und man kann im Zweifel das Passwort wenn es vergessen wurde einfacher nachschauen. Nachteil: das Passwort steht im fhem.cfg im Klartext drin. Beispiel:
attr WEB basicAuth { "$user:$password" eq "admin:secret" }

- meiner Ansicht nach ist das Setzen von Passwoertern nur dann notwendig, wenn FHEM in einem Netz sich befindet, was auch von nicht vertrauenswuerdigen Personen verwendet wird. In einem "normalen" Wohnung braucht man entweder physikalischen Zugang zum Ethernet-Kabel oder ein WPA-Passwort, ein weiteres FHEM-Passwort ist also nicht notwendig. Wenn man allerdings vom Internet auf FHEM zugreifen will, oder etwas vorsichtiger ist, dann sollte man ein Passwort verwenden.

- mit Passwort kann man aber auch "unkundige" Heimbewohner (aka. Kinder :) vom verstellen der FHEM Parameter bewahren. Fuer diese Mitglieder kann man ein abgespecktes FHEMWEB Instanz erstellen (siehe hiddengroup/menuentries FHEMWEB Attribute), um nur auf das Notwendige Zugriff zu haben. ACHTUNG: Abspecken mit hiddengroup/menuentries ist nicht "Hackersicher", vorsicht also bei aufgeweckten Kindern :)

- die Passwoerter kann jeder, der einen Zugang zum besagten Netz hat mitlesen, es sei denn, man hat fuer die Ports (telnet/FHEMWEB) SSL eingeschaltet. Dazu reicht es aber nicht, das Attribut HTTPS oder SSL zu setzen, man muss auch einen eigenen Zertifikat generieren, siehe (http://fhem.de/commandref.html#HTTPS), was aber dann auch fuer die telnet/SSL Verbindung genutzt wird.

- wenn man die "telnet" Ports per SSL gesichert hat, dann kann man dafuer nicht mehr die normalen telnet clients verwenden, siehe http://fhem.de/commandref.html#SSL. HTTPS dagegen beherrscht jeder Browser.

- ich habe fuer Zugriff aus dem Internet zwei FHEMWEB Instanzen definiert (eins fuer den Desktop-Browser, eins fuer Telefon), diese mit Benutzer/Passwort/SSL versehen, und etwas unuebliche Ports gewaehlt (um Portscannern vorzubeugen), die ich im Fritzbox freigeschaltet habe. Die anderen Zugaenge, insb. telnet sind ohne Passwort, aber nur aus dem Heimnetz erreichbar.