OpenWrt: SSH- und LuCI-Webzugang absichern
Standardmäßig kann OpenWrt mittels SSH und LuCI über zwei Schnittstellen administriert werden. Mit der Sicherheit dieser Zugänge steht und fällt somit auch die Sicherheit eures Routers. Aus diesem Grund ist es empfehlenswert die Zugänge entsprechend gut abzusichern bzw. "zu härten". Wie ich das konkret bei meinem Router umgesetzt habe, erfahrt ihr in diesem Beitrag.
Sicheres Root-Passwort wählen
Nach der Installation von OpenWrt ist für den Root-Zugang noch kein Passwort hinterlegt. Als erstes sollte also über LuCI im Webbrowser ein Passwort gesetzt werden. Dazu wählt im Menü System - Adminstration
und den Tab Router Passwort
. Vergebt nun ein sicheres Passwort und speichert es per Klick auf Save
.
SSH-Zugang absichern
Von Haus aus lauscht der SSH-Server (Dropbear) von OpenWrt auf allen Interfaces. Außerdem ist es erlaubt sich per Passwort anzumelden. Ratsamer ist es, SSH-Verbindungen nur über ausgewählte Interfaces zu erlauben. In meinem Fall darf ein Benutzer sich nur über das "LAN"-Interface, also nur aus meinem lokalen Heimnetzwerk heraus, per SSH anmelden. Des Weiteren habe ich die Anmeldung per Passwort deaktiviert, so dass Anmeldungen nur via Public-Key-Authentifizierung erlaubt sind.
Per LuCI wählt System - Administration
und den Tab SSH Access
. Hier legt ihr fest, auf welchen Interfaces der SSH-Server auf eingehende Verbindungen lauschen soll und, ob Anmeldungen per Passwort akzeptiert werden.
Habt ihr alles eingestellt, übernehmt die Änderungen per Save & Apply
.
Da nun keine Passwort-Anmeldungen mehr zulässig sind, müsst ihr nun euren SSH-Key hinterlegen. Dazu wechselt zum Tab SSH-Keys
. Hier fügt ihr euren SSH-Key ein und klickt auf Add key
. Ich selbst nutze als SSH-Key meinen GPG-Authentication-Subkey, der sich auf meinem YubiKey befindet.
Anschließend könnt ihr euch nur noch mittels eurem SSH-Key aus eurem "LAN"-Heimnetzwerk per SSH an eurem Router anmelden.
LuCI-Webzugang absichern
Der Webserver, der die LuCI-Webschnittstelle bereitstellt, lauscht "out of the box" auf Port 80 und die Verbindungen erfolgen unverschlüsselt. Eine Möglichket wäre LuCI per HTTPS abzusichern. Hierfür ist die Installation von weiteren Paketen notwendig und es müsste ein eigenes TLS-Zertifikat ausgestellt werden. Da wir mit SSH aber bereits eine verschlüsselte Verbindung zum Router aufbauen können, besteht aber alternativ auch die Möglichkeit die LuCI-HTTP-Daten über SSH zu tunneln. Letztere Variante bevorzuge ich und habe ich bei mir auch so umgesetzt.
Hierfür stellt eine SSH-Verbindung zu eurem Router her und ändert die Datei /etc/config/uhttpd
wie folgt:
Kommentiert also alle bestehenden list
-Einträge aus und fügt die Zeile mit der IP 127.0.0.1:80 hinzu. Hierdurch weisen wir den Webserver an, dass nur noch Verbindungen übers Loopback-Interface (localhost) möglich sind.
Damit die Änderungen wirksam werden, muss der Webserver neugestartet werden:
Es sollt euch nun nicht mehr möglich sein, LuCI über euren Webbrowser aufzurufen. Damit das wieder möglich ist, müssen wir die Daten per SSH tunneln. Dazu verbindet ich euch per SSH wie folgt:
Hierdurch werden alle Anfragen auf eurem lokalen PC/Notebook für localhost:8000 zum Router zu localhost:80 durchgereicht bzw. weitergeleitet.
Wenn ihr nun in eurem Webbrowser die URL http://localhost:8000/
aufruft, solltet ihr wieder Zugang zu LuCI haben.
LuCI standardmäßig deaktivieren - bedarfsweise aktivieren
Ich selbst habe bei mir LuCI bzw. den Webserver standardmäßig deaktiviert und aktiviere es nur bei Bedarf. Zum Deaktivieren sind folgende Befehle auszuführen:
In ~/.profile
habe ich nun zusätzlich folgende Aliasse hinzugefügt:
Bei Bedarf kann ich LuCI nun jederzeit über den Befehl startLuci
starten.
Weiterführende Informationen
Für noch mehr Details zur Absicherung eures OpenWrt-Routers empfehle ich folgende Seiten aus der OpenWrt-Doku:
Fazit
Generell muss man sagen, dass OpenWrt bereits "sicher" (100%-ige Sicherheit gibt es natürlich nicht) von Haus konfiguriert ist. Nichtsdestotrotz ist es ratsam, unter Abwegung bzw. Berücksichtung von Komfort und persönlichen Anwendungsfällen, die Sicherheit des Routers durch verstärkte Absicherung der Administrationszugänge zu erhöhen.