Crmgo Blog

Ochrona przed atakiem brute-force SSH za pomocą iptables

Ochrona przed atakiem brute-force SSH za pomocą iptables

Opcja 1. Ograniczenie połączeń. iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –update –seconds 3600 –hitcount 5 -j REJECT iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –set -j ACCEPT Reguła pozwala na 5 połączeń…

Ochrona przed atakiem brute-force SSH za pomocą iptables

Opcja 1. Ograniczenie liczby połączeń.

iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –update –seconds 3600 –hitcount 5 -j REJECT iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –set -j ACCEPT

Zasada przepuszcza 5 połączeń na godzinę i blokuje, jeśli limit zostanie przekroczony. Zasadniczo jest to już ochrona przed atakiem brute-force, ponieważ przy 5 połączeniach na godzinę dobieranie hasła będzie bardzo uciążliwe.

Opcja 2. Osłanianie skanera portów + ograniczenie liczby połączeń.

iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –update –seconds 3600 –hitcount 8 -j REJECT iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –set iptables -A INPUT -p tcp –dport 22 -m recent –name ssh ! –rcheck –seconds 15 –hitcount 2 -j REJECT iptables -A INPUT -p tcp –dport 22 -j ACCEPT

Kolejność działań:
1. Próba połączenia na port 22 (zwykłe połączenie lub skanowanie portu)
2. Połączenie jest odrzucane, a użytkownik otrzymuje 15 sekund na zalogowanie się
3. Jeśli w ciągu 15 sekund nastąpi pomyślne zalogowanie – dostęp jest przyznany; jeśli nie uda się w tym czasie – połączenie jest odrzucane, a ponownie przyznawane są 15 sekund
4. Jeśli w ciągu godziny nastąpi 8 nieudanych prób, następuje blokada do końca godziny od pierwszej nieudanej próby.

Zalety tej funkcji: skanerowi portów nie jest od razu jasne, że port 22 jest otwarty. Ponadto, nawet jeśli zostanie to zauważone, atak brute-force będzie trudny, ponieważ 8 prób jest za mało do skutecznego złamania hasła.

Wady: jeśli przypadkowo zablokujesz własne połączenie – musisz czekać godzinę.)

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.