¿Debo restaurar las reglas de iptable cada vez que arranque?

18

Cada vez que reinicio, pierdo las reglas de iptables que me tomaron tanto tiempo ingresar. Sé que puedo guardarlos y restaurarlos en el arranque , pero ¿hay alguna forma de guardarlos para siempre? ¿Realmente necesito restaurarlos en el arranque cada vez? ¿Seriamente?

El problema es que tengo una ENORME lista de IP en las que uso un ciclo while para cargarlas. Esto puede llevar más de 10 minutos.

Este es el servidor FTP de mi casa. Es una pequeña máquina virtual con 1 gb de ram y muy poca potencia de procesamiento. Hay tantas IP porque me he rendido en el continente asiático. No necesito que golpeen mi servidor FTP todos los días con fuerza bruta. También bloqueo al gobierno. monitores, rastreadores y spammers.

Este es el ciclo while que uso para cargar en la lista.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done
Capdragon
fuente
Su pregunta es un poco ambigua, cuando dice "guárdelos para siempre", pensé que se refería a un archivo, pero después de leer el resto, parece que lo que realmente quiere decir es que no desea tener que volver a cargarlos manualmente en el arranque cada vez. Además, creo que la cantidad de reglas que deben volver a cargarse será la misma, por lo que todavía tomará un tiempo, pero no tendrá que hacerlo manualmente, siguiendo la respuesta de pankaj.
Jeff Welling
posible duplicado de iptables se reinicia cuando el servidor se reinicia
Eliah Kagan

Respuestas:

21

Primero, cree un archivo con el contenido de iptables-save:

sudo iptables-save > /etc/iptables_rules

Realmente no importa dónde coloque el archivo, todo lo que tiene que hacer es asegurarse de que la siguiente línea se refiera al mismo archivo. A continuación, abra /etc/rc.localy agregue esta línea:

/sbin/iptables-restore < /etc/iptables_rules

A partir de ahora, cada vez que su computadora se encienda o reinicie, iptables cargará las reglas del archivo que especificó.

pankaj sharma
fuente
1
Me pongo -bash: /etc/iptables_rules: Permission denieden el primer comando. Lo cual es extraño usar sudo y todo.
capdragon
55
Tuve que usar sudo sh -c '/sbin/iptables-save > /etc/iptables.save'para evitar el Permission deniederror. Referencia
capdragon
puede crear un archivo en cualquier directorio, no es obligatorio crear un archivo en / etc /
pankaj sharma
8
No recomendaría usar /etc/rc.localpara esto. Se ejecuta más tarde que el resto del inicio de su sistema y potencialmente deja su sistema en un estado sin firewall. Sugeriría colocar este script de una línea en /etc/network/if-up.d/firewall(nuevo archivo). Esto asegura que se ejecutará cada vez que habilite sus interfaces de red.
gertvdijk
2
El error de permisos es normal / esperado. sudo se aplica solo al comando antes de ">", la redirección de archivos se realiza por separado por su shell.
ImaginaryRobots
16
apt-get install iptables-persistent

En la instalación, debe guardar su configuración actual de iptables. De lo contrario, puede guardarlos en estos archivos (dependiendo de v4 o v6) e iptables-persistent los cargará en el arranque :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
Matt Fletcher
fuente
1

Si tiene muchas reglas, también debería considerar usar ipset junto con iptables. Ipset utiliza una tabla de base de datos indexada y es mucho más rápido que iptables cuando busca una dirección para decidir si acepta o rechaza.

http://ipset.netfilter.org/index.html

Bob Brunius
fuente