Ich möchte einen Old-School-Shell-Server für ein paar Leute betreiben, dh. Eine, bei der Benutzer SSH-Zugriff erhalten, damit sie Software ausführen können (ihre eigene oder bereitgestellte). Mein Anliegen ist eine angemessene Trennung zwischen den Benutzern.
Ich möchte nicht, dass sie sich gegenseitig Prozesse anzeigen, auf die Dateien des anderen zugreifen (sofern dies nicht ausdrücklich erlaubt ist) usw. Es wäre schön, nicht von jedem Eskalationsfehler bei Berechtigungen gebissen zu werden oder den Server bei jedem kleineren Kernel-Update neu zu starten. Es wäre perfekt, die Option beizubehalten, gemeinsame Dienste (wie Web- und E-Mail-Hosting) mit diesen Sicherheitsmaßnahmen auszuführen.
Früher habe ich grsec verwendet, aber dazu muss man auf einem älteren Kernel bleiben und sich mit dem Aufwand befassen, ihn selbst zu kompilieren. Gibt es eine modernere und Ubuntu-Methode, um die Benutzertrennung auf einem gemeinsam genutzten Server sicherzustellen?
Vielleicht können Sie mit AppArmor etwas in diesem Sinne tun? Oder gibt es ein Repository mit Kerneln, die für gemeinsam genutzte Umgebungen vorkonfiguriert sind? Oder eine Lösung basierend auf Containern? Diese waren in letzter Zeit in Mode.
Antworten:
hidepid
procfs
unter Linux unterstützt jetzt diehidepid
Option. Vonman 5 proc
:Das Mounten
/proc
mithidepid=2
reicht also aus, um die Details der Prozesse anderer Benutzer unter Linux> 3.3 zu verbergen. Ubuntu 12.04 wird standardmäßig mit 3.2 geliefert, Sie können jedoch neuere Kernel installieren. Ubuntu 14.04 und höher erfüllen diese Anforderung problemlos.ACLs
Entfernen Sie als ersten Schritt die
rwx
Berechtigungen für andere aus jedem Basisverzeichnis (und bei Bedarf auch für Gruppen). Ich gehe natürlich davon aus, dass die Ordner, die die Home-Verzeichnisse enthalten, keine Schreibberechtigungen für irgendjemanden außer root haben.Gewähren Sie dann Diensten wie dem Webserver und dem Mailserver mithilfe von ACLs Zugriff auf die entsprechenden Verzeichnisse. Um dem Webserver beispielsweise Zugriff auf die Benutzerhomepages zu gewähren, wird davon ausgegangen, dass
www-data
es sich um den Benutzer handelt und~/public_html
wo sich die Homepage befindet:Fügen Sie in ähnlicher Weise ACLs für die Mailprozesse und die Postfachverzeichnisse hinzu.
ACLs sind standardmäßig unter ext4 aktiviert, zumindest unter Ubuntu 14.04 und höher.
/tmp
undumask
Ein weiteres Problem ist
/tmp
.umask
Stellen Sie das so ein, dass Dateien nicht für Gruppen oder die Welt lesbar sind, sodass die temporären Dateien der Benutzer anderen Benutzern nicht zugänglich sind.Mit diesen drei Einstellungen sollten Benutzer nicht auf die Dateien anderer Benutzer zugreifen oder ihre Prozesse untersuchen können.
quelle
/tmp
ist das Paketlibpam-tmpdir
: Es erstellt für jeden Benutzer ein Root- eigenes , nicht für die Welt lesbares Verzeichnis/tmp/user
und/tmp/user/$UID
für jeden Benutzer im Besitz des Benutzers, nicht für die Welt lesbare, nicht für die Welt durchlaufbare Verzeichnisse log-in) und setzt die Umgebungsvariable so, dassTMP_DIR
sie auf letztere verweist. Die meisten Programme spielen gut und platzieren ihre temporären Dateien,$TMP_DIR
falls festgelegt.