INFO für Linux: stark eingeschränkter SSH-Tunnel
Ursprünglich für Dice erdacht…..aber wer es brauch...
Erstellen eines stark beschränkten SSH-Benutzers nur für SSH-Tunneling
Manchmal ist es nötig SSH-Tunneling zu verwenden, um einen Webservice auf einem bestimmten Port zu erreichen, welcher von einer Firewall oder einem Router blockiert wird.
Natürlich könnt Ihr einfach einen neuen SSH- Benutzer auf Euren Linux-Server einrichten, aber dieser Benutzer kann dann sämtliche Serverbefehle auszuführen und mangels SSH-Rooting alles einsehen, obwohl dies für SSH-Tunneling eigentlich nicht benötigt wird.
Genaugenommen muss der Benutzer sich lediglich ein- und wieder ausloggen können – das reicht! - alles andere machen Eure automatischen Scripte!
Aus diesem Grund möchten wir aus Sicherheitsgründen nicht, dass der Benutzer sonst noch irgendetwas machen kann.
Im Folgenden werde ich zeigen, wie Sie solch einen beschränkten SSH-Benutzer auf einem Linux-Server (getestet auf Debian Linux), nur für die Verwendung von SSH-Tunneling, einrichten können.
Zunächst erstellen wir einen neuen Benutzer (ich nenne ihn nun einfach sshtunnel) mit rbash als Shell:
useradd sshtunnel -m -d /home/sshtunnel -s /bin/rbash
passwd sshtunnel
Die Verwendung von rbash anstatt bash beschränkt den Benutzer bereits, da er insbesondere das Verzeichnis nicht mehr wechseln und auch keine Umgebungsvariablen setzen kann.
Jedoch die meisten Bash-Befehle können vom Benutzer weiterhin ausgeführt werden.
Um ihn davon abzuhalten, verwenden wir einen kleinen Trick:
Wir setzen die Umgebungsvariable PATH für diesen Benutzer auf nichts. Dadurch wird die Bash keine Befehle zum Ausführen mehr finden. Dies kann ganz einfach dadurch erreicht werden, dass am Ende der Datei .profile im Heimatverzeichnis des Benutzers (in unserem Beispiel /home/sshtunnel/) folgende Zeile eingefügt wird:
PATH=""
Da wir sicherstellen wollen, dass der Benutzer das selbst nicht wieder ändern kann, entfernen wir die Schreibrechte von den Benutzer-Einstellungsdateien sowie vom Heimatverzeichnis des Benutzers selbst:
chmod 555 /home/sshtunnel/
cd /home/sshtunnel/
chmod 444 .bash_logout .bashrc .profile
Jetzt sind wir fertig: Wir können den SSH-Tunnel ganz normal beispielsweise mit PuTTY einrichten und sich mit den neu angelegten SSH-Benutzer neinloggen lassen. Diese werden nichts anderes tun können als sich ein- und wieder auszuloggen, aber das SSH-Tunneling wird einwandfrei funktionieren!
Achtung: je nachdem welche Rechte Ihr schon vergeben habt, muß der Admin/ Root jeden neuen User manuell anlegen. Ebenso kann der User sein Paßwort nicht selber ändern…nur der Admin/Root!
Also vorher , wegen der Rechte-Vererbung, ein Standard-User-Profil anlegen, was nur noch kopiert und angepaßt werden muß!
Ursprünglich für Dice erdacht…..aber wer es brauch...
Erstellen eines stark beschränkten SSH-Benutzers nur für SSH-Tunneling
Manchmal ist es nötig SSH-Tunneling zu verwenden, um einen Webservice auf einem bestimmten Port zu erreichen, welcher von einer Firewall oder einem Router blockiert wird.
Natürlich könnt Ihr einfach einen neuen SSH- Benutzer auf Euren Linux-Server einrichten, aber dieser Benutzer kann dann sämtliche Serverbefehle auszuführen und mangels SSH-Rooting alles einsehen, obwohl dies für SSH-Tunneling eigentlich nicht benötigt wird.
Genaugenommen muss der Benutzer sich lediglich ein- und wieder ausloggen können – das reicht! - alles andere machen Eure automatischen Scripte!
Aus diesem Grund möchten wir aus Sicherheitsgründen nicht, dass der Benutzer sonst noch irgendetwas machen kann.
Im Folgenden werde ich zeigen, wie Sie solch einen beschränkten SSH-Benutzer auf einem Linux-Server (getestet auf Debian Linux), nur für die Verwendung von SSH-Tunneling, einrichten können.
Zunächst erstellen wir einen neuen Benutzer (ich nenne ihn nun einfach sshtunnel) mit rbash als Shell:
useradd sshtunnel -m -d /home/sshtunnel -s /bin/rbash
passwd sshtunnel
Die Verwendung von rbash anstatt bash beschränkt den Benutzer bereits, da er insbesondere das Verzeichnis nicht mehr wechseln und auch keine Umgebungsvariablen setzen kann.
Jedoch die meisten Bash-Befehle können vom Benutzer weiterhin ausgeführt werden.
Um ihn davon abzuhalten, verwenden wir einen kleinen Trick:
Wir setzen die Umgebungsvariable PATH für diesen Benutzer auf nichts. Dadurch wird die Bash keine Befehle zum Ausführen mehr finden. Dies kann ganz einfach dadurch erreicht werden, dass am Ende der Datei .profile im Heimatverzeichnis des Benutzers (in unserem Beispiel /home/sshtunnel/) folgende Zeile eingefügt wird:
PATH=""
Da wir sicherstellen wollen, dass der Benutzer das selbst nicht wieder ändern kann, entfernen wir die Schreibrechte von den Benutzer-Einstellungsdateien sowie vom Heimatverzeichnis des Benutzers selbst:
chmod 555 /home/sshtunnel/
cd /home/sshtunnel/
chmod 444 .bash_logout .bashrc .profile
Jetzt sind wir fertig: Wir können den SSH-Tunnel ganz normal beispielsweise mit PuTTY einrichten und sich mit den neu angelegten SSH-Benutzer neinloggen lassen. Diese werden nichts anderes tun können als sich ein- und wieder auszuloggen, aber das SSH-Tunneling wird einwandfrei funktionieren!
Achtung: je nachdem welche Rechte Ihr schon vergeben habt, muß der Admin/ Root jeden neuen User manuell anlegen. Ebenso kann der User sein Paßwort nicht selber ändern…nur der Admin/Root!
Also vorher , wegen der Rechte-Vererbung, ein Standard-User-Profil anlegen, was nur noch kopiert und angepaßt werden muß!
Zuletzt bearbeitet: