
Quiero registrar todas las conexiones externas, no nuestros bloques de IP, a un puerto. Para un solo rango la regla es la siguiente:
-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"
Lógicamente la idea es no registrar conexiones en el puerto 8443
si provienen de 10.20.0.0/16
o 10.30.0.0/16
. ¿Estoy atacando el problema con la lógica incorrecta para iptables? ¿Es esto posible incluso con iptables?
Tenga en cuenta que estos son solo rangos de IP de muestra, no aquellos para los que quiero dejar de escribir entradas de registro.
Respuesta1
Puedes usar un ipset:
-A INPUT -p tcp -m tcp --dport 8443 -m set ! --match-set OUR_IP4 src -j LOG
Tenga en cuenta que el ipset debe mantenerse utilizando una herramienta separada (incluida la creación/restauración en el arranque).
Puedes usar una subcadena:
-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