iptables: Nenhuma cadeia / destino / correspondência com esse nome - adicionando a regra SSH ATTACK

2

Eu tenho um problema com a adição de regras contra ataques SSH de força bruta. Eu tento fazer da seguinte maneira:

iptables -F
iptables -L
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
#Block each IP address for 120 seconds which establishe more than three connections within 120 seconds. In case of the forth connection attempt, the request gets delegated to the SSHATTACK chain, which is responsible for logging the possible ssh attack and finally drops the request.
iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

Mas tenho um problema com estas duas linhas:

iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i venet0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

Saída após este comando é

iptables: No chain/target/match by that name.

iptables -L fornece a seguinte saída:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain SSHATTACK (0 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere            LOG level debug prefix 'Possible SSH attack! '
DROP       all  --  anywhere             anywhere

e iptables -S dão:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N SSHATTACK
-A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
-A SSHATTACK -j DROP

ip add dá (eu escondi o endereço IP com '?'):

1 lo LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN
    linkloopback 000000000000 brd 000000000000
    inet 127.0.0.18 scope host lo
    inet6 1128 scope host
       valid_lft forever preferred_lft forever
2 venet0 BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP mtu 1500 qdisc noqueue state UNKNOWN
    linkvoid
    inet 127.0.0.132 scope host venet0
    inet ?.?.?.24820 brd ?.?.?.255 scope global venet00

O que posso fazer para adicionar esta regra? O que estou perdendo?

    
por michalsol 30.11.2015 / 18:04

3 respostas

0

O parâmetro --dport não pertence à correspondência state . Experimente:

iptables -A INPUT -i venet0 -p tcp --dport 22 -m state --state NEW -m recent --set
    
por 30.11.2015 / 22:22
0

What am I missing?

Você pode reduzir a complexidade de seu próprio conjunto de regras e permitir que algo como fail2ban gerencie isso para você. Disponível em um repositório de pacotes do CentOS 7 perto de você, ou pode ser baixado via EPEL no CentOS 6.

O Fail2ban tem regras prontas para bloquear ssh ataques, e há alguns tutoriais aqui ou aqui .

    
por 30.11.2015 / 22:51
0

Este é um tópico antigo, mas se alguém chegar aqui, isso pode ajudar (resolvido por mim).

O problema é um driver de kernel ausente. Depois de adicionar

CONFIG_NETFILTER_XT_MATCH_RECENT=y

para a configuração do kernel e recompilando-o, o problema foi resolvido. Você também pode adicioná-lo como um módulo (= m) e insmod-lo em tempo de execução

boa sorte!

    
por 20.11.2017 / 08:07