Actualmente tengo mi cadena OUTPUT configurada en DROP. Me gustaría cambiarlo a RECHAZAR, de modo que tenga la idea de que es mi firewall que me impide llegar a algún lugar en lugar de un problema con cualquier servicio al que intento acceder (rechazo inmediato en lugar de tiempo de espera). Sin embargo, a iptables no parece importarle esto. Si edito manualmente mi archivo de reglas guardado e intento restaurarlo, obtengo iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name
y se niega a cargar las reglas. Si intento configurar esto manualmente ( iptables -P OUTPUT REJECT
), obtengo iptables: Bad policy name. Run 'dmesg' for more information.
pero no hay salida en dmesg.
He confirmado que la regla apropiada está compilada en el kernel y la he reiniciado para asegurarme de que está cargada:
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
(Se agregaron asteriscos para resaltar la regla aplicable)
Todo lo que puedo encontrar indica que REJECT es una política / objetivo válido (en general), pero no puedo encontrar nada que diga que no es válido para las cadenas INPUT, FORWARD o OUTPUT. Mi Google-fu no está ayudando. Estoy en Gentoo, si eso hace alguna diferencia. ¿Alguien aquí tiene alguna idea?
fuente
iptables
reglas en cuestión?Respuestas:
REJECT
es una extensión objetivo , mientras que una política de cadena debe ser un objetivo . La página del manual dice eso (aunque no está realmente claro), pero parte de lo que dice es completamente erróneo.La política solo puede ser
ACCEPT
oDROP
en cadenas incorporadas. Si desea el efecto de rechazar todos los paquetes que no coinciden con las reglas anteriores, solo asegúrese de que la última regla coincida con todo y agregue una regla con unaREJECT
extensión de destino. En otras palabras, después de agregar todas las reglas relevantes, hazloiptables -t filter -A OUTPUT -j REJECT
.Consulte el hilo "cuáles son las posibles políticas de cadena" en la lista de netfilter para obtener más detalles.
fuente
No pude encontrarlo documentado, pero una referencia aquí indica que las únicas políticas permitidas son ACCEPTor DROP. Esto se confirma mirando la fuente de
libiptc
(que es responsable de manipular las reglas) alrededor de la línea 2429, donde el código tieneEl hilo original sugiere que lo mejor que puede hacer es agregar RECHAZAR al final de la cadena que debería ser
iptables -A OUTPUT -j REJECT
.Tenga en cuenta que el código justo antes de esto es:
Por lo tanto, no puede establecer la política en una cadena definida por el usuario en absoluto.
fuente
-p
es para hacer coincidir un protocolo; quiso decir-A
como dice mi respuesta.REJECT
encendidoOUTPUT
no tiene sentido; aREJECT
devolverá un paquete ICMP que necesitaría atravesar una red.Agregue una nueva
-j LOG
como su última regla (por lo tanto, antes de laDROP
política) para ver qué llega tan lejos en laOUTPUT
cadena.fuente
REJECT
paquete ICMP regresar en la interfaz lo? Estoy de acuerdo en que aLOG
es útil para la resolución de problemas, pero lo que realmente esperaba es una forma de recordarme que "Oh, sí ... eso probablemente esté bloqueado por miDROP
valor predeterminado de iptables" en lugar de solucionar problemas durante 5 minutos, le pide a un compañero de trabajo que El acceso al servidor XYZ se da cuenta de que probablemente sea local , que es mi enfoque más común, ya que mi día de trabajo típico rara vez golpea cosas que todavía no he abierto. Por supuesto, tal vez necesito tenerlo en cuenta mejor, pero un pisoREJECT
es más obvio.ethX
interfaz genere tráfico en lalo
interfaz por muchas razones. Son muy independientes; puede hacer que las cadenas se apliquen fácilmente a una y no a la otra.