it-swarm-es.com

¿Cómo puedo configurar estas reglas de iptables para que se ejecuten al inicio?

Normalmente ejecuto mis reglas de iptables cada vez que inicio sesión. Desde la terminal escribo;

Sudo sh firewall.sh

Al configurar la computadora de mi hermana, quiero darle una protección básica de firewall. Ella no iniciará sesión como administrador, solo una cuenta estándar. ¿Cómo puedo hacer que se ejecute un script de firewall cada vez que inicia sesión sin que tenga que escribir ninguna contraseña?

El guión que escribí para la computadora de mi hermana contiene;

#!/bin/sh

modprobe ip_conntrack
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -I OUTPUT -p tcp --dport 80 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p udp --dport 53 --sport 32768:61000 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 443 --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -I OUTPUT -p icmp -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -p udp -j DROP
iptables -I INPUT -p tcp -m tcp --syn -j DROP
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Lo coloqué en su carpeta de inicio como firewall.sh y lo configuré para que sea ejecutable (haga clic con el botón derecho en el archivo y marque la opción "permitir ejecutar archivo como programa" en la pestaña de permisos).

Ejecutar este script desde la terminal como root funciona bien.

Después de escribir;

Sudo sh firewall.sh

Escribí en la terminal

Sudo iptables -L -v

y consigo

Chain INPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 DROP       tcp  --  any    any     anywhere             anywhere             tcpflags: FIN,SYN,RST,ACK/SYN
    0     0 DROP       udp  --  any    any     anywhere             anywhere            
    0     0 DROP       icmp --  any    any     anywhere             anywhere            

Chain FORWARD (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  any    any     anywhere             anywhere            
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:https
    0     0 ACCEPT     udp  --  any    any     anywhere             anywhere             udp spts:32768:61000 dpt:domain
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp spts:32768:61000 dpt:http
    0     0 ACCEPT     all  --  any    lo      anywhere             anywhere

¿Cómo puedo hacer que este script se ejecute automáticamente al iniciar sesión, o posiblemente guardar estas reglas permanentemente para la computadora de mi hermana? ¿Podría proporcionar algún código detallado, ya que mis primeros intentos en el método rc.local y iptables-save no han tenido mucho éxito. En cada reinicio, todas las cadenas INPUT, OUTPUT y FORWARD se restablecen a ACCEPT, sin políticas enumeradas cuando escribo Sudo iptables -L -v

20
Mikelane

Es posible que desee utilizar el paquete iptables-persistent en lugar de meterse con sus scripts de arranque. Primero, ejecute su script para configurar las reglas del firewall. En segundo lugar, ejecute Sudo apt-get install iptables-persistent y siga las indicaciones. Cuando solicite guardar las reglas actuales, presione "Sí" en ambas indicaciones. Ahora, al reiniciar, sus reglas de iptables serán restauradas.


NOTA: Si cambia sus reglas después de esto, deberá hacer los siguientes comandos después de los cambios:

Para guardar las reglas de iptables de IPv4: Sudo su -c 'iptables-save > /etc/iptables/rules.v4'

Para guardar sus reglas de IPv6 ip6tables: Sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'

36
Thomas Ward

Suponiendo que tiene las reglas de firewall en:

/etc/iptables.up.rules

Quizás la respuesta más obvia será crear un archivo llamado iptables en:

/etc/network/if-pre-up.d

con el contenido:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

y hacerlo ejecutable usando

Sudo chmod +x /etc/network/if-pre-up.d/iptables

De esta manera, antes de que se active su interfaz de red, se cargarán sus reglas.

2