Ich bin der Hauptsystemadministrator eines Systems. Im System gibt es 3 Sudoer-Benutzer mit Root-Rechten.
Das System führt im Hintergrund ein Skript aus, das den Hash der Systemdienstprogramme überprüft, um mögliche böswillige Änderungen zu erkennen. Heute wurde ich benachrichtigt, dass sich der ssh
Hash des Dienstprogramms geändert hat.
Bisher gab es keine Updates, und ich denke, einer der Sudoer ist dafür verantwortlich. Ist es möglich zu erkennen, welcher Sudoer das ssh
Dienstprogramm geändert hat ?
~/.bash_history
Dateien dieser Benutzer? Wenn sie Gehirnzellen haben, haben sie diese Spur entfernt, aber Sie können immer überprüfen.Antworten:
Ich werde eine Antwort mit Blick auf RHEL schreiben, aber ich weiß nur, dass es Analoga für das geben wird, was ich beschreibe, wenn Sie in einer SuSE- oder Debian-basierten Distribution arbeiten.
Wenn Sie nur überprüfen möchten, ob es sich um ein Systemupdate handelt und nicht um jemanden, der versucht, den Computer zu rooten, können Sie das
openssh-clients
Paket zunächst wie folgt "überprüfen" :Ich habe es auch getan,
openssh-server
damit Sie sehen können, wie es aussieht, wenn sich etwas ändert. Der wichtige Teil ist die "5", die uns sagt, dass sich die md5sum der Datei von der in der RPM-Datenbank vorhandenen unterscheidet. Wenn das auscheckt, lag es wahrscheinlich an einem Systemupdate.Wenn sie yum verwendet haben (sehr wahrscheinlich), wird ein /var/log/yum.log-Eintrag für dieses RPM aktualisiert. Dies ist nützlich, um die genaue Zeit abzurufen, zu der das Update für eine spätere Überprüfung durchgeführt wurde
yum history
.Wenn sie
rpm
direkt verwendet werden, können Sie entweder etwasqueryformat
zaubern oderrpm -q openssh-clients --last
das Datum ermitteln, an dem es passiert ist (obwohl es so klingt, als ob Sie diese Informationen bereits kennen).Es gibt einen
yum
Unterbefehl namenshistory
, der die auid / loginuid des aufrufenden Benutzers aufzeichnet:Die Loginuid ist nicht fälschbar, da Kinder von init, wenn sie ausgegliedert werden, mit einer Loginuid von -1 (negative) beginnen. Wenn Sie sich über eine tty oder
sshd
pam_loginuid anmelden (es gibt andere Module, die dies ebenfalls tun), wird diese auf die UID des authentifizierten Benutzers gesetzt. Einmal auf etwas anderes als-1
root gesetzt, kann dieser Wert nicht geändert werden (allerdings nur in neueren Kerneln), da er nicht funktionsfähig / nur buchhalterisch ist und berücksichtigen muss, dass ein Angreifer möglicherweise root gewonnen hat. Alle Kinder erben die Loginuid des Elternteils. Obwohlsudo
ein Programm mit der EUID Null (oder welcher Benutzer auch immer) erstellt wird, haben Sie immer noch dieselbe Loginuid.Sie können dies testen, indem Sie einfach Ihren Anteil an sudos tun und dies
cat /proc/self/loginuid
jedes Mal tun , wenn der Benutzer, bei dem Sie sich ursprünglich angemeldet haben, unabhängig davon, wie vielesu
odersudo
Aufrufe Sie seitdem durchgeführt haben. Soyum history
weißjadavis6
es dort obenyum update
, obwohl ich sie alle als Root-Benutzer gemacht habe.Wenn zwischen zwei Yum-Transaktionen Unklarheiten bestehen, können Sie eine
yum history info <transID>
ähnliche Aktion ausführen, wenn ich mehr über diese letzte Transaktion erfahren möchte:Ich habe es abgeschnitten, weil es so aussieht, als wäre dies ein ziemlich langwieriges Systemupdate.
AFAIK gibt es keine Möglichkeit, es zurückzuverfolgen, wenn sie über
rpm
direkt außerhalb der Konfiguration aktualisiert wurdenauditd
, um Änderungen an den RPM-Datenbankdateien zu überwachen. Wenn Sie dies tunausearch
, können Sie eine Liste der PIDs anzeigen, die Änderungen vorgenommen haben, sowie die zugehörige Loginuid (die als angezeigt wirdauid
).Wenn sie es direkt außerhalb von RPM geändert haben, müssen Sie jede der Dateien, die Sie überwachen möchten, auf Änderungen überwachen, bevor die Änderung vorgenommen wird. Im Nachhinein können Sie nicht viel tun, aber Sie könnten überlegen, etwas
auditd
zu tun , um Dateien zu überwachen, die Sie als Rootkit-Ziele betrachten. Zu viel zu tun kann das System blockieren. Erwähnenswert ist auch, dass Sie diese Protokolle außerhalb des Servers versenden sollten, um böswillige Manipulationen zu verhindern.Ich hoffe, das hilft.
BEARBEITEN:
Eine Sache zu beachten, es sieht so aus, als ob root die Loginuid ändern kann , wenn dies der Fall ist
CAP_SYS_AUDITCONTROL
(nicht erforderlich, wenn die Loginuid aktuell ist-1
), aber Sie sollten in der Lage sein, diese Funktion aus dem Begrenzungssatz des Systems zu entfernen, wodurch der Angreifer das System neu starten müsste Erhalten Sie diese Fähigkeit, die eine verdammt laute Operation ist, bei der überall überprüfbare Ereignisse zurückbleiben, sodass es unwahrscheinlich ist, dass sie dies tun.quelle
Wenn Sie sich die
/var/log/audit/audit.log
Datei ansehen , sollten Sie in der Lage sein, die Uhrzeit und das Datumssh
anzugeben , an dem die Datei geändert wurde, als sich einer der drei Benutzer mit Sudoers-Berechtigungen angemeldet hat.Die
audit.log
Datei enthält folgende Zeilen:Sie können die AUID (Affective User ID - auch bekannt als der Benutzer, der den
sudo
Befehl ausgeführt hat) zurückverfolgen .AUID 500 ist also dieser Typ auf meinem System:
Jetzt
audit.log
kann das gepackt werden, aber es ist viel einfacher, das Toolausearch
zum Durchsuchen zu verwenden . Zum einen wird der Zeitstempel des Überwachungsprotokolls in einer besser lesbaren Form gedruckt:Hier suche ich in der Protokolldatei nach Übereinstimmungen, die die ausführbare Datei sudo (
-x /usr/bin/sudo
) enthalten.quelle
Hast du nachgesehen
syslog
? Lautman sudo
: sudo kann sowohl erfolgreiche als auch erfolglose Versuche (sowie Fehler) in syslog (3), einer Protokolldatei oder beiden protokollieren. Standardmäßig protokolliert sudo über syslog (3), dies kann jedoch zum Zeitpunkt der Konfiguration oder über die sudoers-Datei geändert werden.Ich würde denken, wenn sie die Protokolldatei nicht absichtlich gelöscht haben, sollten Sie in der Lage sein, die Informationen dort zu erhalten. Um den Zeitrahmen einzugrenzen, können Sie den geänderten Datumsstempel auf dem SSH-Dienstprogramm überprüfen.
quelle