Negative ACLs
Sie können verhindern, dass ein Benutzer auf bestimmte Teile des Dateisystems zugreift, indem Sie Zugriffssteuerungslisten festlegen . So stellen Sie beispielsweise sicher, dass der Benutzer unter folgenden abcd
Bedingungen nicht auf eine Datei zugreifen kann /home
:
setfacl -m user:abcd:0 /home
Dieser Ansatz ist einfach, Sie müssen jedoch daran denken, den Zugriff auf alle Elemente zu blockieren, auf die Sie nicht abcd
zugreifen möchten.
Chroot
Richten Sieabcd
eine Chroot ein , dh beschränken Sie den Benutzer auf einen Teilbaum des Dateisystems, um eine positive Kontrolle über das, was angezeigt wird , zu erhalten.
Sie müssen alle Dateien, die der Benutzer benötigt (z. B. mysql
und alle Abhängigkeiten, wenn der Benutzer ausgeführt werden soll mysql
), unter der Chroot erstellen . Sagen wir, der Weg zur Chroot ist /home/restricted/abcd
; Das mysql
Programm muss unter verfügbar sein /home/restricted/abcd
. Ein symbolischer Link, der außerhalb der Chroot zeigt, ist nicht sinnvoll, da die Suche nach symbolischen Links vom Chroot-Gefängnis betroffen ist. Unter Linux können Sie Bind-Mounts gut nutzen:
mount --rbind /bin /home/restricted/abcd/bin
mount --rbind /dev /home/restricted/abcd/dev
mount --rbind /etc /home/restricted/abcd/dev
mount --rbind /lib /home/restricted/abcd/lib
mount --rbind /proc /home/restricted/abcd/proc
mount --rbind /sbin /home/restricted/abcd/sbin
mount --rbind /sys /home/restricted/abcd/sys
mount --rbind /usr /home/restricted/abcd/usr
Sie können auch Dateien kopieren (aber dann müssen Sie darauf achten, dass sie auf dem neuesten Stand sind).
Fügen Sie eine ChrootDirectory
Direktive zu hinzu, um den Benutzer auf die Chroot zu beschränken /etc/sshd_config
.
Match User abcd
ChrootDirectory /home/restricted/abcd
Sie können es testen mit:
chroot --userspec=abcd /home/restricted/abcd/ /bin/bash
Sicherheitsrahmen
Sie können auch Sicherheitsframeworks wie SELinux oder AppArmor verwenden. In beiden Fällen müssen Sie eine ziemlich heikle Konfiguration schreiben, um sicherzustellen, dass Sie keine Löcher hinterlassen.