Esiste una esperienza di laboratorio per la configurazione base del firewall ed una sul Dnat - Destination NAT
Nota
dalla versione lenny di argo il comando firewall è stato sostituito dal comando pyrewall, che ha i medesimi file di configurazione ma è implementato in Python
Ricordo che il firewalling in un sistema Linux è appannaggio del kernel. Possono essere usati molti programmi per configurare il kernel. Qui illustro il comando pyrewall sviluppato specificamente per la distribuzione Argolinux da una idea di una script analoga nella distribuzione gibraltar.
Il comando pyrewall legge due file di configurazione:
fw.conf: | per le impostazioni di variabili |
---|---|
fw.add: | per i comandi |
nel primo è sufficiente impostare alcune variabili ed avremo una configurazione sicura nella stragrande maggioranza delle situazioni
LAN IPs e network che dovranno essere mascherati (nattati)
Porta alla quale redirigere il traffico che cerca di passare dalla porta 80. normalmente è 3128 o 8128 a seconda che si usi squid o dansguardian. Questo è utile solo in caso di proxy trasparente (non raccomandato nelle scuole).
Nel caso di proxy non trasparente non è sufficiente a fare funzionare il proxy ma è sufficiente a bloccare il traffico sulla 80.
Il principio di funzionamento di fw.add è invece particolarmente adatto quando ci siano (molte) configurazioni aggiuntive, combinazioni di ip e porte che vogliamo filtrare o nattare. In questo caso pyrewall permette sintassi molto succinte per un utilizzo efficace di un programma che fa il prodotto cartesiano [1] delle variabili.
_config_firewall_pdc:
caso firewall separato dal server
Presupponendo che la rete sia protetta a monte da un firewall e che si stia utilizzando una sola interfaccia di rete eth0, impostiamo l’interfaccia eth0 come interfaccia interna, modificando /etc/argo/fw.conf come segue:
INT="eth0"
#EXT="eth1"
TCP_DPORTS="22"
Per appplicare le modifiche appena effettuate, sarà necessario riavviare pyrewall:
argo:~# pyrewall restart
Presupponendo che il Firewall ISI abbia due interfacce di rete eth0 ed eth1, eth1 collegata direttamente al gateway ADSL ed eth1 l’altra ad uno switch, in contatto dunque con il resto della LAN interna, imposteremo il firewall affinchè consideri l’interfaccia eth0 interna e l’interfaccia eth1 esterna, modificando /etc/argo/fw.conf come segue:
INT="eth0"
EXT="eth1"
TCP_DPORTS="22"
Nota: In questo caso la direttiva “EXT” è ovviamente necessaria.
Per appplicare le modifiche appena effettuate, sarà necessario riavviare pyrewall:
argo:~# pyrewall restart
[1] | prodotto cartesiano di due insiemi A e B è l’insieme delle coppie ordinate (a,b) con a in A e b in B. Si pensi a questo esempio dove il comando mex opera il prodotto cartesiano fra l’insieme SRC e l’insieme DST: SRC="192.168.1.1 192.168.1.2"
DST="10.10.1.1 10.10.1.2"
mex iptables -A FORAWRD -s $SRC -d $DST -j ACCEPT
iptables -A FORAWRD -s 192.168.1.1 -d 10.10.1.1 -j ACCEPT
iptables -A FORAWRD -s 192.168.1.2 -d 10.10.1.1 -j ACCEPT
iptables -A FORAWRD -s 192.168.1.1 -d 10.10.1.2 -j ACCEPT
iptables -A FORAWRD -s 192.168.1.2 -d 10.10.1.2 -j ACCEPT
|