Istnieje kilka osób z dostępem root do konkretnej maszyny wirtualnej, którą zarządzam. Chciałbym dowiedzieć się, którego adresu IP użyto do zalogowania się do konta root.
Istnieje kilka osób z dostępem root do konkretnej maszyny wirtualnej, którą zarządzam. Chciałbym dowiedzieć się, którego adresu IP użyto do zalogowania się do konta root.
Odpowiedzi:
Możesz użyć lastpolecenia, aby uzyskać te informacje
# 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
Jak niewątpliwie widać, trzecia kolumna pokaże zdalny adres IP w przypadku logowania SSH.
lastużywa /var/log/wtmppliku, więc ta metoda jest podobna do odpowiedzi G-Mana (nieco prostsze, ponieważ nie musisz określać ścieżki do pliku).
To zależy od twojej dystrybucji lub systemu operacyjnego. sshdloguje gdzieś każde logowanie i dołącza odpowiedni adres IP do logowania w formacie takim jak ten:
Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297
Ta część jest spójna, ale sposób jej dotarcia może się różnić. W systemach opartych na systemdużyj journalctl:
journalctl /usr/bin/sshd
aby wyświetlić listę wszystkich komunikatów dziennika z sshdpliku wykonywalnego. Możesz to zmienić dla logowania użytkownika root lub innych kryteriów i ograniczyć je według daty za pomocą --sincei --until(patrz man journalctl).
Alternatywnie i historycznie wiadomości będą logowane (zwykle) gdzieś /var/log. Zwykle pojawiają się sshdwiadomości /var/log/auth.log, ale dokładny plik może się znacznie różnić. Cokolwiek to jest:
grep sshd /var/log/auth.log
da ci zasadniczo równoważne wyjście do journalctlwersji.
Komenda
who /var/log/wtmp
powinien pokazywać informacje podobne do tego who, co pokazuje, ale cofać się w czasie.
last
Nie należy zezwalać na korzystanie sshprzez użytkowników, logując się bezpośrednio jako root (używając hasła roota lub certyfikatu w /root/.ssh/authorized_keys), jeśli chcesz kontrolować, kto zalogował się jako root. Zamiast tego użyj jednego konta dla każdej osoby i pozwól jej użyć, sudoaby uzyskać uprawnienia roota. W ten sposób znajdziesz w odpowiednim dzienniku (pozycja pliku dziennika zależy od posiadanej dystrybucji, możesz nawet skonfigurować demona dziennika, aby wysyłał wiadomości do innego komputera) user john ran the command 'sudo rm -rf /'. Cóż, może jednak nie znajdziesz łatwo tego jednego polecenia w logach.
sudomoc. Nigdy nie ma prawdziwego powodu do dzielenia konta między dwiema osobami, ale w razie potrzeby dana osoba może mieć dwa konta.
rootkoncie.
Z podanego krótkiego opisu wydaje się, że lepiej byłoby skonfigurować system monitorowania dzienników. Pomoże Ci to monitorować loginy, tworzyć alerty, porównywać dane z kilku dni i oczywiście wykresy.
Ale jeśli chcesz go tymczasowo monitorować , możesz użyć lastpolecenia.
last | grep root | grep -v tty | awk '{print $3}'
To daje listę IPslub Hostnamesskąd użytkownik root zalogowany.
sudo less /root/.bash_historywciąż próbuję to zbadać, wydaje się to naprawdę dobre pytanie :)