Wie ermittle ich die IP-Adresse des Benutzers, der sich bei Root angemeldet hat?

15

Es gibt mehrere Personen mit Root-Zugriff auf eine bestimmte VM, für die ich verantwortlich bin. Ich möchte herausfinden, welche IP-Adresse verwendet wurde, um sich bei root anzumelden.

Matthew Moisen
quelle
1
Sie können auf Protokolle zugreifen, um zu sehen, welche Befehle zuvor ausgeführt wurden: sudo less /root/.bash_historyIch versuche immer noch, dies zu untersuchen, scheint eine wirklich gute Frage zu sein :)
Ryekayo
6
Wenn sich jemand als root anmeldet, kann er so ziemlich alles tun, was er will, um auch benötigte Protokolle zu entfernen ...
Comintern
4
Als Randnotiz sollten Sie die direkte Anmeldung von Root nicht zulassen. Dies ist ein großes Sicherheitsproblem.
Fedorqui

Antworten:

15

Mit dem lastBefehl können Sie diese Informationen abrufen

# last|head
phemmer  ssh          192.168.0.24     Wed Aug 20 21:08 - 21:08  (00:00)
phemmer  pts/13       192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          192.168.0.2      Wed Aug 20 14:00 - 18:43  (04:43)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:08 - 23:08  (00:00)
phemmer  ssh          ::1              Wed Aug 13 23:07 - 23:07  (00:00)
phemmer  pts/15       192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  ssh          192.168.0.20     Thu Aug  7 19:00 - 19:00  (00:00)
phemmer  :0                            Wed Jul 30 20:06   still logged in
reboot   system boot  3.13.2-gentoo    Wed Jul 30 20:05   still running

Wie Sie zweifellos sehen können, wird in der dritten Spalte die Remote-IP-Adresse für den Fall einer SSH-Anmeldung angezeigt.

lastverwendet die /var/log/wtmpDatei, daher ähnelt diese Methode der Antwort von G-Man (nur ein bisschen einfacher, da Sie den Pfad zur Datei nicht angeben müssen).

Patrick
quelle
14

Dies hängt von Ihrer Distribution oder Ihrem Betriebssystem ab. sshdprotokolliert jeden Login irgendwo und fügt dem Login die entsprechende IP-Adresse in einem Format wie dem folgenden hinzu:

Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297

Dieser Teil ist konsistent, aber wie Sie dorthin gelangen, kann variieren. Auf Systemen, die auf basieren systemd, verwenden Sie journalctl:

journalctl /usr/bin/sshd

um alle Protokollnachrichten der sshdausführbaren Datei aufzulisten. Sie können dies nach Root-Anmeldungen oder anderen Kriterien auslesen und mit --sinceund nach Datum einschränken --until(siehe man journalctl).

Alternativ und historisch gesehen werden Nachrichten (normalerweise) irgendwo in angemeldet /var/log. Üblicherweise sshdgehen Nachrichten in /var/log/auth.log, aber die genaue Datei kann erheblich variieren. Welches es ist:

grep sshd /var/log/auth.log

Sie erhalten eine Ausgabe, die der journalctlVersion im Großen und Ganzen entspricht .

Michael Homer
quelle
7

Der Befehl

who /var/log/wtmp

sollte Informationen wie das whozeigen, was zeigt, aber in der Zeit zurückgehen.

G-Man sagt, "Monica wiedereinsetzen"
quelle
Nizza Trick, aber IMO Sie sind besser dran, nur mitlast
Creek
7

Sie sollten nicht zulassen, dass sshBenutzer sich direkt als root anmelden (mit dem root-Kennwort oder einem Zertifikat /root/.ssh/authorized_keys), wenn Sie prüfen möchten, wer sich als root angemeldet hat. Verwenden Sie stattdessen ein Konto für jede Person und lassen Sie sie sudoRoot-Berechtigungen erhalten. Auf diese Weise finden Sie die Nachricht im entsprechenden Protokoll (die Position der Protokolldatei hängt von Ihrer Verteilung ab. Sie können sogar den Protokolldämon so konfigurieren, dass die Nachrichten an einen anderen Computer gesendet werden) user john ran the command 'sudo rm -rf /'. Nun, vielleicht finden Sie diesen einen Befehl nicht so einfach in den Protokollen.

pqnet
quelle
2
Erstens beantwortet dies die Frage nicht. Zweitens sollten Sie immer eine Möglichkeit haben, das System zu retten. Was passiert, wenn Sie die LDAP-Authentifizierung verwenden und Ihr LDAP-Server abstürzt? Wie wirst du dich in die Box einloggen?
Patrick
4
@Patrick Zunächst beginnt die Frage mit "Es gibt mehrere Personen mit Root-Zugriff auf eine bestimmte VM". Daher ist es sinnvoll, darauf hinzuweisen, dass der richtige Ansatz nicht die Überwachung von IP-Adressen, sondern die Überwachung von Benutzern ist. Zweitens hat das von Ihnen angesprochene Problem nichts zu tun: Wenn eine Person in einem LDAP-Notfall auf einen Computer zugreifen soll, sollte sie über ein eigenes lokales Konto verfügen, und wenn sie in einem solchen Notfall Verwaltungsarbeiten ausführen soll, muss das lokale Konto über ein eigenes Konto verfügen sudoLeistung. Es gibt nie einen wirklichen Grund, ein Konto zwischen zwei Personen zu teilen, aber eine Person könnte bei Bedarf zwei Konten haben.
pqnet
Die Frage ist nicht, wie man das Design ändert, sondern wie man eine IP-Adresse erhält. Was Ihre andere Lösung betrifft, haben Sie jetzt ein lokales Konto (möglicherweise mehrere) mit einem Kennwort, das niemals abläuft. Ich würde das nicht als Verbesserung betrachten.
Patrick
@Patrick was auch immer. Sie verwalten Ihren eigenen Server, ich verwalte meinen. Du hast deinen Standpunkt klargestellt, die Leute werden deinen Kommentar lesen und entscheiden.
pqnet
1
@ Patrick Verbesserung gegenüber was? Es ist mit ziemlicher Sicherheit eine Verbesserung, wenn mehrere Benutzer ein einzelnes rootKonto teilen .
JW013
0

Aus der von Ihnen angegebenen Kurzbeschreibung geht hervor, dass es besser ist, ein Protokollüberwachungssystem einzurichten. Es würde Ihnen helfen, die Anmeldungen zu überwachen, Warnungen zu erstellen, die Daten mehrerer Tage zu vergleichen und natürlich Grafiken für all das.

Wenn Sie es jedoch vorübergehend überwachen müssen , können Sie den lastBefehl verwenden.

last | grep root | grep -v tty | awk '{print $3}'

Dadurch erhalten Sie eine Liste der IPsoder Hostnamesvon denen aus sich der Benutzer root angemeldet hat.

Anfänger
quelle