Um Linux abzusichern, sollte man für den Remote-Zugriff immer die SSH-Authentifizierung mittels Public-Key wählen und anschließend nur einem nicht root-Benutzer die Anmeldung per SSH erlauben. Um das ganze noch etwas zu verfeinern, kann man auch noch die Befehle, die der Benutzer für den SSH-Zugriff verwenden darf, einschränken. Dazu wird dem entsprechenden Benutzer die rbash als Shell zugewiesen und anschließend die Path-Variable auf ein separates Verzeichnis umgebogen, in dem anschließend Links auf die zur Verfügung gestellten Befehle erstellt werden.
In der Praxis sieht das ganze so aus:
Um die Suche nach ausführbaren Dateien in der rbash auf ein einziges Verzeichnis zu beschränken, müssen folgende Zeilen am Ende der Datei /etc/profile hinzugefügt werden:
if [ "$SHELL" = /bin/rbash ]; then PATH=/usr/rbin fi
Anschließend dem Benutzer, dem die Anmeldung per SSH erlaubt ist, die rbash als Shell zuweisen
chsh testuser -s /bin/rbash
Nun noch das entsprechende Verzeichnis erstellen und die gewünschten Binaries verlinken (minimal su)
mkdir /usr/rbin ln -s $(which su) /usr/rbin/su
Oder je nach Wünsch noch weitere:
ln -s $(which dircolors) /usr/rbin/dircolors ln -s $(which uptime) /usr/rbin/uptime ln -s $(which sed) /usr/rbin/sed ln -s $(which w) /usr/rbin/w ln -s $(which grep) /usr/rbin/grep ln -s $(which pinky) /usr/rbin/pinky ln -s $(which id) /usr/rbin/id ln -s $(which cut) /usr/rbin/cut ln -s $(which awk) /usr/rbin/awk
Ein Kommentar
Interessant, kannte ich noch nicht. Quasi eine Vorstufe von chrooting.
Kleine Anmerkung von mir: Man sollte (wie auch bei sudo-Berechtigungen) darauf achten, dass man keine Programme freigibt, die einen Shellprozess starten können. Das große Beispiel hierfür wäre sicherlich vi.