Sudoers für einen Tag pro Woche?

Sudoers für einen Tag pro Woche?

Mein Chef hat mich als Systemadministrator für unseren Redhat-Produktionsserver vorgeschlagen. Er hat mich gebeten, die Sicherheit zu erhöhen, um Pannen wie rm -f *die vor kurzem aufgetretenen zu vermeiden.

Im Moment haben wir 53 Benutzer, die sich per Sudo in die Maschine einloggen, und das ist ein Albtraum für Audits. Ich frage mich, ob es möglich ist, Benutzern den Zugriff nur an bestimmten Wochentagen zu erlauben.

Kann ich beispielsweise festlegen, dass sich der Benutzer „Joe“ NUR dienstags und donnerstags anmelden darf und „Jane“ nur sonntags? Kann dies etc/sudoersangepasst werden, um dies zu ermöglichen?

Gibt es eine bessere Möglichkeit als die Verwendung von Sudoers?

Antwort1

sudoführt seine Authentifizierung über PAM durch, wie so ziemlich alles andere auf einer Linux-Box.

Sie sollten also in der Lage sein, pam_time.sodies zu tun.

Zumindest unter Debian ist dieses Modul standardmäßig nicht aktiviert. Sie müssen eine Zeile hinzufügen, die wie folgt aussieht:

account    requisite  pam_time.so

entweder /etc/pam.d/sudoum es nur für sudo zu aktivieren oder /etc/pam.d/common-account(nach dem Pam-Auth-Update-Block) um es für alle Programme auf dem System zu aktivieren.

Bearbeiten Sie dann die Einstellungen /etc/security/time.conf, um Ihre Einschränkungen festzulegen. Der Dienstname sollte lauten sudo. Um Fred beispielsweise die Nutzung sudonur zwischen 15 und 17 Uhr am Freitag zu gestatten:

sudo;*;fred;Fr1500-1700

(HINWEIS: Ich habe dies nicht getestet.)

bearbeiten:Um es klar zu sagen, ich stimme der anderen Antwort und den verschiedenen Kommentatoren zu. Es scheint, als würden zu viele Leute zu viele Befehle als Root ausführen, und das müssen Sie wirklich ändern. Und wenn sie Root werden können, können sie natürlich die PAM-Konfiguration bearbeiten ...

Antwort2

Ich würde mich fragen, warum 53 Benutzer sudo für ihre tägliche Arbeit benötigen – für die meisten Benutzer (selbst Entwickler) sollte sudo eine seltene Ausnahme sein und nicht so etwas Routinemäßiges, dass jemand mal eben einen sudo rm -rf *Befehl ausführt.

Können Sie Gruppenberechtigungen (oder sogar erweiterte ACLs) verwenden, um Leuten Zugriff auf die Dateien zu geben, die sie für ihre Arbeit brauchen, vielleicht mit einigen Setuid- oder Sudo-Skripten oder Binärdateien, um ihnen Dinge wie den Neustart von Diensten zu ermöglichen? (Beachten Sie, dass es schwierig ist, ein sicheres Setuid-/Sudo-Skript zu schreiben, es geht also eher darum, ehrliche Leute ehrlich zu halten.)

Selbst wenn Sie den Sudo-Zugriff der Leute auf einen Tag pro Woche beschränken können, sind das immer noch 53 Leute mit Sudo-Zugriff in einer Woche. Das hilft also nicht wirklich bei Ihrem Kernproblem.

Aus diesem Grund frage ich mich, ob so viele Benutzer überhaupt Zugriff auf einen Produktionsserver benötigen. Können Sie Protokolle oder andere Daten/Dateien, die sie benötigen, an eine Nicht-Produktionsmaschine senden?

Antwort3

Am einfachsten wäre es, das Verzeichnis sudoers.d (über includedir) für Ihre Konfiguration zu verwenden. Sie könnten dann Cron-Jobs haben, die die Regeln für jeden Benutzer zu den von Ihnen gewünschten Zeiten in dieses Verzeichnis einfügen könnten.

Die Direktive #includedir kann in /etc/sudoers verwendet werden, um ein sudoers.d-Verzeichnis zu erstellen, in das Sie sudoers-Regeln als Teil Ihrer Regeln einfügen können. Beispiel:

#includedir /etc/sudoers.d

sudo liest jede Datei in /etc/sudoers.d und überspringt Dateinamen, die mit „~“ enden oder ein „.“-Zeichen enthalten, um Probleme mit temporären/Sicherungsdateien des Paketmanagers oder Editors zu vermeiden. Dateien werden in sortierter lexikalischer Reihenfolge analysiert. Das heißt, /etc/sudoers.d/01_first wird vor /etc/sudoers.d/10_second analysiert. Beachten Sie, dass /etc/sudoers.d/1_whoops nach /etc/sudoers.d/10_second geladen wird, da die Sortierung lexikalisch und nicht numerisch ist. Um solche Probleme zu vermeiden, können Sie eine konsistente Anzahl führender Nullen in den Dateinamen verwenden.

Beachten Sie, dass visudo im Gegensatz zu über #include eingebundenen Dateien die Dateien in einem #includedir-Verzeichnis nicht bearbeitet, es sei denn, eine davon enthält einen Syntaxfehler. Es ist weiterhin möglich, visudo mit dem Flag -f auszuführen, um die Dateien direkt zu bearbeiten.

/etc/sudoers.d/joe wäre vorhanden, wenn Sie Joe Zugriff gewähren möchten, und Sie könnten die Datei einfach entfernen, um den Zugriff zu entziehen.

Antwort4

Sie könnten eine Crontab hinzufügen, um einen Benutzer in eine Sudo-Gruppe aufzunehmen, und dann eine zweite Crontab, um diesen Benutzer wieder herauszunehmen.

verwandte Informationen