Spójrz na wynik last
polecenia i wszystko, co ma adres IP lub nazwę hosta zamiast pustego miejsca, pojawiło się w sieci. Jeśli sshd
jest to jedyny sposób na zrobienie tego w tym systemie, to proszę bardzo.
Alternatywnie (jeśli jest to Linux), możesz sprawdzić /var/log/secure
(na dystrybucjach opartych na RH) lub /var/log/auth.log
(na dystrybucjach opartych na Debianie), gdzie sshd
zwykle śledzi wykonane połączenia, nawet jeśli nie spowodują pomyślnego logowania (które trafia utmp
/ wtmp
, które to, co last
będzie czytać). Przykład:
Apr 3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr 3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2
IIRC Solaris sshd
(które niekoniecznie muszą być OpenSSH sshd
) zaloguje te informacje do/var/adm/messages
EDYTOWAĆ:
@derobert stanowi doskonały punkt. Ważne jest, aby pamiętać, że w każdym systemie, jeśli Twoje konto administratora jest zagrożone, wszystkie zakłady są wyłączone, ponieważ atakujący może zmodyfikować pliki dziennika takie jak /var/log/wtmp
lub /var/adm/messages
. Można to złagodzić, przenosząc logi poza serwer do bezpiecznej lokalizacji.
Na przykład w jednym ze sklepów, w których kiedyś pracowałem, mieliśmy maszynę „Audit Vault”, która była zabezpieczona, aby odbierać tylko pliki dziennika kontroli z różnych serwerów w centrum danych. W przyszłości zaleciłbym podobną konfigurację (ponieważ „Mam maszynę testową” brzmi, jakbyś działał w dużym sklepie)
To powinno dać ci listę:
Następnie można skorzystać
geoiplookup
zgeoip-bin
pakietu, aby przejść od hosta lub adres IP do kraju.źródło
sed
umiejętności nie są tym bogiem. Aby zrobić coś bardziej złożonego, użyj Pythona lub dedykowanego analizatora dzienników. Ale możesz spróbować:zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Cóż, zgodnie z oczekiwaniami i jak powiedział @Jel Davis, wszystkie dzienniki zostały wyczyszczone, ale był jeden plik, o którym wspomniał @Ramesh, który ma kilka prób uzyskania dostępu do użytkownika root, ale kilka razy nie wprowadził poprawnego hasła, a następnie rozłącz zbyt wiele ponownych prób.
Uruchomiłem traceroute na trzech adresach, a dwa pochodzą z Chin, a drugi z Pakistanu; są to adresy IP:
Więcej informacji o botnecie, który został wstrzyknięty do serwera po przejęciu:
Hakerzy edytują crontab, aby wykonać 7 plików wykonywalnych, które co x ilość czasu zużyją cały procesor, zwiększą wydajność sieci serwerów, a następnie po prostu umrą. Dodają również plik Readme do crontab 100 razy, aby ukryć dodane linie, więc kiedy to zrobisz
crontab -l
, zostaniesz spamowany przez plik Readme z ukrytymi liniami. Aby to obejść, użyłemcrontab -l | grep -v '^#'
i oto wynik tego polecenia:Jak widać, wszystkie pliki dziennika zostały wyczyszczone, dlatego nie udało mi się pobrać wielu informacji.
Spowodowało to wyłączenie całego serwera (wszystkich maszyn wirtualnych), powodując przekroczenie limitu czasu w witrynach i na serwerze proxy. Oto wykres (skoki oznaczają, że botnet aktywnie wykonuje DDoS i zauważa, że sieć się wyłączyła):
W rezultacie dodam cały zakres chińskich adresów IP do zapory sieciowej, aby zablokować wszystkie połączenia (nie mam żadnych chińskich użytkowników, więc mnie to nie obchodzi), nie zezwalam także na zdalne logowanie do roota i używam długiego skomplikowanego Hasła. Najprawdopodobniej zmienię również port ssh i użyję również prywatnych kluczy ssh.
źródło
Z tej odpowiedzi widzę poniższe informacje.
Mówiąc o serwerach SSH, dam ci rozwiązania z linii poleceń.
Śledź logowania i wylogowania użytkowników . To proste, plik
/var/log/auth.log
powinien zawierać te informacje.Śledź aktywność tych użytkowników : jeśli są nieco niewinni, możesz sprawdzić plik
.bash_history
w swoim katalogu domowym. Zobaczysz listę wykonanych poleceń. Problem polega oczywiście na tym, że mogą usunąć lub edytować ten plik.Zapobiegaj usuwaniu dzienników przez użytkowników: użytkownicy nie powinni mieć możliwości dotykania
auth.log
. Aby powstrzymać ich od zabawybash_history
, musisz wykonać kilka sztuczek.Co się stanie, jeśli użytkownikowi uda się uzyskać dostęp do konta root? : Masz przerąbane. Jeśli nie popełni błędu, będzie w stanie ukryć wszystkie swoje kroki.
Ponadto z tej odpowiedzi możemy zobaczyć adres IP klienta korzystającego ze
SSH_CLIENT
zmiennej.Również z tej odpowiedzi widzę, że historia ssh może być przechowywana w tych plikach.
Obok
/var/log/lastlog
znajdują się 3 pliki/var/run
i/var/log
:utmp
,wtmp
ibtmp
, które posiadają informacje o aktualnych logowań (i dodatkowych informacji), historycznych i nieudanych logowań. Zobacz wiki na szczegółowym opisem. Nie można edytować plików za pomocą zwykłych edytorów, ale można je usunąć.źródło
Najprostszym poleceniem zalogowania 10 ostatnich użytkowników na maszynie jest
last|head
.Aby uzyskać wszystkich użytkowników, wystarczy użyć
last
poleceniaźródło
Ta maszyna została przejęta. Oznacza to, że jakimkolwiek danym, historycznym lub bieżącym, nie można już ufać.
Krótko mówiąc, odpowiedź brzmi „nie”. Nie możesz być pewien, że odnalazłeś adres źródłowy z dowolnego pliku dziennika zapisanego na tym komputerze.
Wyczyść i zainstaluj ponownie. I łatka.
źródło
Aby zobaczyć tylko udane próby logowania za pomocą hasła:
źródło
w przypadku Debiana wyszukiwanie testowe jest nieco inne
źródło