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?
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?
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.
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
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.
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ę:
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.
-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:
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.