Avanti Indietro Indice

8. Impostazione del filtraggio IP (IPCHAINS)

Linux ipchains è la riscrittura del codice IPv4 di filtraggio di Linux e di ipfwadm, il quale a sua volta è una riscrittura di ipfw della BSD, credo. È richiesto per l'amministrazione dei filtri dei pacchetti IP nei kernel Linux versione 2.1.102 e successivi.

Il vecchio codice non gestisce i frammenti, ha contatori 32-bit (almeno su Intel), non consente la specificazione di protocolli che non siano TCP, UDP o ICMP, non può effettuare grossi cambiamenti atomicamente, non è possibile specificare regole inverse, ha alcune bizzarrie, e può essere difficile da utilizzare (incline a far commettere errori all'utente). Così almeno secondo l'autore.

Non mi accingo ad approfondire come gestire un firewall con IPChains in quanto esiste un'ECCELLENTE!! HOWTO all'indirizzo http://www.rustcorp.com/linux/ipchains/HOWTO.html.

Si lavora con le catene per nome. Si parte con tre catene predefinite input, output e forward che non possono essere rimosse. Si possono anche creare proprie catene. Le regole, da questo sistema, possono essere aggiunte e cancellate.

Le operazioni per operare su intere catene sono:

  1. Crea una nuova catena (-N).
  2. Cancella una catena vuota (-X).
  3. Cambia la tattica di una delle catene predefinite (-P).
  4. Elenca le regole di una delle catene (-L).
  5. Svuota una catena delle sue regole (-F).
  6. Azzera i contatori dei pacchetti e dei byte di tutte le regole di una catena (-Z).

Esistono inoltre diversi modi per manipolare le regole di una catena:

  1. Appendi una nuova regola ad una catena (-A).
  2. Inserisci una nuova regola in una determinata posizione della catena (-I).
  3. Sostituisci una regola presente in una determinata posizione di una catena (-R).
  4. Cancella una regola presente in una determinata posizione della catena (-D).
  5. Cancella la prima regola di una catena (-D).

Ci sono anche alcune operazioni riguardanti il masquerading, incluse in ipchains in quanto è una buona collocazione:

  1. Elenca le connessioni correntemente mascherate (-M -L).
  2. Imposta i timeout del masquerading (-M -S).

Esistono alcuni problemi di tempo riguardanti la modifica delle regole del firewall.

Se non si presta particolare attenzione, si potrebbero far passare dei pacchetti mentre si è nel bel mezzo delle modifiche.

     # ipchains -I input 1 -j DENY
     # ipchains -I output 1 -j DENY
     # ipchains -I forward 1 -j DENY

... effettua le modifiche ...

     # ipchains -D input 1
     # ipchains -D output 1
     # ipchains -D forward 1
     # 

Questa soluzione scarta tutti i pacchetti per tutta la durata delle modifiche.

Segue un duplicato, adattato per IPChains, delle regole precedenti.

#!/bin/sh
#
# rc.firewall
#
## Svuota tutto, cominciamo da zero
  /sbin/ipchains -F input
  /sbin/ipchains -F output
  /sbin/ipchains -F forward

## Redirezione, necessaria per il proxy HTTP trasparente
  #$IPCHAINS  -A input -p tcp -s 192.1.2.0/24 -d 0.0.0.0/0 80 -j REDIRECT 8080

## Creazione della propria catena
  /sbin/ipchains -N my-chain
  # Consentiamo alle email di giungere al server
  /sbin/ipchains -A my-chain -s 0.0.0.0/0 smtp -d 192.1.2.10 1024:-j ACCEPT
  # Consentiamo connessioni email verso server email esterni
  /sbin/ipchains -A my-chain -s 192.1.2.10 -d 0.0.0.0/0 smtp -j ACCEPT
  # Consentiamo connessioni Web dirette al proprio server Web
  /sbin/ipchains -A my-chain -s 0.0.0.0/0 www -d 192.1.2.11 1024: -j ACCEPT
  # Consentiamo connessioni Web dirette verso server Web esterni
  /sbin/ipchains -A my-chain -s 192.1.2.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT
  # Consentiamo traffico DNS
  /sbin/ipchains -A my-chain -p UDP -s 0.0.0.0/0 dns -d 192.1.2.0/24 -j ACCEPT

## Se si utilizza il masquerading
  # Non mascherare il traffico interno-interno 
  /sbin/ipchains -A forward -s 192.1.2.0/24 -d 192.1.2.0/24 -j ACCEPT
  # Non mascherare direttamente l'interfaccia esterna 
  /sbin/ipchains -A forward -s 24.94.1.0/24 -d 0.0.0.0/0 -j ACCEPT
  # Maschera tutti gli IP interni diretti all'esterno 
  /sbin/ipchains -A forward -s 192.1.2.0/24 -d 0.0.0.0/0 -j MASQ

## Scarta qualsiasi altra cosa
  /sbin/ipchains -P my-chain input DENY

Non ci si fermi qui. Questo non è un gran firewall e sono sicuro che si vorranno fornire altri servizi. Ancora, si legga l'IPCHAINS-HOWTO.


Avanti Indietro Indice