Ich wurde von meinem Chef freiwillig als Systemadministrator für unseren Produktions-Redhat-Server gemeldet. Er bat mich, die Sicherheit zu verschärfen, um rm -f *
solche Pannen zu vermeiden , die vor nicht allzu langer Zeit aufgetreten waren.
Im Moment haben wir 53 Benutzer, die in die Maschine eintauchen, und es ist ein Audit-Albtraum. Ich frage mich, ob es möglich ist, Benutzerzugriff nur an bestimmten Wochentagen zuzulassen.
Kann ich beispielsweise zulassen, dass sich Benutzer 'Joe' NUR dienstags und donnerstags und 'Jane' nur sonntags anmeldet? Kann etc/sudoers
angepasst werden, um dies zu ermöglichen?
Gibt es einen besseren Weg, anstatt Sudoer zu verwenden?
permissions
security
sudo
Chris
quelle
quelle
rm -rf /
.Antworten:
sudo
führt seine Authentifizierung über PAM durch, wie so ziemlich alles andere auf einer Linux-Box.Sie sollten also in der Lage sein, dies
pam_time.so
zu tun.Zumindest unter Debian ist dieses Modul standardmäßig nicht aktiviert. Sie müssen eine Zeile hinzufügen, die folgendermaßen aussieht:
entweder
/etc/pam.d/sudo
um nur für sudo zu aktivieren oder um/etc/pam.d/common-account
(nach dem Block pam-auth-update) für alle Programme auf dem System zu aktivieren.Bearbeiten Sie dann
/etc/security/time.conf
, um Ihre Einschränkungen festzulegen. Der Dienstname sollte seinsudo
. Damit Fredsudo
am Freitag nur zwischen 15 und 17 Uhr arbeiten darf:(HINWEIS: Ich habe dies nicht getestet.)
Bearbeiten: Um klar zu sein, stimme ich der anderen Antwort und den verschiedenen Kommentatoren zu. Sie scheinen zu viele Leute zu haben, die zu viele Befehle als root ausführen, und Sie müssen das wirklich beheben. Und wenn sie root werden können, können sie natürlich die pam-Konfiguration bearbeiten ...
quelle
Ich würde fragen, warum 53 Benutzer sudo benötigen, um ihre tägliche Arbeit zu erledigen - für die meisten Benutzer (sogar Entwickler) sollte sudo eine seltene Ausnahme sein, nicht so routinemäßig, dass jemand beiläufig einen
sudo rm -rf *
Befehl ausführen würde .Können Sie Gruppenberechtigungen (oder sogar erweiterte ACLs) verwenden, um Benutzern Zugriff auf die Dateien zu gewähren, die sie für ihre Arbeit benötigen, möglicherweise mit einigen festgelegten oder sudo'ed-Skripten oder Binärdateien, damit sie beispielsweise Dienste neu starten können? (Beachten Sie, dass es schwierig ist, ein sicheres Setuid / Sudo-Skript zu schreiben, daher ist es mehr, ehrliche Menschen ehrlich zu halten).
Selbst wenn Sie den Sudo-Zugriff auf einen Tag pro Woche beschränken können, sind dies in einer Woche immer noch 53 Personen mit Sudo-Zugriff. Dies hilft also nicht wirklich bei Ihrem Kernproblem.
Im Übrigen würde ich fragen, ob so viele Benutzer überhaupt Zugriff auf einen Produktionsserver benötigen. Können Sie Protokolle oder die benötigten Daten / Dateien an eine Nichtproduktionsmaschine senden?
quelle
vi/cp/mv/rm
. Nurcd
undmore
. Nichts anderes.Am einfachsten wäre es, suders.d (via inludedir) für Ihre Konfiguration zu verwenden. Sie könnten dann Cron-Jobs haben, die die Regeln für jeden Benutzer für die von Ihnen gewünschte Zeit in dieses Verzeichnis stellen könnten.
Die Anweisung #includedir kann in / etc / sudoers verwendet werden, um ein sudo.d-Verzeichnis zu erstellen, in das Sie sudoers-Regeln als Teil Ihrer Regeln ablegen können. Beispiel:
#includedir /etc/sudoers.d
sudo liest jede Datei in /etc/sudoers.d und überspringt Dateinamen, die mit '~' enden oder ein '.' enthalten. Zeichen, 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. Die Verwendung einer konsistenten Anzahl führender Nullen in den Dateinamen kann verwendet werden, um solche Probleme zu vermeiden.
Beachten Sie, dass visudo im Gegensatz zu Dateien, die über #include enthalten sind, die Dateien in einem Verzeichnis #includedir nur bearbeitet, wenn eine davon einen Syntaxfehler enthält. Es ist weiterhin möglich, visudo mit dem Flag ‑f auszuführen, um die Dateien direkt zu bearbeiten.
/etc/sudoers.d/joe ist vorhanden, wenn Sie möchten, dass Joe Zugriff hat, und Sie können die Datei einfach entfernen, um den Zugriff zu entziehen.
quelle
Sie können eine Crontab hinzufügen, um einen Benutzer in eine Sudo-Gruppe aufzunehmen, und dann eine zweite Crontab, um diesen Benutzer herauszunehmen.
quelle