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ć last
polecenia, 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.
last
używa /var/log/wtmp
pliku, 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. sshd
loguje 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 systemd
użyj journalctl
:
journalctl /usr/bin/sshd
aby wyświetlić listę wszystkich komunikatów dziennika z sshd
pliku wykonywalnego. Możesz to zmienić dla logowania użytkownika root lub innych kryteriów i ograniczyć je według daty za pomocą --since
i --until
(patrz man journalctl
).
Alternatywnie i historycznie wiadomości będą logowane (zwykle) gdzieś /var/log
. Zwykle pojawiają się sshd
wiadomoś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 journalctl
wersji.
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 ssh
przez 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ć, sudo
aby 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.
sudo
moc. Nigdy nie ma prawdziwego powodu do dzielenia konta między dwiema osobami, ale w razie potrzeby dana osoba może mieć dwa konta.
root
koncie.
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ć last
polecenia.
last | grep root | grep -v tty | awk '{print $3}'
To daje listę IPs
lub Hostnames
skąd użytkownik root zalogowany.
sudo less /root/.bash_history
wciąż próbuję to zbadać, wydaje się to naprawdę dobre pytanie :)