Mein Unternehmen verlangt, dass jedes Mal, wenn sich ein Benutzer bei einem Produktionsserver anmeldet, der Grund für die Anmeldung der Person und die Änderungen, die der Benutzer vornehmen möchte, protokolliert werden müssen. Mein Team möchte dies tun, aber es ist leicht zu vergessen. Ich möchte ihnen helfen, sich zu erinnern. Ich dachte über ein Motiv nach, möchte aber etwas Stärkeres.
Mein erster Gedanke war, die Shell des Benutzers in ein Skript zu ändern, das so etwas wie macht
vim /logs/logindate.txt
bash -l
Gibt es eine bessere oder mehr Standardtechnik?
Hinweis: Die Idee ist, dass diese Benutzer Sysadmins sind und den Protokolleintrag vornehmen möchten, ohne das System zu untergraben. Sie vergessen dies nur häufig. Also, wenn sie es ctrl-c können, dann nehmen wir an, dass sie es nicht tun.
Antworten:
Schau dir pam_exec.so an . Sie können ein Skript beim Anmelden in der Sitzungsoberfläche von PAMs Systemauthentifizierung ausführen. Das Skript wird als root ausgeführt, bevor der Benutzer eine Shell erhält, sodass Eingaben möglicherweise nicht mit
read
? Erfasst werden . Sie können jedoch versuchen, mithilferead
von einen Grund vom Benutzer abzurufen und ihn mit einerlogger
Anweisung in syslog zu protokollieren . (Ich habe unten weggelassen, aber Sie können STRG + C abfangen, um zu verhindern, dass jemand ohne Grund beendet wird.) $ PAM_USER wird auf die Person gesetzt, die sich anmeldet, sodass Sie dies in die Logger-Anweisung aufnehmen können.Beispiel:
Am Anfang der Sitzung in /etc/pam.d/system-auth:
Und / usr / local / sbin / getreason:
Entschuldigung, wenn dies nicht perfekt funktioniert. Ich habe es nicht getestet, habe aber kürzlich etwas Ähnliches gemacht. (Eingaben wurden nicht erfasst.)
Bearbeiten: Je mehr ich darüber nachdenke, desto mehr glaube ich nicht, dass es aufgrund der Phase, in der es ausgeführt wird, funktionieren wird. Dasselbe
getreason
Skript sollte nach dem Ersetzen$PAM_USER
durch funktionieren$(logname)
, muss jedoch möglicherweise in ausgeführt werden/etc/profile
. (Zuerst auf interaktive Shell testen.)Ich lasse beide Optionen offen, da Sie zumindest in die richtige Richtung denken sollten, wenn sonst nichts.
quelle
Die Alternative ist eine privilegierte Kontoverwaltungslösung, bei der Administratoren keinen Zugriff auf ihr eigenes Konto erhalten, sondern Administratorkonten von Dritten verwahrt werden und die vorgeschriebenen Verfahren befolgt werden müssen, bevor Administratoren auf Produktionssysteme zugreifen können http: // de. m.wikipedia.org/wiki/Privileged_Identity_Management
quelle
Eine andere Möglichkeit, dies zu erreichen, besteht darin, dass Ihre zentralisierte Protokollierungsfunktion (ich denke, Logstash, aber Sie können dies auch auf andere Weise tun) Ihr auth.log auf Produktionssystemen erstellt und dies in eine App einspeist, in der die Benutzer ihre Rechtfertigungen protokollieren können .
quelle
Bei Kunden, die HP Server Automation * ausführen, wurde dies so implementiert, dass sie sich auf die integrierte Protokollierung des Tools mit einer Kombination von Genehmigungsschritten verlassen (ich war bei mehreren Kunden tätig, bei denen es außer in Dev keine sudo- oder root-Rechte gibt) ).
Genehmigungen können über Remedy und Operations Orchestration oder über die Administratoranmeldung in SA usw. erfolgen.
Das alles wird gesagt, außerhalb des Unternehmens Automatisierung und Management - Tool, @ Aaron Copley ‚s Antwort ist eine ausgezeichnete Wahl.
* Ich bin Senior HPSA, HPOO und ein Berater für HP Automation Suite
quelle
Auf der Suche nach einer Lösung las ich die Antwort von Aaron Copley und dachte: "Was ist, wenn ich die Shell meines Benutzers ändere?"
Ich habe es auf meinem Ubuntu 14.04-Rechner erfolgreich gemacht:
In Ihrem Skript können Sie den Grund des Logins einfach erfassen. Meins ist so:
Eine Sache, die Sie beachten sollten: Das Skript wird nicht als root ausgeführt, daher müssen Sie dem Benutzer möglicherweise einige Berechtigungen erteilen, damit dies funktioniert.
quelle