Jak ustalić adres IP osoby zalogowanej do roota?

15

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.

Matthew Moisen
źródło
1
Możesz uzyskać dostęp do dzienników, aby zobaczyć, jakie polecenia zostały wykonane wcześniej: sudo less /root/.bash_historywciąż próbuję to zbadać, wydaje się to naprawdę dobre pytanie :)
ryekayo
6
Jeśli ktoś zaloguje się jako root, może zrobić wszystko, co chce, aby usunąć wszystkie potrzebne mu dzienniki ...
Comintern
4
Na marginesie, powinieneś zabronić bezpośredniego logowania roota. Jest to duży problem bezpieczeństwa.
fedorqui

Odpowiedzi:

15

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).

Patrick
źródło
14

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.

Michael Homer
źródło
7

Komenda

who /var/log/wtmp

powinien pokazywać informacje podobne do tego who, co pokazuje, ale cofać się w czasie.

G-Man mówi „Przywróć Monikę”
źródło
Fajna sztuczka, ale IMO lepiej jest po prostu użyćlast
Creek
7

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.

pqnet
źródło
2
Po pierwsze, to nie odpowiada na pytanie. Po drugie, zawsze powinieneś mieć sposób na uratowanie systemu. Co dzieje się, gdy używasz uwierzytelniania LDAP, a serwer LDAP umiera? Jak zamierzasz zalogować się do skrzynki?
Patrick
4
@Patrick Po pierwsze, pytanie zaczyna się od „istnieje kilka osób z dostępem root do konkretnej maszyny wirtualnej”, więc sensowne jest zasugerowanie, że właściwym podejściem nie jest kontrola IP, ale kontrola użytkowników. Po drugie, kwestia, którą stawiasz, nie ma związku: jeśli dana osoba ma uzyskać dostęp do maszyny w przypadku awarii LDAP, która nie działa, powinna ona mieć własne konto lokalne, a jeśli ma ona wykonywać prace administracyjne w takiej sytuacji, konto lokalne powinno mieć sudomoc. Nigdy nie ma prawdziwego powodu do dzielenia konta między dwiema osobami, ale w razie potrzeby dana osoba może mieć dwa konta.
pqnet
Pytanie nie polega na tym, jak zmienić ich konstrukcję, ale na tym, jak uzyskać adres IP. Jeśli chodzi o inne rozwiązanie, teraz masz konto lokalne (być może kilka) z hasłem, które nigdy nie wygasa. Nie uważałbym tego za ulepszenie.
Patrick
@ Patryk cokolwiek. Zarządzasz własnym serwerem, ja zarządzam moim. Masz rację, ludzie przeczytają twój komentarz i zdecydują.
pqnet
1
@Patrick poprawa w stosunku do czego? Posiadanie osobnych kont użytkowników dla oddzielnych osób jest prawie na pewno poprawą w stosunku do posiadania kilku osób na jednym rootkoncie.
jw013,
0

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.

początkujący
źródło