SSH / SSHD - Jak ustawić maksymalną liczbę prób logowania?
17
Jaki jest najłatwiejszy sposób ustawienia maksymalnej liczby prób logowania w środowisku LAMP (sshd instalowany przez yum)? Czy istnieje pakiet lub prosta reguła zapory?
@Hyppy Dzięki, próbowałem szukać, ale niestety jest wiele źle nazwanych pytań / wątków.
John Himmelman
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
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.
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ę:
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.
Odpowiedzi:
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.źródło
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
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
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.3) Zobacz wpisy w dzienniku możliwych ataków ssh w
/var/log/syslog
źródło
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.
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ę:
źródło
Korzystam z tych reguł IPTables do tego:
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.
źródło
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.istnieje opcja, którą możesz umieścić w pliku sshd_config dla serwera:
źródło