Ich habe ein SSH-Standardbenutzerkonto auf meinem persönlichen Server und es hat Sudo-Zugriff (über sein Passwort).
Ich verwende einen öffentlichen Schlüssel, damit ich nicht das Kontokennwort eingeben muss, um mich anzumelden. Ist es für mich sicher, diesem Benutzer einen kennwortlosen Sudo-Zugriff zu erlauben, nur die Befehle apt-get update
und apt-get upgrade
(oder apt-get dist-upgrade
) auszuführen? Ich frage aus Sicherheitsgründen, nicht aus Sicht eines "defekten / fehlerhaften Updates". Ich bin der einzige, der sich anmeldet, und wenn ich mit einem Update etwas kaputt mache, kann ich immer sudo (mit einem Passwort), um Dinge zu reparieren.
Der wichtigste Punkt ist, zeitnahe Updates auf meinem Server ausführen zu können, ohne unnötig ein Passwort eingeben zu müssen. Wenn jedoch jemand Zugriff auf dieses Konto erhalten hat, möchte ich nicht, dass er etwas installieren kann, und ich weiß nicht, ob ich mit diesen beiden Befehlen andere Bedenken haben sollte.
Hier ist die genaue Zeile in meiner sudoers
Datei:
stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade
apt-get update
, Updates aus einem gefälschten Repository abzurufen? Sagen wir, mit einer kleinen DNS-Cache-Vergiftung?/dev/urandom
über HTTP bereitzustellen). Signaturen können dies nicht verhindern, da sie erst nach dem Herunterladen einer Datei überprüft werden können.Antworten:
Zulassen, dass ein weniger vertrauenswürdiger Benutzer ausgeführt wird
apt-get update
ist in Ordnung. Das Schlimmste, was sie tun können, ist, viel Bandbreite zu verbrauchen und Speicherplatz zu füllen, und sie haben viele andere Möglichkeiten, dies zu tun, es sei denn, Sie haben strenge Maßnahmen ergriffen, um dies zu verhindern.Wenn Sie einem Benutzer das Ausführen
apt-get upgrade
erlauben, erhalten Sie wahrscheinlich Root-Zugriff. Einige Pakete fragen den Benutzer ab und ermöglichen möglicherweise ein Shell-Escape. Beispielsweise wird der Benutzer, der Zugriff auf das Terminal hat, auf demapt-get upgrade
(oder eindpkg -i
Anruf) ausgeführt wird, möglicherweise gefragt, was zu tun ist, wenn eine Konfigurationsdatei aktualisiert wurde. Eine der Optionen besteht darin, eine Shell auszuführen, um die Situation zu untersuchen.Sie müssen den Befehl noch weiter einschränken:
Dies sollte dem Benutzer keine Möglichkeit geben, root zu werden, da er nicht mit dem Paketmanager interagieren kann. Da Upgrades manchmal ein System beschädigen können und ein Benutzer mit nur diesen Berechtigungen nichts reparieren kann, sollte dies nur mit einer stabilen Version erfolgen, bei der nur Sicherheitsupdates ausstehen. Wenn es sich um ein Kernel-Update handelt, lassen Sie einen Benutzer mit vollem Root-Zugriff entscheiden, wann ein Neustart ausgelöst werden soll.
Übrigens wäre der Benutzer nicht in der Lage, Paketinhalte einzuspeisen. Dazu müsste er die Kontrolle über den Server haben, der das Paket verteilt, und zusätzlich zum Server, der das Paket signiert, wenn das Paket signiert ist ( Dies gilt für alle offiziellen Quellen. Es ist für diesen Angriffsvektor irrelevant, der zum Zeitpunkt des Upgrades das Kommando über die Maschine hat.
All dies gesagt ... verwenden Sie unbeaufsichtigte Upgrades , wenn Sie dies möchten.
quelle
NOEXEC
? Die Ubuntu-Dokumente für Sudoers besagen...you can also use NOEXEC to prevent any programs launching shells themselves (as once a program is running with sudo it has full root privileges so could launch a root shell to circumvent any restrictions in the sudoers file.
- help.ubuntu.com/community/Sudoerssudo apt-get update
und möglicherweise mehr darüber zu erfahrenunattended-upgrades
.