Właśnie się cat /var/log/auth.log
zalogowałem i zobaczyłem, że istnieje wiele | grep "Failed password for"
zapisów.
Istnieją jednak dwa możliwe typy rekordów - dla ważnego / nieprawidłowego użytkownika. To komplikuje moje próby | cut
.
Chciałbym zobaczyć utworzenie listy (pliku tekstowego) z adresami IP potencjalnych atakujących i liczbą prób dla każdego adresu IP. Czy jest jakiś prosty sposób na jego utworzenie?
Także, jeśli chodzi tylko o ssh
: Jakie wszystkie zapisy /var/log/auth.log
powinienem wziąć pod uwagę przy tworzeniu listy potencjalnych napastników?
Przykład mojego „dziennika auth.log” z ukrytymi numerami:
cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail
Wynik:
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user ucpss from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user vijay from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user webalizer from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user xapolicymgr from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user yarn from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zookeeper from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zt from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for mysql from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.111.111.1 port 11111 ssh1
/etc/ssh/sshd_config
... ustawienia wyszukiwaniaPasswordAuthentication no
iPermitRootLogin without-password
... wtedy wszystkie takie próby hasła zostaną udaremnione przed wejściem na auth.log ...Odpowiedzi:
Możesz użyć czegoś takiego:
Greps dla ciągu znaków
Failed password for
i wyciąga (-o
) adres IP. Jest posortowane iuniq
liczy liczbę wystąpień.Dane wyjściowe wyglądałyby następująco (z twoim przykładem jako plikiem wejściowym):
Ostatni na wyjściu próbował 6 razy.
źródło
| sort -n
do łańcucha.sed -nr '/Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'
zastępuje oba greps.zgrep "Failed" /var/log/auth.log*
także przeszukiwanie skompresowanych archiwów logów, czegosed
nie można.Może to być rozdęte rozwiązanie, ale sugeruję przyjrzenie się instalacji czegoś takiego jak Fail2Ban
Jest przeznaczony do tego rodzaju logowania + dodaje premię za możliwość dodania (tymczasowych) reguł w zaporze sieciowej, aby zablokować powtarzających się przestępców. Pamiętaj jednak, aby dodać do białej listy swoje własne adresy IP, udało mi się jednak chwilowo zablokować się
źródło
Sprawdziło się to dla mnie naprawdę dobrze. (Adresy IP zostały zmienione, aby chronić winnych)
źródło
źródło
password
- nie działa. Nie obejmuje nawet różnych typów pozycji,awk
kolumna drukowania jest alternatywą dlacut
, a nie rozwiązaniem.uniq -c
jak w najlepszej odpowiedzi.