Sudoers schwarze Liste

7

Wir müssen der sudoers-Datei unter Linux nur wenige Benutzer hinzufügen. Sie sollten in der Lage sein, alles zu tun, was Wurzel kann, außer den folgenden:

  • Sollte nicht ändern, lesen, löschen /nfsshare/config
  • Sollte nicht ändern, lesen, löschen /etc/passwd
  • Sollte nichts montieren
  • Das Root-Passwort sollte nicht geändert werden
  • Sollte nicht bearbeitet /etc/sudoersoder ausgeführt werden visudo, um andere Benutzer hinzuzufügen

Ist das möglich?

Sagar
quelle
2
Nein ist es nicht .
user253751

Antworten:

23

Ich stimme Wissam Al-Roujoulah in dieser Hinsicht im Grunde zu.

Wir müssen der sudoers-Datei nur wenige Benutzer hinzufügen

Müssen Sie das wirklich tun? Möglicherweise gibt es andere Möglichkeiten, aclreguläre UNIX-Berechtigungen zu verwenden.

Wie Wissam Al-Roujoulah bereits betont hat, ist der Versuch, bestimmte Befehle auf die "schwarze Liste" zu setzen, in Wirklichkeit eine wirklich schlechte Idee (siehe unten man sudoers, Hervorhebung von mir):

Beachten Sie jedoch, dass die Verwendung eines '!' in Verbindung mit dem eingebauten
 ALL-Alias , damit ein Benutzer nur selten Befehle bis auf wenige ausführen kann
 funktioniert wie vorgesehen

Stattdessen können Sie eine „weiße Liste“ angeben, zB die tatsächlichen Befehle die Benutzer erlaubt laufen. Etwas wie das:

user1 ALL=/sbin/shutdown

Das oben genannte ermöglicht user1das Herunterfahren. Sie können einer durch Kommas getrennten Liste weitere Befehle hinzufügen.

Lesen Sie mehr dazu hier .

maulinglawns
quelle
3
Um zu veranschaulichen, wie sinnlos es ist, bestimmte Befehle zu deaktivieren: Sie können versuchen, zu blockieren shutdown, aber wenn Sie vergessen, ähnliche Funktionen in init/ systemctl(/ reboot) zu blockieren oder dennoch zulassen sudo su -oder sudo shoder sudo script_that_invokes_shutdown.shdurch Auslassen, haben Sie wirklich nichts erreicht.
Rhymoid
6
@ Rhymoid: Vergiss nicht sudo gcc my-evil-file.c; sudo a.out. Schäumen, spülen, wiederholen mit Python, Perl, Ruby, Bash usw.
Kevin
16
Mein aktueller Favorit: Wenn "Befehl" auf der schwarzen Liste steht, fügen sudoSie einfach einen weiteren hinzu und es wird funktionieren : sudo sudo command.
Chris Kuehl
12

Ich denke, das ist fast unmöglich, weil Sie den Benutzer daran hindern müssen, einen Editor zu verwenden, obwohl dies ihn nicht daran hindern würde, einen anderen zu installieren oder die Binärdatei an einen anderen Ort zu verschieben und zu verwenden.

Der Hauptpunkt, zu dem Sie keinen Benutzer hinzufügen sudoersund ihm alle Berechtigungen geben können, außer einigen.

Sie müssen es auf die entgegengesetzte Weise tun.

Wissam Roujoulah
quelle
3

su/ sudoaccess ist opt-in, nicht opt-out. Sobald sie in der Lage sind, eine Wurzelschale zu erhalten, können sie alle anderen Schutzmaßnahmen umgehen, die Sie eingerichtet haben. Wenn sie bestimmte Dinge haben, die ausgeführt werden müssen, und die Verwaltung der sudoersDatei zu kompliziert ist (was wahrscheinlich der beste Ansatz im Allgemeinen ist), sollten Sie kleine Einzweck-Binärdateien schreiben, die das Ding starten, und setuidstattdessen das Flag auf sie setzen.

flauschige
quelle
Schreiben Sie keine benutzerdefinierten Binärdateien, sondern verwenden Sie die Option sudo, um den Benutzer auf einen bestimmten Befehl zu beschränken
Ferrybig
1
Der Grund, warum ich benutzerdefinierte Binärdateien vorgeschlagen habe, ist, dass Sie keine Shell-Skript-Setuid festlegen können und das Verwalten der Berechtigungen in der sudoers-Datei für sich genommen ziemlich gefährlich sein kann. Aber Punkt gut genommen - ich werde die Antwort ändern.
flauschig
0

Haben Sie sich die Verwendung von SELinux angesehen? Welche Distribution verwenden Sie?

Möglicherweise können Sie einen neuen SELinux-Benutzer erstellen und ihm nur die erforderlichen Berechtigungen (Zugriff auf Rollen) erteilen. Tt ist ein Opt-In, daher müssen Sie alles auflisten, was der Benutzer tun muss.

Groß auf
quelle