Come è possibile impostare queste regole di iptables per l'esecuzione all'avvio

19

Di solito eseguo le mie regole di iptables ogni volta che effettuo l'accesso. Dal terminale digito;

sudo sh firewall.sh

Configurando il computer di mia sorella, voglio darle una protezione firewall di base. Non entrerà come amministratore, solo un account standard. Come posso far funzionare uno script firewall ogni volta che accede senza dover digitare una password?

La sceneggiatura che ho scritto per il computer di mia sorella 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

L'ho inserito nella sua cartella home come firewall.sh e lo ho impostato per essere eseguibile (fare clic con il tasto destro del mouse sul file e selezionare l'opzione "consenti l'esecuzione del file come programma" nella scheda delle autorizzazioni).

L'esecuzione di questo script dal terminale come root funziona correttamente.

Dopo aver digitato;

sudo sh firewall.sh

Ho digitato nel terminale

sudo iptables -L -v

e ottengo

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

Come posso avere questo script eseguito automaticamente al login, o forse salvare queste regole in modo permanente per il mio computer sorelle? Potresti fornire qualche codice dettagliato, dato che i miei primi tentativi con il metodo rc.local e iptables-save non hanno avuto molto successo. Ad ogni riavvio, tutte le catene INPUT, OUTPUT e FORWARD vengono reimpostate su ACCEPT, senza criteri elencati quando digito sudo iptables -L -v

    
posta Mikelane 21.03.2013 - 05:14

2 risposte

32

Potresti voler usare il pacchetto iptables-persistent piuttosto che fare casino con gli script di avvio. Innanzitutto, esegui lo script per configurare le regole del firewall. In secondo luogo, esegui sudo apt-get install iptables-persistent e segui le istruzioni. Quando chiede di salvare le regole correnti, premi "Sì" in entrambi i prompt. Ora, al riavvio, le regole di iptables verranno ripristinate.

NOTA: se cambi le regole dopo questo, dovrai eseguire i seguenti comandi dopo le modifiche:

Per salvare le tue regole IPv4 iptables: sudo su -c 'iptables-save > /etc/iptables/rules.v4'

Per salvare le tue regole ip6tables IPv6: sudo su -c 'ip6tables-save > /etc/iptables/rules.v6'

    
risposta data Thomas Ward 21.03.2013 - 05:18
3

Supponendo di avere le regole del firewall in:

/etc/iptables.up.rules

Forse la risposta più ovvia sarà creare un file chiamato iptables in:

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

con il contenuto:

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

e rendilo eseguibile usando

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

In questo modo, prima che la tua interfaccia di rete sia attivata, le tue regole verranno caricate.

    
risposta data Antonio J. de Oliveira 13.12.2016 - 12:43

Leggi altre domande sui tag