SSH / SSHD - Jak ustawić maksymalną liczbę prób logowania?


Odpowiedzi:


11

Używam Fail2ban ; W przeszłości korzystałem z Denyhosts i również działa całkiem dobrze. Teraz faworyzuję Fail2ban, ponieważ jest bardziej konfigurowalny i lepiej radzi sobie z monitorowaniem wielu różnych usług - na przykład jednocześnie sshd i strony logowania do aplikacji internetowej (pod warunkiem, że logujesz awarie).

Inną metodą, którą możesz rozważyć, jest implementacja reguły LIMIT w iptables; Niestety nie mogę ci w tym pomóc, chyba że chcesz zainstalować Shorewall , a następnie po prostu wskażę ci doskonałą dokumentację na tej stronie, w jaki sposób skonfigurować regułę LIMIT, aby, no cóż, ograniczyć zdolność kogoś do brutalnego działania - wymuś swój serwer.


Powinienem dodać, że Fail2ban jest dostępny w repozytoriach wielu dystrybucji, więc jego instalacja jest bardzo prosta; Nie widziałem Denyhosts w żadnym, ale to nie znaczy, że nie ma go w żadnym, ani że nie został dodany od czasu ostatniego sprawdzenia.
Kromey

Mam problem z tym, że fail2ban v0.8.14 nie działał poprawnie z poleceniem iptables-multiport. Jest to znany problem z narzędziem fail2ban rozwiązanym w świeżych wersjach ... Oto opis: github.com/fail2ban/fail2ban/issues/798 Więc wierzę tylko w mechanizmy bezpieczeństwa opracowane w oprogramowanie serwera, ani narzędzia innych firm ...
George Gaál,

44

Nie lubię używać narzędzi stron trzecich. Dlatego użyłem kombinacji konfiguracji ssh i ustawień zapory. W przypadku następującego rozwiązania atakujący może wygenerować dokładnie 3 loginy błędów w ciągu 2 minut, w przeciwnym razie zostanie zablokowany na 120 sekund.

1) Dodaj następujący wiersz do /etc/ssh/sshd_config

MaxAuthTries 1

Umożliwi to tylko 1 próbę logowania na połączenie. Uruchom ponownie serwer ssh.

2) Dodaj następujące reguły zapory

Utwórz nowy łańcuch

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Zablokuj każdy adres IP na 120 sekund, co spowoduje ustanowienie więcej niż trzech połączeń w ciągu 120 sekund. W przypadku czwartej próby połączenia żądanie zostaje delegowane do SSHATTACKłańcucha, który jest odpowiedzialny za rejestrowanie możliwego ataku ssh i ostatecznie odrzuca żądanie.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Zobacz wpisy w dzienniku możliwych ataków ssh w /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Niesamowite! ale mam problem, jakiś facet / bot we Francji nie skonfigurował poprawnie swoich narzędzi hakerów, więc nadal się loguje, nawet pomimo spadku ruchu. W rezultacie moje dzienniki są co sekundę wypełniane danymi od tego faceta. Jakiś sposób na to?
Smarties89

2
Dla mniej doświadczonych ludzi takich jak ja: wiersze iptables są wpisywane po znaku zachęty, a nie gdzieś w pliku.
Andrew Swift,

4

Z SSH nie jest powiązany żaden konkretny pakiet do skonfigurowania tego. Możesz jednak zainstalować CSF, którym jest ConfigServer i Firewall.

CSF

W pliku zostaną wprowadzone dwie zmiany konfiguracji: / etc / ssh / sshd_config

Ogranicz maksymalną liczbę nieuwierzytelnionych połączeń obsługiwanych przez serwer ssh w tym samym czasie. Im jest to mniejsze, tym trudniej jest dzieciom skryptowym wykonywać równoległe, skoordynowane próby krakowania z wieloma połączeniami. edytuj sshd_config i zmień MaxStartups z domyślnej „10” na „3:50:10”. Wartości rozdzielone dwukropkiem nakazują serwerowi ssh, aby „zezwolił 3 użytkownikom na próbę zalogowania się w tym samym czasie oraz na losowe i coraz częstsze odrzucanie prób połączenia od 3 do maksymalnie 10”. Uwaga: należy to zwiększyć na serwerach, na których loguje się znaczna liczba ważnych użytkowników ssh.

  • Domyślnie : MaxStartups 10
  • MaxStartups 3:50:10

Skróć maksymalny dozwolony czas na pomyślne zalogowanie się przed rozłączeniem. Domyślnie 2 minuty to za dużo czasu, aby utrzymać otwartą nieuwierzytelnioną próbę połączenia (patrz wyżej); 30 sekund to więcej niż czas na zalogowanie się:

  • Domyślna : LoginGraceTime 2m
  • LoginGraceTime 30

3

Korzystam z tych reguł IPTables do tego:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Pozwoli to tylko 4 pakietom TCP / SYN na port 22 z adresu IP w ciągu 5 minut. Jeśli podejmie więcej prób, drzwi zostaną zamknięte do końca 5 minut.


Co wymagało edycji?
timkofu,

Niemal tak samo jak: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel,

Zrobiłem te dwie komendy iptables w Debian Jessie, ale nadal widzę próby logowania SSH co 2 sekundy z tego samego adresu IP. Jakieś pomysły?
Alexey Ozerov

1

istnieje opcja, którą możesz umieścić w pliku sshd_config dla serwera:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Przydatne (szczególnie w połączeniu z innymi sugestiami, które już zostały wykonane), ale tak naprawdę nie rozwiązuje problemu samodzielnie, ponieważ jest to banalne dla kogoś, kto po prostu łączy się ponownie.
Kromey
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.