Normalmente, executo minhas regras de iptables sempre que faço login. Do terminal eu digito;
sudo sh firewall.sh
Configurando o computador da minha irmã, eu quero dar a ela alguma proteção básica de firewall. Ela não vai estar logando como admin, apenas uma conta padrão. Como posso fazer um script de firewall ser executado toda vez que ela faz login sem precisar digitar nenhuma senha?
O script que escrevi para o computador da minha irmã contém;
#!/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
Coloquei em sua pasta pessoal como firewall.sh e configurei-a como executável (clique com o botão direito do mouse no arquivo e marque a opção "permitir executar arquivo como programa" na aba de permissões).
Executando este script do terminal como root funciona bem.
Depois de digitar;
sudo sh firewall.sh
Eu digitei no terminal
sudo iptables -L -v
e eu recebo
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
Como posso fazer com que este script seja executado automaticamente no login ou, possivelmente, salvar essas regras permanentemente para o computador de minhas irmãs? Você poderia, por favor, fornecer algum código detalhado, já que minhas primeiras tentativas no método rc.local e no iptables-save não foram muito bem-sucedidas. Em cada reinicialização, todas as cadeias INPUT, OUTPUT e FORWARD são redefinidas para ACCEPT, sem nenhuma política listada quando digito sudo iptables -L -v