Normalmente, executo minhas regras do iptables sempre que faço login. Do terminal digito;
sudo sh firewall.sh
Configurando o computador da minha irmã, quero oferecer a ela alguma proteção básica de firewall. Ela não fará login como administrador, apenas uma conta padrão. Como posso executar um script de firewall toda vez que ela efetua login sem que ela precise digitar qualquer 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-o em sua pasta pessoal como firewall.sh e o configurei para ser executável (clique com o botão direito do mouse no arquivo e marque a opção "permitir a execução de arquivo como programa" na guia permissões).
A execução desse script a partir 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 esse script seja executado automaticamente no login ou, possivelmente, salve essas regras permanentemente no computador da minha irmã? Você poderia fornecer algum código detalhado, pois 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 eu digitosudo iptables -L -v
ip6tables
regras para obter a conectividade v6 um dia, pois o IPv6 é tratadoip6tables
e nãoiptables
.Respostas:
Você pode usar o
iptables-persistent
pacote em vez de mexer nos scripts de inicialização. Primeiro, execute seu script para configurar as regras do firewall. Em segundo lugar, executesudo apt-get install iptables-persistent
e siga as instruções. Quando solicitar salvar as regras atuais, pressione "Sim" nos dois prompts. Agora, nas reinicializações, suas regras do iptables serão restauradas.NOTA: Se você alterar suas regras após isso, precisará executar o (s) seguinte (s) comando (s) após as alterações:
Para salvar suas regras de tabelas de ipv4:
sudo su -c 'iptables-save > /etc/iptables/rules.v4'
Para salvar suas regras de tabelas IPv6 ip6:
sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'
fonte
sudo dpkg-reconfigure iptables-persistent
depois de alterar uma regra.rules.v4
ourules.v6
manualmente) para que eles sejam indexados na próxima inicialização ou imediatamente se você executariptables-restore < /etc/iptables/rules.v4
ouip6tables-restore < /etc/iptables/rules.v6
Supondo que você tenha as regras de firewall em:
Talvez a resposta mais óbvia seja criar um arquivo chamado iptables em:
com o conteúdo:
e torná-lo executável usando
Dessa forma, antes que sua interface de rede seja ativada, suas regras serão carregadas.
fonte