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.
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 :)
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).
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 .
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.
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.
sudo less /root/.bash_history
Ich versuche immer noch, dies zu untersuchen, scheint eine wirklich gute Frage zu sein :)Antworten:
Mit dem
last
Befehl können Sie diese Informationen abrufenWie Sie zweifellos sehen können, wird in der dritten Spalte die Remote-IP-Adresse für den Fall einer SSH-Anmeldung angezeigt.
last
verwendet die/var/log/wtmp
Datei, daher ähnelt diese Methode der Antwort von G-Man (nur ein bisschen einfacher, da Sie den Pfad zur Datei nicht angeben müssen).quelle
Dies hängt von Ihrer Distribution oder Ihrem Betriebssystem ab.
sshd
protokolliert jeden Login irgendwo und fügt dem Login die entsprechende IP-Adresse in einem Format wie dem folgenden hinzu:Dieser Teil ist konsistent, aber wie Sie dorthin gelangen, kann variieren. Auf Systemen, die auf basieren
systemd
, verwenden Siejournalctl
:um alle Protokollnachrichten der
sshd
ausführbaren Datei aufzulisten. Sie können dies nach Root-Anmeldungen oder anderen Kriterien auslesen und mit--since
und nach Datum einschränken--until
(sieheman journalctl
).Alternativ und historisch gesehen werden Nachrichten (normalerweise) irgendwo in angemeldet
/var/log
. Üblicherweisesshd
gehen Nachrichten in/var/log/auth.log
, aber die genaue Datei kann erheblich variieren. Welches es ist:Sie erhalten eine Ausgabe, die der
journalctl
Version im Großen und Ganzen entspricht .quelle
Der Befehl
sollte Informationen wie das
who
zeigen, was zeigt, aber in der Zeit zurückgehen.quelle
last
Sie sollten nicht zulassen, dass
ssh
Benutzer 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 siesudo
Root-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.quelle
sudo
Leistung. Es gibt nie einen wirklichen Grund, ein Konto zwischen zwei Personen zu teilen, aber eine Person könnte bei Bedarf zwei Konten haben.root
Konto teilen .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
last
Befehl verwenden.Dadurch erhalten Sie eine Liste der
IPs
oderHostnames
von denen aus sich der Benutzer root angemeldet hat.quelle