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.
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.
Antworten:
Mit dem last
Befehl 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.
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).
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:
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 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
(siehe man journalctl
).
Alternativ und historisch gesehen werden Nachrichten (normalerweise) irgendwo in angemeldet /var/log
. Üblicherweise sshd
gehen 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 journalctl
Version im Großen und Ganzen entspricht .
Der Befehl
who /var/log/wtmp
sollte Informationen wie das who
zeigen, was zeigt, aber in der Zeit zurückgehen.
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 sie sudo
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.
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.
last | grep root | grep -v tty | awk '{print $3}'
Dadurch erhalten Sie eine Liste der IPs
oder Hostnames
von 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 :)