¿Cómo puedo hacer que un conjunto específico de reglas de iptables sea permanente?

42

¿Existe una "mejor práctica" o estándar para hacer que algunas reglas de iptables sean permanentes? Quiero decir: ¿se aplica automáticamente al reiniciar el sistema?

Estoy usando un VPS con Ubuntu Server 10.04 LTS (Lucid Lynx).

Gracias.

BIG EDIT: no quiero que NINGUNA regla persista (como lo iptables-persistenthace el paquete). Solo quiero que se vuelva a cargar mi propio conjunto específico ... si eventualmente se agregan otras reglas ejecutando iptables, estas deberían descartarse ...

J. Bruni
fuente

Respuestas:

52

El método más simple es usar iptables-save e iptables-restore para guardar las reglas de iptables actualmente definidas en un archivo y (re) cargarlas (por ejemplo, al reiniciar).

Entonces, por ejemplo, correría

sudo iptables-save | sudo tee /etc/iptables.conf

para guardar sus reglas actuales de iptables /etc/iptables.confy luego insertar estas líneas en /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf
Riccardo Murri
fuente
3
+1 Tu respuesta es perfecta para mi pregunta original. También me hizo darme cuenta de lo que realmente quiero, así que tuve que cambiar la pregunta de "¿Cómo puedo hacer que las reglas de iptables sean permanentes?" a "¿Cómo puedo hacer que un conjunto específico de reglas de iptables sea permanente?"
J. Bruni
Si puede, por favor, haga una pequeña edición de su respuesta para reflejar el cambio en la pregunta ... ¡Estaré encantado de aceptarlo! Necesito usar iptables-saveuna vez y recargar siempre (iptables-restore en /etc/rc.local suena bien).
J. Bruni
1
Si está obteniendo permission deniedcuando intenta usar >, esta respuesta de desbordamiento de pila será útil.
David Tuite
2
Usar en sudo sh -c "iptables-save > /etc/iptables.conf"lugar desudo iptables-save > /etc/iptables.conf
Rajat Gupta
31

Una actualización rápida de esto, ya que podría estar usando 12.04 ahora y las cosas están mejor.

El iptables-persistentpaquete ahora resuelve este problema. Instalar,

sudo apt-get install iptables-persistent

Las reglas definidas cuando se instala el paquete se guardan y se usan en cada arranque posterior. Las nuevas reglas cargadas se descartan al reiniciar.

El archivo de configuración si necesita cambiarlos (una vez iptables-persistentinstalado) es /etc/iptables/rules.v4o /etc/iptables/rules.v6para ipv4 e ipv6 iptables respectivamente.

usuario172020
fuente
Si realiza una edición /etc/iptables/rules.v4, ¿cómo se aplica [oficialmente]? Actualmente estoy haciendosudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky
24

Mejor que /etc/rc.localagregar una línea /etc/network/interfacesdespués de guardar las reglas de iptable, como esta

post-up iptables-restore < /etc/iptables.up.rules

o es lo mismo poner el archivo dentro de /etc/network/if-down.d/o /etc/network/if-post-down.d/o /etc/network/if-pre-up.d/o /etc/network/if-up.d/.

Kreker
fuente
1
@Kreker: por favor aclaren, ¿cómo es mejor su enfoque que ejecutar un script de restauración rc.local? ¿El otro enfoque no funciona en algunos casos?
Rajat Gupta
2
Agregarlo a la configuración de red hace que se vuelva a cargar después de ejecutar el comando "reinicio de red de servicio". No se limita a los inicios del sistema.
K. Darien Freeheart
44
¿Por qué post-up iptables-restore cuando una interfaz se cae?
alphadogg