Normalmente ejecuto mis reglas de iptables cada vez que inicio sesión. Desde la terminal escribo;
sudo sh firewall.sh
Configurando 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 escribosudo iptables -L -v
ip6tables
reglas si algún día obtienes conectividad v6, ya que IPv6 es manejado porip6tables
y noiptables
.Respuestas:
Es posible que desee utilizar el
iptables-persistent
paquete en lugar de meterse con sus scripts de arranque. Primero, ejecute su script para configurar las reglas del firewall. En segundo lugar, corresudo apt-get install iptables-persistent
y sigue 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á realizar 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'
fuente
sudo dpkg-reconfigure iptables-persistent
después de cambiar una regla?rules.v4
orules.v6
manualmente para que se indexen en el próximo inicio, o inmediatamente si ejecutaiptables-restore < /etc/iptables/rules.v4
o)ip6tables-restore < /etc/iptables/rules.v6
Suponiendo que tiene las reglas de firewall en:
Quizás la respuesta más obvia será crear un archivo llamado iptables en:
con el contenido:
y hacerlo ejecutable usando
De esta manera, antes de que se active su interfaz de red, se cargarán sus reglas.
fuente