Benutzer können mit „sudo sudo su -“ Root-Rechte erlangen.

Benutzer können mit „sudo sudo su -“ Root-Rechte erlangen.

Ich habe die folgenden Berechtigungen in der Sudoers-Datei erteilt.

Cmnd_Alias      SUROOT=/bin/su "",\
                       /bin/su -,\
                       /bin/su - root,\
                       /bin/su root,\
                       /usr/bin/su "",\
                       /usr/bin/su -,\
                       /usr/bin/su - root,\
                       /usr/bin/su root
kj ALL = (ALL) ALL, !SUROOT

wenn ich versuche, darauf zuzugreifen, sudo su -ist es blockiert

kj@u1804-1:~$ sudo su -
[sudo] password for kj:
Sorry, user kj is not allowed to execute '/bin/su -' as root on u1804-1.

Aber wenn ich versuche, darauf zuzugreifen, sudo sudo su -wird es zugelassen.

kj@u1804-1:~$ sudo sudo su -
[sudo] password for kj:
root@u1804-1:~#

Ich muss den Zugriff auf den Root-Benutzer blockieren. Wie kann ich sudo sudoden Befehl blockieren?

Antwort1

Dies kann man nicht erreichen, indem man einzelne Befehle blockiert. Es gibt Dutzende, wenn nichtHunderte, von Befehlen, die Benutzer verwenden können, um Root zu werden sudo:

sudo -s
sudo -i
sudo bash
sudo env su
sudo /bin/sh
sudo env sudo
sudo busybox sh
sudo unshare
sudo chroot /
sudo systemd-run --shell
sudo nvim -c ":terminal"
sudo perl -e 'exec("bash")'
sudo git -c protocol.ext.allow=always ls-remote ext::"bash -c sh<&2>&2"

Sie könnten die blockierten Befehle umbenennen:

sudo cp -a /sbin/su /sbin/really-not-su && sudo really-not-su

Sie könnten einfach die von Ihnen festgelegten Regeln ändern:

sudo nano /etc/sudoers

Ich hoffe, Sie haben es verstanden: Wenn Sie Leuten Root-Zugriff gewähren,Sie gewähren ihnen Root-Zugriff.Die einzige Möglichkeit ist eine Liste vonerlaubtBefehle und blockieren alles andere – und selbst dann bietet die Hälfte dieser Befehle eine Möglichkeit, vollen Root-Zugriff zu erhalten.

(AppArmor oder SELinux können hier hilfreich sein.)

Antwort2

Ich schlage vielleicht den umgekehrten Ansatz vor: Anstatt einigen Personen unbegrenzte Root-Berechtigungen zu erteilen, sollten Sie ihnen erlauben, einige Befehle ohne sudoAngabe des Passworts auszuführen. Dies würde ihnen erlauben, die erforderlichen Operationen auszuführen, aber nicht mehr.

Die sudoersDatei kann sogar die zulässigen Parameter für die Befehle definieren, auch mit Platzhaltern, um die Einbeziehung von Zeichenfolgen in den Befehl zu ermöglichen.

Dieser Ansatz wird am besten in einer Antwort auf den Unix Stackexchange-Beitrag beschrieben.
So führen Sie einen SSH-Befehl (einen Sudo-Befehl) aus der Ferne ohne Kennwort aus.

Sie können sudo anweisen, das Kennwort für einige Befehle zu überspringen.

zB in/etc/sudoers

archemar  ALL = (www-data) NOPASSWD: /bin/rm -rf /var/www/log/upload.*

dies erlaubt mir,

sudo -u www-data /bin/rm -rf /var/www/log/upload.*

als Archemar ohne Passwort.

Beachten Sie, dass

sudo -u www-data rm -rf /var/www/log/upload.*

funktioniert nicht (es wird nach einem Passwort gefragt), da es rmsich von unterscheidet /bin/rm.

Bearbeiten Sie unbedingt /etc/sudoersmit visudodem Befehl.

Wenn Sie das fortgeschrittene Niveau erreicht haben, möchten Sie vielleicht Ihre eigenen sudoDateien im Format haben /etc/sudoers.d.

verwandte Informationen