Jak śledzić nieudane próby zalogowania się przez SSH?

134

Chciałbym sprawdzić, czy ktoś próbował zalogować się metodą brute-force na moim serwerze Ubuntu 12.04 przez SSH. Jak mogę sprawdzić, czy takie działania miały miejsce?

Ivan
źródło

Odpowiedzi:

150

Wszystkie próby logowania są zalogowane /var/log/auth.log.

1. Filtruj w poszukiwaniu interaktywnych loginów SSH typu brute-force

Otwórz terminal i wpisz poniżej; jeśli jest dłuższy niż 1 strona, będziesz mógł przewijać w górę iw dół; wpisz, qaby wyjść:

grep sshd.\*Failed /var/log/auth.log | less
  • Oto prawdziwy przykład z jednego z moich VPS:

    18 sierpnia 11:00:57 izxvps sshd [5657]: Nieudane hasło dla root'a z portu 95.58.255.62 38980 ssh2
    18 sierpnia 23:08:26 izxvps sshd [5768]: Nieudane hasło dla root'a z portu 91.205.189.15 38156 ssh2
    18 sierpnia 23:08:30 izxvps sshd [5770]: Nieudane hasło dla nikogo z 91.205.189.15 portu 38556 ssh2
    18 sierpnia 23:08:34 izxvps sshd [5772]: Nieudane hasło dla niepoprawnej gwiazdki użytkownika z 91.205.189.15 port 38864 ssh2
    18 sierpnia 23:08:38 izxvps sshd [5774]: Nieudane hasło dla niepoprawnego użytkownika sjobeck z 91.205.189.15 port 39157 ssh2
    18 sierpnia 23:08:42 izxvps sshd [5776]: Nieudane hasło dla roota z 91.205.189.15 portu 39467 ssh2
    

2. Poszukaj nieudanych połączeń (tzn. Bez próby logowania, może to być skaner portów itp.):

Użyj tego polecenia:

grep sshd.*Did /var/log/auth.log | less
  • Przykład:

    5 sierpnia 22:19:10 izxvps sshd [7748]: Nie otrzymano ciągu identyfikacyjnego z 70.91.222.121
    10 sierpnia 19:39:49 izxvps sshd [1919]: Nie otrzymano ciągu identyfikacyjnego z 50.57.168.154
    13 sierpnia 23:08:04 izxvps sshd [3562]: Nie otrzymano ciągu identyfikacyjnego z 87.216.241.19
    17 sierpnia 15:49:07 izxvps sshd [5350]: Nie otrzymano ciągu identyfikacyjnego z 211.22.67.238
    19 sierpnia 06:28:43 izxvps sshd [5838]: Nie otrzymano ciągu identyfikacyjnego od 59.151.37.10
    

Jak ograniczyć nieudane / brutalne próby logowania

  • Spróbuj przełączyć SSH na niestandardowy port z domyślnego 22
  • Lub zainstaluj skrypt automatycznego blokowania, taki jak fail2banZainstaluj fail2ban .
ish
źródło
4
Ile bezpieczeństwa zyskujesz przy przełączaniu portu SSH (czy nie mogą po prostu przeskanować Cię, jak wspomniałeś) i czy warto rzucić niewielką użyteczność dla legalnych użytkowników?
Nick T
8
@NickT okazuje się wystarczające, aby znacznie ograniczyć próby logowania. Gdzie dostałem tysiące prób w ciągu tygodnia / dnia, jak dotąd nie miałem żadnych przez ostatni miesiąc, po prostu zmieniając port.
AntoineG,
2
Myślę, że zabronienie logowania za pomocą hasła również może pomóc.
Luc M
2
wiem, że to ubuntu, chciałem tylko wspomnieć, że w niektórych systemach, takich jak centos, ścieżka do pliku to/var/log/secure
lfender6445
Niektóre systemy uzyskują dostęp do dziennika za pomocąsystemctl -eu sshd
alecdwm,
72

Argumentowałbym, że monitorowanie dzienników jest słabym rozwiązaniem, szczególnie jeśli masz słabe hasło do konta. Brutalne próby często próbują co najmniej setek kluczy na minutę. Nawet jeśli masz ustawione zadanie wysyłania e-mailem brutalnych prób, może minąć wiele godzin, zanim dotrzesz do serwera.

Jeśli masz publiczny serwer SSH, potrzebujesz rozwiązania, które uruchomi się na  długo, zanim będziesz mógł zostać zhakowany.

Zdecydowanie polecam fail2ban. Ich wiki mówi, co robi lepiej niż ja.

Fail2ban skanuje pliki dziennika (np. /var/log/apache/error_log) I blokuje adresy IP, które pokazują złośliwe znaki - zbyt wiele awarii haseł, szukanie exploitów itp. Ogólnie Fail2Ban następnie aktualizował reguły zapory sieciowej, aby odrzucać adresy IP przez określony czas, chociaż jakiekolwiek można również skonfigurować dowolne inne działanie (np. wysłanie wiadomości e-mail lub wysunięcie tacy CD-ROM). Od razu po awarii Fail2Ban zawiera filtry dla różnych usług (apache, curier, ssh itp.).

Uzyskanie ochrony przed nim jest tak proste, jak sudo apt-get install fail2ban.

Domyślnie, jak tylko ktoś podejmie trzy nieudane próby, jego IP otrzymuje pięciominutowy ban. Takie opóźnienie zasadniczo zatrzymuje próbę użycia siły przez SSH, ale nie zrujnuje ci dnia, jeśli zapomnisz hasła (ale i tak powinieneś używać kluczy!)

Oli
źródło
6
Dlaczego nazywa się to banowaniem?
Pacerier
9
@Pacerier Cóż, z pewną analogią, niepowodzenie logowania prowadzi do (2) bana.
Sebi,
2
Bwahaha, sprawiłeś, że mój dzień @Pacerier nigdy nie myślałem o tym jako o dosłownym „braku banowania”.
adelriosantiago,
1
Myślę, że należy to zmienić, aby usunąć „szczególnie” z pierwszego zdania. To tylko problem, jeśli masz słabe hasło. Silnych haseł nie można brutalnie wymusić w żadnych okolicznościach, a jedynym powodem, dla którego ludzie nie mogą próbować, jest zmniejszenie obciążenia serwera.
Abhi Beckert
Absolutnie się zgadzam. W każdym razie będzie w porządku, aby uniknąć dużego obciążenia serwera. Widziałem próby według stawek milisekundowych
Diego Andrés Díaz Espinoza