BSD-FAQ-it
Indietro | Capitolo 10. Il Firewalling e FreeBSD | Avanti

# 10.8. Impostazioni del Kernel e modifiche al file /etc/rc.conf

Per abilitare le opzioni di firewalling e le funzionalità di NAT/PAT, e Dummynet il Kernel dovrà essere ricompilato con le seguenti opzioni:

    # firewalling
    options IPFIREWALL # firewall
    options IPFIREWALL_VERBOSE # abilita il logging
    options IPFIREWALL_VERBOSE_LIMIT=5    # valore che limita il logging
    #options IPFIREWALL_DEFAULT_TO_ACCEPT # autorizza tutto per default
    options RANDOM_IP_ID # questa opzione limita quello che un
                         # osservatore remoto riesce ad osservare per
                         # determinare il rate del packet generation
    options IPDIVERT     # divert sockets
    options DUMMYNET                      # contabilità del traffico

Le opzioni di cui sopra vanno inserite di seguito alla sezione pseudo-device, per maggiori dettagli è bene consultare il file /usr/src/sys/i386/conf/LINT. Nel caso specifico, procediamo con l'abilitazione del firewalling e rendiamo possibile il logging attraverso il demone syslogd, si prevede anche l'attivazione del demone che si occupa di gestire il NAT (Network Address Translation) nonchè il sistema di limitazione e della contabilità del traffico. Una definizione molto importante per un sistema che deve svolgere il compito di firewall è quella di impostare la politica a deny any any (blocca tutto).

## 10.8.1. Attiviamo il NAT (Network Address Translation)

Per attivare il demone natd ed il sistema di firewalling dobbiamo procedere ad alcune modifiche del file /etc/rc.conf

    # impostazioni di rete
    defaultrouter="200.201.202.254" # il nostro default gateway
    gateway_enable="YES"  # abilita l'IP forwarding
    hostname="pluto.dominio.com"
    ifconfig_xl0="inet 200.201.202.140 netmask 255.255.255.248"
    ifconfig_xl1="inet 192.168.0.254 netmask 255.255.255.0"
    #
    # impostazione del firewall ed del nat
    firewall_enable="YES"          # abilita firewalling
    firewall_type="OPEN"           # script standard /etc/rc.firewall
    natd_enable="YES"              # abilita il demone natd
    natd_interface="xl0"           # interfaccia che esegue il forwarding
                                   # si tratta dell'interfaccia di outside
                                   # ovvero quella collegata al modem
    natd_flags="-f /etc/natd.conf" # file delle configurazioni addizionali per il natd

Le modifiche che abbiamo apportato al file di override dell'init di FreeBSD (/etc/rc.conf) possono essere suddivise logicamente in due parti:

1. La prima parte è quella espressamente dedicata al networking: viene definito il default gateway, si abilitata la regola che consente il packetforwarding e vengono impostate le interfaccie di rete di cui il sitema si compone;

2. la seconda parte riguarda l'abilitazione vera e propria del firewall, l'abilitazione del demone natd, la definizione dell'interfaccia di rete che eseguirà la traduzione degli indirizzi con la definizione del file che conterrà le impostazioni principali per il demone natd.

Nel nostro caso stiamo trattando di un sistema con una duplice interfaccia di rete (dual-homed host), dove l'interfaccia xl0 fa parte della rete pubblica internet (outside) mentre l'interfaccia xl1 fa parte di una rete privata (inside). L'interfaccia pubblica è quella che traduce gli indirizzi e le porte eseguendo il NAT (Network Address Translation) o il PAT (Port Address Translation). Per definire le regole che verranno utilizzate dal demone natd e per dare corso alla traduzione degli indirizzi e delle porte, dovremo creare il file di configurazione del natd /etc/natd.conf

    interface xl0
    use_sockets yes
    same_ports yes

Nel file viene definita, nel nostro caso viene ribadita, l'interfaccia di rete che eseguirà il NAT (outside), le istruzioni use_socket yes e same_ports yes sono fondamentali per il corretto funzionamento di alcuni protocolli applicativi (layer7) come l'FTP (File Transfer Protocol) e l'IRC (Internet relay chat).

Dopo aver compilato il Kernel, apportato le modifiche al file /etc/rc.conf e aver creato il file /etc/natd.conf, con il quale abbiamo definito le regole del nat, sarà finalmente possibile riavviare la nostra macchina FreeBSD. Al successivo riavvio il sistema funzionerà come firewall ed eseguirà la tecnica del NAT, le impostazioni del sistema vengono caricate automaticamente dal file /etc/rc.firewall. In queste condizioni operative la base di protezione è nulla. Lo script /etc/rc.firewall consente accesso a tutti i servizi che sono attivi sulla macchina eseguendo il solo demone natd.

## 10.8.2. Ridirezione delle porte (PAT)

Normalmente l'installazione di un firewall può includere una zona ulteriore denominata DMZ (Zona demilitarizzata), una terza interfaccia di rete può essere tranquillamente installata sul firewall, questa interfaccia viene collegata con una rete LAN dove verranno installati tutti i servers che saranno eventualmente accessibili al pubblico. Uno di questi server può essere, ad esempio, un mail-relay. Questo sistema accetta tutta la posta in entrata prima che la stessa raggiunga un mailserver centrale come Microsoft Exchange. Molte Corporation utilizzano dei mail-relay che eseguono lo scanning dei contenuti della posta elettronica, filtrano e validano tutti i messaggi in entrata ed in uscita ricorrendo a dei prodotti come amavisd-new, o a sistemi antivirus o per finire a sistemi antispam. Esistono due tipi diversi di approccio al sistema della ridirezione, verifichiamo la semplice ridirezione delle porte che prende anche il nome di PAT (Port Address Translation). Assumiamo che il network di DMZ utilizzi lo spazio di indirizzamento 10.0.0.0 con una network di classe C (netmask 255.255.255.0), l'interfaccia di DMZ del firewall è 10.0.0.1 e la macchina mailrelay è l a 10.0.0.2. La ridirezione della porta viene effettuata modificando il file /etc/rc.conf

    natd_flags=""

dovrà essere modificato con

    natd_flags="-redirect_port tcp 10.0.0.2:25 25"

In questo modo verrà ridirezionata la porta 25 dall'interfaccia di rete che esegue in nat verso la porta 25 della macchina mail-relay alla quale abbiamo assegnato l'indirizzo IP 10.0.0.2.

Riferimenti: http://www.jimi.dk/freebsd/NAT-Firewall.php

## 10.8.3. Ridirezione degli indirizzi (NAT)

Il secondo sistema è quello che riguarda la ridirezione del traffico da un'indirizzo IP della rete di outside ad un indirizzo IP della rete di DMZ, questa tecnica prende anche il nome di tecnica del NAT (Network Address Translation) o NAT statico

    natd_flags=""

dovrà essere cambiato in

    natd_flags="-redirect_address 10.0.0.2 200.201.202.140"

dove l'indirizzo IP 200.201.202.140 è l'indirizzo dell'interfaccia che esegue il NAT o qualsiasi indirizzo pubblico disponibile sulla interfaccia di rete che esegue il NAT (interfaccia di outside). Molte opzioni avanzate e facilities sono disponibili consultando la man di natd(8)

Riferimenti: http://www.jimi.dk/freebsd/NAT-Firewall.php

## 10.8.4. Limitazioni di banda (DUMMYNET)

FreeBSD viene fornito con un sistema di limitazione e di gestione del traffico che viene incluso nel kernel che prende il nome di DUMMYNET. Dummynet in origine era stato pensato dagli sviluppatori come uno strumento di test per il controllo della congestione del traffico TCP ma poi si èy rilevato utile in altri contesti. Dummynet può essere utilizzato per abbassare la velocità di un link internet molto veloce ed evitare quindi possibili attacchi di tipo DoS (Denial of Service). Assumiamo che necessitiamo di molta banda per eseguire il download di programmi dal server nella rete 1.1.1.1. Inseriamo nel file di configurazione `/etc/rc.firewall` le seguenti righe

in prima istanza costruiamo la pipe

    add pipe 1 ip from any to 1.1.1.0/24

poi configuriamo la pipe

    pipe 1 config bw 256Kbit/s

Questa impostazione limita la banda per il network 1.1.1.0/24 a 256 Kbit/s. E' molto realistico limitare la banda disponibile per gestire tutte le transazioni relative al traffico e-mail: mail di dimensioni molto grandi possono saturare interamente la banda disponibile relativa alla connessione internet

in prima istanza costruiamo la pipe

    add pipe 1 ip from any to 10.0.0.2

poi configuriamo la pipe

    pipe 1 config bw 256Kbit/s

Questa impostazione limita la banda a 256 Kbit/s nelle connessioni verso l'indirizzo 10.0.0.2, altre informazioni relative ad altr e features, come il packet delay possono essere trovate nelle man pages ipfw(8) oppure dummynet(4)

Riferimenti: http://www.jimi.dk/freebsd/NAT-Firewall.php

Indietro | Partenza | Avanti
Il demone natd ed il firewalling avanzato | Risali | Realizzare un firewall dual-homed