Impossibile bloccare la forza bruta ssh con iptables


9

Sto cercando di bloccare (rallentare) gli attacchi di forza bruta sul mio server SSH. Sto seguendo questa guida http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/ che sostanzialmente dice che devo solo inserire i 2 comandi di seguito.

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

La mia porta sshd è 6622, quindi ho cambiato le voci da "22" a "6622" e ho inserito quei comandi. Poi ho provato a provare semplicemente i nuovi iptables. Sono andato su un altro PC e ho intenzionalmente inserito più volte la password di accesso errata. Sfortunatamente, le nuove regole non sembrano impedirmi di provare quanto voglio. Di seguito sono elencate le mie regole attuali. Che cosa sto facendo di sbagliato?

# 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            

4
Raccomando fail2ban di gestire gli IP di blocco che mostrano tentativi di forza bruta. È facile da installare e configurare. So che non risponde direttamente alla tua domanda, ma potrebbe salvarti qualche buco nel muro a secco.
Banjer,

1
Concordo con @Banjer - dimentica quel link rackaid, imposta fail2ban.
Shadur,

Qualche possibilità di modifica MaxStartupspotrebbe essere d'aiuto dal lato del demone?
peterph

2
@peterph Solo se si desidera trasformare un tentativo di interruzione della forza bruta in una negazione del servizio.
Shadur,

Perché esporre un server SSH su Internet e quindi provare a minimizzare le conseguenze? O al lavoro o a casa, entro tramite VPN ipsec, senza accesso a Internet.
Rui F Ribeiro,

Risposte:


5

Come ha sottolineato @banjer nel suo commento, stai provando la soluzione sbagliata per il tuo vero problema.

Quello che devi fare è impostare fail2ban . Utilizza iptables in background per bloccare automaticamente i tentativi di connessione dagli host che generano tentativi di accesso non riusciti da varie fonti. È incredibilmente versatile e ti consente di aggiungere e modificare diversi treshold, motivi da cercare e metodi di divieto; dovrete modificare leggermente il suo jail predefinito ssh per tenere conto della porta non standard che state usando, ma non dovrebbe essere difficile.


1

Uso regole come questa per rallentare le cose:

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

In altri posti limito cose come questa:

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP

0

Hai letto la pagina 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).

3
Non aiuta Al giorno d'oggi gli attacchi SSH bruteforce tendono a essere utilizzati dalle reti di bot distribuiti, quindi ogni connessione farebbe solo tre o quattro tentativi, ma avresti centinaia di connessioni da host diversi.
Shadur,

0

Ho appena provato la soluzione a due regole e ho avuto lo stesso problema quando l'ho verificato. Quindi, osservo che le regole pubblicate hanno -i eth0un'opzione! L'ho cambiato con la buona interfaccia di rete e finalmente ha iniziato a funzionare.


0

La maggior parte dei tutorial usa -Aper aggiungere alla fine del set di regole. OP utilizzava -Il'inserimento ma senza un indice, quindi le regole sono finite nell'ordine sbagliato.

Uno strumento prezioso per il debug delle regole di iptables è iptables -vLche elenca le regole con conteggi di quante volte ogni regola è stata applicata. Quando ricevi un conteggio imprevisto di 0, può aiutarti a vedere cosa c'è che non va.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.