
Para borrar todas las reglas en iptables uso esto
#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
Esto funciona hasta el momento en que ya no haya entradas en iptables, lo cual se verifica con
sudo iptables -L
o
sudo iptables -S
Sin embargo, el tráfico que se ha reenviado a un destino diferente todavía se enruta a ese destino.
¡Parece que las iptables borradas todavía están activas después de borrarlas!
Hasta ahora mi única manera de deshacerme de esas reglas es reiniciar el sistema, lo cual no es muy elegante.
EnDebianiptables no parece ejecutarse como un servicio, por lo que iniciar o detener ese servicio no funciona.
¿Cómo borro o restablezco totalmente iptables con el efecto de que las reglas previamente definidas se desactiven?
Respuesta1
El vaciado de las reglas de iptables no afecta a las conexiones ya establecidas a las que se ha redirigido
DNAT
. Está relacionado porque la entrada conntrack para paquetes UDP contiene la información de redireccionamiento, que se usa además de las reglas de iptables.Verifique las entradas de conntrack existentes con
conntrack -L
y monitoree los eventos de conntrack con elconntrack -E
comando.Utilice el
conntrack -F
comando para borrar las entradas de conntrack. Los nuevos paquetes UDP ya no serán redirigidos.Para gestionar las reglas de iptables como servicio utilice los paquetes
netfilter-persistent
andiptables-persistent
.Es mejor usar
iptables-save
/iptables-restore
comandos en lugar de ejecutar manualmente el archivoiptables
. Es más seguro y atómico.Para administrar las reglas de iptables en un host remoto, use el
iptables-apply
comando, que permite revertir el conjunto de reglas si no se ha confirmado.
Respuesta2
sudo ufw status verbose; sudo iptables -L;
¿Tal vez hay ufw ejecutándose? Intenta parar.
¿Podría contarnos un poco más sobre su sistema, su red y qué tráfico aún se enruta?
1-2 ejemplos están bien incl. la regla de firewall inicial.
EDITAR:
Comprobado por algunos de mis scripts... También lave las cadenas.
sudo iptables -F INPUT
sudo iptables -F FORWARD
sudo iptables -F OUTPUT
Respuesta3
Su script para borrar las reglas de iptables es suficiente para vaciar todas las reglas y establecer la política predeterminada en ACEPTAR. Esto efectivamente desactiva el firewall ya que no hay reglas y todo está permitido.
Sabemos, por sus comentarios, que está enviando paquetes UDP. Puede sentir que las reglas antiguas todavía están activas por un tiempo, especialmente cuando hay un flujo continuo de paquetes UDP atravesando su máquina firewall. Esto se debe principalmente a que UDP no tiene una forma de cerrar la conexión y, por lo tanto, el firewall no sabe cuándo finaliza el flujo activo actual. La única forma es utilizar un tiempo de espera de inactividad para vaciar las "conexiones" activas cuando no se vean más paquetes.
Tienes dos opciones:
- Espere un tiempo antes de volver a intentarlo. Esto requiere detener cualquier "conexión" activa actual. Puede encontrar el tiempo de espera de UDP en
/proc/sys/net/netfilter/nf_conntrack_udp_timeout
. - Utilice
conntrack
la herramienta para eliminar las "conexiones" existentes manualmente.
Tenga en cuenta que el firewall de Linux realiza un seguimiento de los sockets activos para TCP/UDP incluso si UDP es un protocolo sin conexión.