Regras de firewall usando iptables usando instrução condicional

1

Eu tenho uma regra de firewall que deve aceitar todas as conexões, mas descartar conexões de um ataque de força bruta ssh (exceto o intervalo 10.0.0.0/8). Essa regra bloqueará um IP se tentar mais de 24 conexões por 10 minutos.

    # Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -s ! 10.0.0.0/8 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp --dport 22 -s ! 10.0.0.0/8 -m state --state NEW -m recent --update --seconds 600 --hitcount 25 --rttl --name SSH -j DROP
-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
COMMIT

Ocorre um erro quando tento iniciar o iptables como um mau argumento.

iptables: Applying firewall rules: Bad argument '10.0.0.0/8'
    
por Chucks 14.12.2013 / 19:56

1 resposta

3

Isso foi falado antes em SF. iptables mudou a maneira de aceitar parâmetros. Agora o estrondo deve ser antes do parâmetro, para que suas linhas se tornem assim:

-A INPUT -p tcp --dport 22 ! -s 10.0.0.0/8 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp --dport 22 ! -s 10.0.0.0/8 -m state --state NEW -m recent --update --seconds 600 --hitcount 25 --rttl --name SSH -j DROP

E sim, todo blog na internet está errado.

(Esta é uma cópia da minha resposta no StackOverflow, o problema é essencialmente o mesmo)

    
por 14.12.2013 / 20:00