Hallo alle,
hatte es schon im NAS-Unterforum versucht (http://forum.fhem.de/index.php?topic=11513.0), aber leider keine Antwort bekommen.
Ist es erforderlich, dass FHEM unter root läuft? Was spricht dafür, was dagegen?
"Gefühlt" scheint es mir ein potentielles Sicherheitsproblem damit zu geben. Gibt es Argumente, die das entkräften können?
Was wäre im Einzelnen zu tun, um FHEM unter einem anderen Benutzer (hier: Synology-Benutzer) zu starten?
Wie macht Ihr das, lasst Ihr FHEM alle unter root laufen?
Hallo,
Fhem als root auszuführen hat in sofern den Vorteil, dass man lokale FritzBox spezifische Funktionen aufrufen kann. Zum Beispiel WLAN ein- und ausschalten.
Klar was die Sicherheit angeht ist es wie mit allem anderen auch. Root darf alles. Aber das root Passwort muss man auch erst mal haben. Dementsprechend sollte dies sicher und vor allem lang sein. Nachteil ist, root darf eben alles ;-)
Wie du Fhem unter root startest hast du sicher bereits im Wiki entdeckt, dazu musst du in der startfhem entsprechend die Zeilen löschen oder wie ich auskommentieren:
## START:fhem-user
#id fhem > /dev/null 2>&1
#if test "$?" -ne "0"; then
# grep -q 1099 /etc/passwd;
# if test $? -eq "0"; then
# echo "fhem:any:1099:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
# else
# echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
# fi
# chown -R fhem FHEM docs log www
# chown fhem . *
# chown root dfu-programmer
# chmod u+s dfu-programmer
#fi
## END:fhem-user
Um einen abweichenden Benutzer zu nutzen, müssen diese Zeilen und die Verzeichnisrechte sicher angepasst werden. Wie das im Detail aussieht kann ich aber leider nicht sagen. Aber rein von der Übersetzung her sowas wie:
## START:fhem-user
id fhem > /dev/null 2>&1
if test "$?" -ne "0"; then
grep -q BENUTZERID /etc/passwd;
if test $? -eq "0"; then
echo "fhem:any:BENUTZERID:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
else
echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
fi
chown -R Bentzername FHEM docs log www
chown Benutzername . *
chown root dfu-programmer
chmod u+s dfu-programmer
fi
# END:fhem-user
Mit chown änderst du ja den Benutzer, insofern sollten es die rot markierten Zeilen sein. Ob das aber die richtige Lösung ist, nehme ich hier nur an! Also lieber auf Feedback von Anderen warten.
Gruß
Vielen Dank. Da habe ich also zumindest schon mal eine Antwort.
Allerdings zielte meine Frage auf FHEM in einem Synology-NAS-Kontext. Dort läuft FHEM nach der Installation der Pakete von M. Fischer unter root (das Startskript ist auch etwas anders als auf der FB). Und ich habe mich gefragt, welche potentiellen Sicherheitsprobleme das mit sich bringt.
Du schreibst ja:
ZitatRoot darf alles. Aber das root Passwort muss man auch erst mal haben
Und hier scheint mir ein potentielles Problem zu liegen. Denn wenn FHEM von außen erreichbar ist, muss man "nur" das FHEM-Passwort kennen (oder sich in FHEM reinhacken), um alles tun zu können, was FHEM kann. Und wenn FHEM unter root läuft, kann FHEM alles.
Nichts gegen FHEM, aber möglicherweise ist es für einen nicht gutwillig gestimmten Zeitgenossen leichter zu knacken als z.B. ein SSH-Kommandozeilenzugang oder ein "professioneller" Webserver.
Oder übersehe ich da was?
Hallo,
ZitatUnd hier scheint mir ein potentielles Problem zu liegen. Denn wenn FHEM von außen erreichbar ist, muss man "nur" das FHEM-Passwort kennen (oder sich in FHEM reinhacken), um alles tun zu können, was FHEM kann. Und wenn FHEM unter root läuft, kann FHEM alles.
Das ist in soweit richtig. Wobei ich dann das Risiko bzw. das Sicherheits-Leck bei der Freigabe der Ports sehe. Bei mir ist zum Beispiel nur der SSH Port nach außen offen. Ansonsten erreiche ich mein internes Netz und auch Fhem via VPN.
Okay, dass das Startskript auf dem NAS abweichend ist, wusste ich nicht. Aber inhaltlich dürfte es identisch bzw. ähnlich sein.
Gruß
Mit root-Rechten sollten grundsätzlich nur Dienste laufen, die diese auch wirklich benötigen. FHEM gehört in meinen Augen nicht dazu ;-) und auch sonst fallen mir nicht viele ein.
Grundsätzlich müssten TCP/UDP-Ports kleiner 1024 von root geöffnet werden, andere (darüber liegende) darf jeder User öffnen. Selbst Webserver wie Apache starten als root, öffnen Port 80 und ggf. 443, "forken" dann und laufen beispielsweise als Benutzer www-data oder apache weiter.
Wenn ein Dienst unbedingt auf Hardware oder Dateibereiche zugreifen soll, an die ein normaler Benutzer nicht herankommt, regelt man das über Rechte. Selbst für Soundausgaben auf einem Linux-Client muss der Benutzer der Gruppe "audio" angehören, dann funktioniert auch der Zugriff auf /dev/audio.
Es gibt auf FritzBoxen glaube ich irgendwelche Probleme als nicht-root-User, ich gehe aber davon aus, dass man dies auch über Gruppen-Rechte abarbeiten kann - wenn sich dies auf der Fritzbox anpassen lässt. Du solltest auf einem normalen Linux-System (dazu zähle ich auch dein NAS) aber kein Problem haben, Rechte entsprechend anzupassen.