Domande? Problemi?

Iscriviti al Google group:

Il firewall

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

Introduzione

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

variabili disponibili in fw.conf

INT lista dei device ‘interni’ per il traffico entrante da questi device
ha come politica di defaul ACCEPT
EXT lista dei device ‘esterni’ per il traffico entrante da questi device
ha come politica di defaul DROP

LAN IPs e network che dovranno essere mascherati (nattati)

FORWARD
Abilita il forward dei pacchetti tramite /proc/sys/net/ipv4/ip_forwad if this variable is not set to 0. Ivviamente il forward andrà in ogni caso esplicitamente accettato
IP_MODE
Può essere static e dynamic. Determina se la modalità sarà masquerading (dynamic) o natting (static) Se si sceglie statico occorre anche definire IP_EXT.
LOG if this value is set to 1, logging will take
place before dropping packets. You can “color parse” log fil with fwparse(1). 2 different labels are used to mark packets dropped in INPUT chain or FORWARD chain.
INPUT_CHAINS
List of INPUT chains that should be created/destroyed with start/stop
FWD_CHAINS
List of in the FORWARD chains that should be created/destroyed with start/stop
TCP_DPORTS
List of tcp ports that should be opened from the external interface
UDP_DPORTS
List of udp ports that should be opened from the external interface
PROXY_REDIR_PORT

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.

principi funzionamento fw.add

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:

Configurazione di pyrewall per FileServer ISI

../../_images/rete-srvisi.png

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"
Nota: Si è commentata la linea relativa alla seconda interfaccia, in
quanto non presente.

Per appplicare le modifiche appena effettuate, sarà necessario riavviare pyrewall:

argo:~# pyrewall restart

Configurazione di pyrewall per un Firewall ISI

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