Falha ao bloquear força bruta ssh com iptables

9

Estou tentando bloquear (diminuir) ataques de força bruta no meu servidor sshd. Estou seguindo este guia link que basicamente diz que preciso basta digitar os dois comandos abaixo.

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

Minha porta sshd é 6622, então eu mudei as entradas de "22" para "6622" e coloquei esses comandos. Então eu tentei simplesmente testar o novo iptables. Eu fui para outro pc e propositalmente coloquei a senha de login errada várias vezes. Infelizmente, as novas regras não parecem me impedir de tentar tanto quanto eu quero. Listados abaixo estão minhas regras atuais. O que estou fazendo errado?

# 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            
    
por Sepero 15.10.2013 / 02:21

5 respostas

5

Como @banjer apontou em seu comentário, você está tentando a solução errada para o seu problema real.

O que você precisa fazer é configurar fail2ban . Ele usa o iptables em segundo plano para bloquear automaticamente tentativas de conexão de hosts que geram tentativas de acesso com falha de várias origens. É incrivelmente versátil e permite adicionar e modificar diferentes limites, padrões para procurar e banir métodos; você terá que ajustar levemente sua jaula ssh padrão para considerar a porta não padrão que você está usando, mas isso não deve ser difícil.

    
por 15.10.2013 / 11:50
1

Eu uso regras como essa para desacelerar as coisas:

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

Em outros lugares, limito coisas assim:

LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
     $LOGLIMITBURST -j DROP
    
por 15.10.2013 / 04:20
0

Você leu a página 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).
    
por 15.10.2013 / 09:06
0

Acabei de experimentar a solução de duas regras e tive o mesmo problema quando a verifiquei. Então, observo que as regras publicadas têm a opção -i eth0 ! Eu mudei para a interface de rede boa e finalmente começou a funcionar.

    
por 23.12.2013 / 09:22
0

A maioria dos tutoriais usa -A para anexar ao final do conjunto de regras. OP usou -I para inserir mas sem um índice, então as regras acabaram na ordem errada.

Uma ferramenta valiosa para depurar regras do iptables é iptables -vL , que lista as regras com contagens de quantas vezes cada regra foi aplicada. Quando você recebe uma contagem inesperada de 0, pode ajudar a ver o que está errado.

    
por 15.02.2016 / 13:22