Nie udało się zablokować brutalnej siły ssh za pomocą iptables

9

Próbuję zablokować (spowolnić) ataki siłowe na mój serwer sshd. Postępuję zgodnie z tym przewodnikiem http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/, który w zasadzie mówi, że muszę tylko wprowadzić 2 poniższe polecenia.

sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP

Mój port sshd to 6622, więc zmieniłem wpisy z „22” na „6622” i wstawiłem te polecenia. Następnie spróbowałem po prostu przetestować nowe iptables. Poszedłem na inny komputer i celowo wpisałem błędne hasło logowania kilka razy. Niestety nowe zasady nie powstrzymują mnie od próbowania tak dużo, jak chcę. Poniżej wymienione są moje obecne zasady. Co ja robię źle?

# iptables --list

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
           tcp  --  anywhere             anywhere             tcp dpt:6622 state NEW recent: SET name: DEFAULT side: source

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain LOGDROP (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning
DROP       all  --  anywhere             anywhere            
Sepero
źródło
4
Polecam fail2ban do obsługi blokujących adresów IP, które pokazują próby użycia siły. Jest łatwy w instalacji i konfiguracji. Wiem, że nie odpowiada bezpośrednio na twoje pytanie, ale może zaoszczędzić ci kilka dziur w płycie gipsowo-kartonowej.
Banjer
1
Zgadzaj się z @Banjer - zapomnij o linku rackaid, skonfiguruj fail2ban.
Shadur
Czy jest jakaś szansa MaxStartupsna ulepszenie strony demona?
peterph
2
@peterph Tylko jeśli chcesz przekształcić brutalną próbę zerwania sił w odmowę usługi.
Shadur
Po co wystawiać serwer ssh w Internecie, a następnie próbować zminimalizować konsekwencje? Zarówno w pracy, jak i w domu, wchodzę za pośrednictwem sieci VPN typu ipsec VPN, w ogóle nie ma dostępu do ssh w Internecie.
Rui F Ribeiro

Odpowiedzi:

5

Jak zauważył @banjer w swoim komentarzu, próbujesz niewłaściwego rozwiązania swojego rzeczywistego problemu.

To, co musisz zrobić, to skonfigurować fail2ban . Używa iptables w tle do automatycznego blokowania prób połączenia z hostów, które generują nieudane próby dostępu z różnych źródeł. Jest niezwykle wszechstronny i pozwala dodawać i modyfikować różne progi, wzorce do wyszukiwania i metody banowania; będziesz musiał nieco ulepszyć domyślne więzienie ssh, aby uwzględnić niestandardowy port, którego używasz, ale to nie powinno być trudne.

Shadur
źródło
1

Używam takich reguł, aby spowolnić:

iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] "
iptables -A DDoS -j DROP

W innych miejscach ograniczam takie rzeczy:

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP
slm
źródło
0

Czytałeś stronę man?

man sshd_config:

 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.
 MaxSessions
         Specifies the maximum number of open sessions permitted 
         per network connection.  The default is 10.
 MaxStartups
         Specifies the maximum number of concurrent unauthenticated
         connections to the SSH daemon.  Additional connections
         will be dropped until authentication succeeds or 
         the LoginGraceTime expires for a connection. The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying
         the three colon separated values “start:rate:full” (e.g.
         "10:30:60").  sshd(8) will refuse connection attempts with a
         probability of “rate/100” (30%) if there are currently “start”
         (10) unauthenticated connections.  The probability increases
         linearly and all connection attempts are refused if the 
         number of unauthenticated connections reaches “full” (60).
wieczność
źródło
3
Nie pomaga Ataki brutalnej siły SSH są obecnie używane przez rozproszone sieci botów, więc każde połączenie wykona tylko trzy lub cztery próby, ale będziesz mieć setki połączeń z różnych hostów.
Shadur
0

Właśnie wypróbowałem rozwiązanie dwóch reguł i miałem ten sam problem, kiedy to sprawdziłem. Następnie zauważam, że opublikowane zasady mają -i eth0opcję! Zmieniłem go na dobry interfejs sieciowy i wreszcie zaczął działać.

użytkownik2083098
źródło
0

Większość samouczków służy -Ado dołączania na końcu zestawu reguł. OP używane -Ido wstawiania, ale bez indeksu, więc reguły skończyły w niewłaściwej kolejności.

Cennym narzędziem do debugowania reguł iptables jest iptables -vLlista reguł z liczbą przypadków zastosowania każdej reguły. Gdy pojawi się nieoczekiwana liczba 0, możesz zobaczyć, co jest nie tak.

sztywny
źródło