Hiermit möchte ich mal mit einigen Argumenten gegen die Verwendung von sudo auf Servern aufräumen, die einem in der Linux-Community manchmal aus allen Richtungen entgegengeflogen kommen.
Grundsätzlich kann man sich bei der einfachsten Konfiguration von sudo als normaler Benutzer mit dem Benutzerpasswort root-Privilegien verschaffen, wenn der Benutzer in der Gruppe sudo
ist. Dadurch kann man dann kontrollierter Aktionen mit root-Privilegien ausführen. Es besteht aber auch die Möglichkeit sudo so zu konfigurieren, dass ein bestimmter Benutzer nur bestimmte Befehle ausführen kann:
sudo ("substitute user do") allows a system administrator to delegate authority to give certain users (or groups of users) the ability to run some (or all) commands as root or another user while providing an audit trail of the commands and their arguments.
Argument: Ich muss dann aber vor jede Anweisung extra sudo schreiben
Der zusätzliche Sicherheitsgewinn durch die dadurch kontrolliertere Ausführung von Anweisungen mit root-Privilegien macht dieses Argument aber wieder zunichte. Außerdem ist es schon immer so gewesen, dass Sicherheit und Komfort sich gegenseitig ausschließen. Man kann sich allerdings auch in der Mitte treffen und so Sicherheit und Komfort miteinander kombinieren. Darüber hinaus zwingt es einen auch automatisch dazu nachzudenken, bevor man eine Anweisung mit sudo
abschickt:
Unlike su, which launches a root shell that allows all further commands root access, sudo instead grants temporary privilege escalation to a single command. By enabling root privileges only when needed, sudo usage reduces the likelihood that a typo or a bug in an invoked command will ruin the system.
Argument: Es ist aber eine Sicherheitslücke wenn ein normaler Benutzer sich zu root machen kann
Wenn man dieses Argument aus dem Kontext gerissen betrachtet, dann ist das vollkommen korrekt. Deshalb gibt man aber auch nur den Benutzern root-Privilegien, die man unter Kontrolle hat. Das kann zum Beispiel ein extra angelegter Benutzer zum kontrollierteren Administrieren der Maschine sein, unter dem dann aber natürlich auch keine Dienste und Anwendungen laufen.
Schlussfolgerung
Die Verwendung eines speziell angelegten Benutzers mit root-Privilegien zu Administrations- und Wartungszwecken ist nicht direkt sicherer oder unsicherer als die Verwendung des nativen root-Benutzers. Wenn ein Angreifer den root-Benutzer kompromittiert hat, kann er natürlich alles machen. Wenn ein Angreifer den sudo-Benutzer kompromittiert hat, kann er auch alles machen. Es besteht also kein Unterschied wenn man mit diesem Benutzer genau so verantwortungsbewusst umgeht wie mit dem echten root-Benutzer. Außer dass man Anweisungen mit einem sudo
kontrollierter mit höheren Privilegien ausführen kann. 😉
Ergänzung von 15:42 Uhr
Hier gibt es noch zwei interessante Videos zum Thema: Das erste Video behandelt die Grundlagen zum Wechseln von Benutzern, während das zweite Video darauf eingeht, wie man sudo so konfiguriert, dass bestimmte Benutzer nur bestimmte Befehle ausführen können. Lohnt sich mal anzuschauen!