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

    1 Kommentar

    1. 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.

    Leave A Reply