Com o iptables é possível negar vários intervalos de IP em uma única regra?

Com o iptables é possível negar vários intervalos de IP em uma única regra?

Quero registrar todas as conexões estrangeiras, não nossos blocos IP, em uma porta. Para um único intervalo, a regra é semelhante a:

-A INPUT ! -s 10.20.0.0/16 -p tcp -m tcp --dport 8443 -m state --state NEW  -j LOG --log-level 1 --log-prefix "New 8443 Connection"

Logicamente, a idéia é não registrar conexões na porta 8443se elas vierem de 10.20.0.0/16ou 10.30.0.0/16. Estou atacando o problema com a lógica errada para o iptables? Isso é possível com o iptables?

Observe que esses são apenas exemplos de intervalos de IP, não aqueles para os quais desejo parar de escrever entradas de log.

Responder1

Você pode usar um ipset:

-A INPUT -p tcp -m tcp --dport 8443 -m set ! --match-set OUR_IP4 src -j LOG

Observe que o ipset deve ser mantido usando uma ferramenta separada (incluindo criação/restauração na inicialização).

Você pode usar uma subcadeia:

-A INPUT -p tcp -m tcp --dport 8443 -j FOOSERVICE

-N FOOSERVICE
-A FOOSERVICE -s 10.20.0.0/16 -j RETURN
-A FOOSERVICE -s 10.30.0.0/16 -j RETURN
-A FOOSERVICE -j LOG --log-prefix "New connection to foo: "
-A FOOSERVICE -j RETURN
   # optional; subchains always return at the end

informação relacionada