Benötigen Sie eine Technik, um Sysadmins dazu zu zwingen, den Grund für den Zugriff auf einen Prod-Server zu protokollieren

17

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.


quelle
6
Sie versuchen, eine technische Lösung für ein Workflow- / Verfahrensproblem zu finden. Meiner Meinung nach ist eine solche Anstrengung zum Scheitern verurteilt, und das eigentliche Workflow- / Verfahrensproblem sollte direkt auf nichttechnischem Wege angegangen werden.
John
11
Danke Kumpel. Ich versuche, Technologie einzusetzen, um eine Verhaltensänderung zu fördern. Ich nehme an, ich könnte sie jedes Mal, wenn sie es vergessen, mit einem Stein zusammenschlagen, aber ich denke, HR bevorzugt den technologischen Ansatz.
8
@John Gehört es nicht zum Zweck der Technologie, Workflows zu implementieren und zu unterstützen?
Michael Martinez
1
Disziplinarmaßnahmen bis einschließlich Kündigung.
Michael Hampton
4
Ja, aber die Frage war nicht "sollten Sie es tun?" Die Frage war: "Schaffst du das?" Eins ist ein Werturteil; Eine technische Frage verdient dieses Forum. Ich bin zuversichtlich, dass ich mein Team leiten kann. Ich könnte den Stein mit großem Erfolg gebrauchen, aber so viel Blut. Ich mag es nett zu sein. Ich habe gute Admins, nur vergessliche. :) Sieht aus wie @ Aaron-Copley der Mann dieses Mal ist. Vielen Dank an alle!

Antworten:

19

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, mithilfe readvon einen Grund vom Benutzer abzurufen und ihn mit einer loggerAnweisung 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:

session required pam_exec.so /usr/local/sbin/getreason

Und / usr / local / sbin / getreason:

#!/bin/bash
read -p "Reason for logging into production: " reason
logger -t $(basename $0) "$PAM_USER logged in with reason: ${reason}"

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 getreasonSkript sollte nach dem Ersetzen $PAM_USERdurch 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.

Aaron Copley
quelle
1
Vielen Dank dafür. Es sieht perfekt aus. Wenn nichts anderes kann ich ein kleines Ding in C schreiben, um die Eingabe zu erfassen. Ich werde dies implementieren und Sie wissen lassen, ob es funktioniert.
1
@BiggyDevOPs: hilfreicher Vorschlag: Wenn Sie eine flache Datei zum Speichern des Protokolls verwenden, legen Sie sie in git oder svn ab, damit Sie eine Historie haben
Michael Martinez
7

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

HBruijn
quelle
0

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 .

gWaldo
quelle
0

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

Labyrinth
quelle
0

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:

# usermod -s /usr/bin/loginScript username

In Ihrem Skript können Sie den Grund des Logins einfach erfassen. Meins ist so:

#!/bin/bash
read -p "Tell me why you logged in:" reason
echo "You told me: $reason" >> /var/log/reasonLogin.log
/bin/bash

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.

william.wd
quelle