iptables connlimit: exclui vários endereços IP

1

Eu tenho atualmente este comando IPTABLES:

iptables -A INPUT -s ! 192.168.0.2 -p tcp --syn -m connlimit [...] -j DROP

Até onde eu sei, essa regra limita um certo número de conexões seguindo vários parâmetros, exceto 192.168.0.2 que é livre para abrir um número ilimitado de conexões TCP.

A minha preocupação é sobre a exclusão de mais / 32 IPs (sem padrão de intervalo específico), como:

iptables -A INPUT -s ! IP1 IP2 ... IPN -p tcp --syn -m connlimit [...] -j DROP

Como é possível com o iptables?

    
por GPointer 10.02.2015 / 09:23

1 resposta

3

Não faça assim. As pessoas se unem em todos os tipos de nós tentando personalizar iptables exclusions, mas não é o jeito certo de lidar com o problema.

Em vez disso, use a lógica first-dispositive-match-wins de iptables para trabalhar para você. Listar as exceções primeiro:

iptables -A INPUT -s 192.168.1.1 -p tcp [...] -j ACCEPT
iptables -A INPUT -s 192.168.2.2 -p tcp [...] -j ACCEPT
iptables -A INPUT -s 192.168.3.3 -p tcp [...] -j ACCEPT

e depois a regra:

iptables -A INPUT -p tcp --syn -m connlimit [...] -j DROP

Se você não quiser cegamente ACCEPT pacotes desses IPs de origem privilegiada, mas simplesmente isentá-los de outros controles de limitação de taxa, você pode mover a lógica limitadora de taxa para uma cadeia por conta própria, e RETURN para os pacotes principais INPUT chain (para processamento adicional) de fontes que você deseja isentar do controle limitador de taxa:

iptables -N ratelimiter
iptables -A ratelimiter -s 192.168.1.1 -j RETURN
iptables -A ratelimiter -s 192.168.2.2 -j RETURN
iptables -A ratelimiter -s 192.168.3.3 -j RETURN
iptables -A ratelimiter --syn -m connlimit [...] -j DROP
#
iptables -A INPUT -p tcp [...] -j ratelimiter
iptables -A INPUT [ further business-appropriate checks ]
    
por 10.02.2015 / 09:34