Filtraggio del traffico di rete

Pagina creata da Rebecca Antonini
 
CONTINUA A LEGGERE
Laboratorio di Amministrazione di Sistemi L-A

       Filtraggio del traffico di rete

                  Si ringraziano sentitamente:

 Angelo Neri (CINECA) per il materiale sulla classificazione, le
     architetture ed i principi di funzionamento dei firewall

Fabio Bucciarelli (DEIS – Università di Bologna) per il materiale
    sulla struttura e la configurazione del packet filter di Linux

                         Firewall

• Il termine firewall usato
  nell'informatica non deriva da
  "muro di fuoco" ma da "muro
  antincendio". Il suo scopo è quindi
  impedire che un incendio si
  propaghi da una parte all'altra del
  muro.
Firewall
• Una immagine che rispecchia meglio la realtà del
  firewall è la cinta muraria di una città medievale.
  Naturalmente una città non può non avere contatti con
  l'esterno e la cinta muraria è fornita di porte con
  guardie che verificano se chi prova ad entrare o ad
  uscire è autorizzato oppure no.
• Il firewall può quindi essere una buona difesa contro
  una banda di briganti che provano ad entrare
  palesemente armati in città ma non può nulla contro i
  furti effettuati dagli abitanti stessi della città se non al
  più controllare che nessuno esca col maltolto (se le
  guardie sono state istruite in tal modo e sono più abili
  nel perquisire i passanti di quanto questi siano capaci di
  nascondere la refurtiva).

                        Firewall

• Il firewall è quindi l'insieme delle
  difese perimetrali, siano esse
  realizzate in hardware od in
  software, con uno o più dispositivi.
Classificazione dei firewall

                 Packet filters
• Un packet filter è un programma od un
  dispositivo che controlla gli accessi ad una rete
  analizzando i pacchetti in ingresso ed in uscita
  e scegliendo quali bloccare e quali far passare
  in base agli indirizzi IP di provenienza e di
  destinazione. Nel contesto di una rete TCP/IP
  vengono controllati anche le porte tcp/udp ed i
  vari flag SYN, FYN, ACK, ecc.
• Altro parametro importante su cui si basano le
  decisioni di un packet filter e’ l’ interfaccia sui
  cui il pacchetto transita e la direzione
  (ingresso o uscita)
Packet filters
• Un packet filter può essere stateful o stateless ma
  praticamente tutte le implementazioni di packet filters
  stateful offrono anche un qualche tipo di protocol
  inspection per cui sono dei multilayer stateful firewall.
  Per questo motivo col termine "packet filter" ci si
  riferisce di solito a stateless packet filter.

• Un packet filter stateless prende le decisioni pacchetto
  per pacchetto analizzando solo le info contenute nel
  pacchetto stesso

• Un packet filter statefull utilizza anche informazioni di
  stato della “connessione” o comunque comunicazione di
  cui il pacchetto fa parte

                    Packet filters
• Il vantaggio principale del packet filtering
  rispetto alle altre tecniche di filtraggio è che
  questa è la tecnica più semplice da
  implementare, richiede meno risorse hardware
  ed è quindi la tecnica più economica e per
  questo motivo è anche la più diffusa.
• Si può fare con praticamente qualunque router
  e con la maggior parte dei sistemi operativi:
   ƒ Linux
   ƒ Windows da NT in poi
   ƒ Macintosh da OS X
Packet filters
• Un packet filter analizza di ogni
  pacchetto che passa:

  ƒ   Interfaccia su cui passano i pacchetti.
  ƒ   Protocollo IP. Per esempio TCP, UDP, ICMP, ESP.
  ƒ   Indirizzo sorgente.
  ƒ   Indirizzo di destinazione.
  ƒ   Porta sorgente. Solo per i pacchetti TCP o UDP.
  ƒ   Porta di destinazione.
  ƒ   Flag di connessione. Per esempio SYN, ACK, RST,
      FYN, ecc
  ƒ Direzione

                  Packet filters
• Un packet filter compara il valore dei campi IP
  con quelli delle regole con cui e' stato
  configurato ed in base a queste il pacchetto
  passa oppure no.
• La configurazione del packet filter è
  quindi fondamentale.
• Comunque anche con la migliore
  configurazione il packet filter non verifica il
  contenuto dei pacchetti per cui non può
  bloccare virus ed ha problemi con protocolli
  che negoziano le porte, come ad esempio FTP
  attivo.
Packet filters

  • La regola d'oro per la
    configurazione di un filtro è
    permettere ciò che deve
    passare e negare tutto il resto.
    Purtroppo nella vita reale non
    sempre è facile capire cosa si deve
    permettere e cosa negare.

          Packet filters: cosa filtrare
• Nella RFC2827 ci sono dei consigli
  interessanti, in particolare:
  ƒ Traffico in ingresso:
     9 Bloccare i pacchetti destinati a servizi che non si vogliono
       offrire su internet.
     9 Bloccare gli indirizzi con source address illegali, di
       broadcast, di loopback e riservati.
     9 Se non si utilizza il multicast bloccare gli indirizzi
       multicast (224.0.0.0/4)
     9 Bloccare ICMP broadcast.
     9 Bloccare echo UDP.
     9 Bloccare i pacchetti provenienti dall'esterno con indirizzo
       sorgente appartenente alla nostra rete.
Packet filters: cosa filtrare

• I source address da bloccare sono
  quelli:
  ƒ illegali (es. 0.0.0.0/8)
  ƒ di broadcast (p.e. 255.255.255.255/32)
  ƒ riservati; almeno quelli della rfc1918:
    910.0.0.0/8
    9172.16.0.0/12
    9192.168.0.0/16
  ƒ di loopback: 127.0.0.0/8

        Packet filters: cosa filtrare

  • Traffico in uscita:
  • Bloccare il traffico con un source
    address invalido. E' facile se la
    nostra rete è una foglia,
    praticamente impossibile
    altrimenti.
Packet filters
• Caratteristiche e problemi di un packet filter stateless
    ƒ Per permettere una comunicazione vanno esplicitamente permessi
      i pacchetti in entrambe le direzioni
    ƒ Ad es. dal mio PC voglio poter accedere a servizi esterni (ad
      esempio navigare su Web) ma in generale NON voglio che
      dall’esterno si possa accedere ad alcunchè sul mio PC (sono solo
      “cliente” della rete). Posso lasciar passare tutti i pacchetti in uscita
      e bloccare tutti pacchetti in ingresso tranne le risposte alle mie
      richieste ma .. Come distinguere le risposte a richieste mie da
      tentativi di accesso esterno al mio PC ?
        9 Sui servizio TCP based ci possiamo basare sui Flag TCP: per iniziare
          una connessione viene inviato un pacchetto con SYN=1 ma ACK=0,
          posso bloccare tutti questi e ammettere ogni altra combinazione
          (SYN=0 oppure SYN=1 e ACK0). Tali combinazioni vengono spesso
          indicate con “established”. E’ chiaramente una approssimazione che
          però normalmente funzione nel senso che non consente dall’esterno di
          stabilire una valida connessione TCP
        9 Sui servizi UDP non ho modo di

                           Packet filters
        9 Sui servizi UDP non ho modo di distinguerlo, se devo usare dei servizi
          UDP oltre il packet filter devo sostanzialmente accettare qualunque
          pacchetto UDP di risposta almeno dagli host (IP) e servizi (port) che
          voglio utilizzare
            ™ Ad esempio per utilizare un server DNS (server A porta 53) devo
               consentire tutti i pacchetti UDP in ingresso che hanno come from
               (server A, porta 53). Il problema e’ che e’ abbastanza facile
               “spoofare” l’indirizzo from ..

        9 Un esempio con ACL Cisco, gli host sulla vlan206 sono “client”

             interface Vlan206
              ip address 10.0.84.254 255.255.255.192
              ip access-group 2256 in
              ip access-group 2206 out

             ! Solo le sesssioni tcp e il DNS
             access-list 2206 permit tcp any any established
             access-list 2206 permit udp host 10.0.1.53 eq domain any
             access-list 2206 deny ip any any log

             ! Anti spoof
             access-list 2256 permit ip 10.0.84.192 0.0.0.63 any
             access-list 2256 deny ip any any log
Packet filters
          9 Un esempio con ACL Cisco, gli host sulla vlan206 sono “client”, l’host
            10.0.84.250 è anche un web server

                interface Vlan206
                 ip address 10.0.84.254 255.255.255.192
                 ip access-group 2256 in
                 ip access-group 2206 out

                ! Solo le sesssioni tcp e il DNS
                access-list 2206 permit tcp any any established
                access-list 2206 permit udp host 10.0.1.53 eq domain any
                access-list 2206 permit tcp any host 130.186.84.250 eq www
                access-list 2206 deny ip any any log

                ! Anti spoof
                access-list 2256 permit ip 130.186.84.192 0.0.0.63 any
                access-list 2256 deny ip any any log

                                Packet filters
•   In generale e ‘ difficile far passare i servizi che “negoziano” le porte di
    comunicazione o che prevedono “call back” (come l’ FTP)
•   Il problema dell’ FTP: In una normale sessione FTP tra il client A e il
    server S avviene:
     ƒ   TCP open      (C,>1023) Æ (S,21)            Control Channel
          Sul control channel si scambiano i comandi: es GET filename
          Il trasferimento avviene sul Data Channel
          Il Client sceglie una porta alta sulla quale si mette in ascolto e la comunica al server
              con il comando “PORT” es: PORT 1234
     ƒ   TCP open (S,20) -> (C,1234)           1023) Æ (S,21)            Control Channel
          Sul control channel si scambiano i comandi: es GET filename
          Il Client chiede la modalità passiva (PASV) e il server si mette in ascolto su una porat
              alta es:3456
     ƒ   TCP open (C,>1023) -> (S,> 1023)
Stateful packet filter
• La differenza sostanziale è che il firewall mantiene
  traccia delle “sessioni” e quindi è in grado di riconoscere
  automaticamente le risposte. Di solito esistono sintassi
  facilitate (o è addirittura automatico) per dire al firewall
  “fai passare le risposte”

• In più possono analizzare il traffico a livello più alto per
  interpretare i protocolli sovrastanti e aprire
  dinamicamente le porte necessarie (vedi ad esempio il
  protocollo FTP)

           Application level firewall
• Al massimo un network level firewall (un
  firewall che lavora ai livelli OSI 3/4, ad
  esempio un packet filter) può bloccare
  pacchetti che vengono da IP non validi o che
  provano connessioni a servizi non autorizzati.
• Fatica a gestire protocolli come FTP attivo ed
  ancor più protocolli complessi come ad
  esempio H.323 (VOIP) o SQL*Net (Oracle).
  Questi problemi possono essere risolti solo a
  livelli più alti della pila OSI.
Application level firewall

• Un modo è usare un application
  gateway o proxy applicativo cioè
  un software specifico per un
  determinato protocollo che fa
  contemporaneamente da server
  per chi deve navigare e da client
  verso internet.

        Application level firewall
• Faccio un esempio pratico per chiarire il
  concetto: con il mio pc (192.0.34.129) voglio
  collegarmi a google.
• Non posso però farlo direttamente perchè sulla
  rete è stato proibito (con un qualche tipo di
  network firewall) il routing diretto e solo una
  singola macchina può accedere ad internet e
  su questa è ospitato il proxy web. Mi devo
  perciò collegare al proxy e chiederle la pagina
  di google. Il proxy in questo caso è un web
  server che riceve la mia richiesta, la
  interpreta, chiede la pagina a google (fa da
  client) e poi me la fornisce.
Application level firewall
• Sono anche possibili (e diffusi) caching
  proxy in cui le pagine più richieste
  vengono tenute in una cache locale in
  modo da evitare da dover scaricare più
  volte la stessa pagina e quindi
  velocizzare la navigazione per gli utenti
  e diminuire l'impiego di banda. I proxy
  possono poi anche essere trasparenti in
  modo da evitare di dover fare della
  configurazione sui client.

           Application level firewall
• Un proxy, essendo contemporaneamente server e client, può
  bloccare gli attacchi basati sulla non conformità dei dati al
  protocollo. Per fare un esempio pratico (CVE-2001-0241) le
  estensioni Internet printing ISAPI di Windows 2000
  permettevano di eseguire codice arbitrario a chi avesse fatto
  una richiesta con 420 byte nel campo 'Host' e caratteri
  particolari. Un web proxy avrebbe potuto bloccare un attacco
  di questo tipo ma non blocca attacchi in cui il protocollo è
  rispettato e sono i dati ad essere pericolosi (come un virus per
  email).

• Un proxy è un “Man in the Middle” buono …

• Un'altra cosa che un application gateway è in grado di fare è
  permettere solo alcuni comandi. Un proxy smtp potrebbe
  bloccare i comandi VRFY ed EXPN, utili una volta ma oramai
  usati solo dagli spammer, oppure alterare I banner

• Gli application level gateway eccellono nella capacità di
  scrivere log particolarmente significativi perchè comprendono
  perfettamente il protocollo applicativo.
Stateful multilayer protocol
            inspection firewalls
• Uno stateful multilayer firewall è un firewall che lavora
  su vari livelli OSI, tiene traccia dello stato delle
  connessioni e di almeno un protocollo applicativo.
  Necessita di risorse hardware decisamente superiore a
  quelle di un packet filter ed ha prestazioni di poco
  inferiori.

• Per decidere se un pacchetto può o non può passare
  non guarda al singolo pacchetto ma alla storia della
  connessione tcp od udp (a rigore la connessione udp
  non esiste ma per quanto riguarda il firewall una
  connessione udp è uno scambio di pacchetti).

       Stateful multilayer firewalls
• Ogni volta che viene stabilita una
  connessione il firewall si segna in una
  tabella le informazioni sulla
  connessione. Queste sono: indirizzo
  sorgente e destinazione, porta sorgente
  e destinazione, i fari flag tcp, in
  particolare il sequence number. Quando
  arriva un pacchetto di ritorno viene
  accettato solo dopo aver verificato nella
  tabella delle connessioni che tutti i
  parametri corrispondano.
Stateful multilayer firewalls
• Un application gateway conosce un
  protocollo applicativo e si mette
  fisicamente in mezzo tra client e server
  evitando che i due si parlino
  direttamente. Un protocol inspection
  firewall invece permette che il client ed
  il server dialoghino ma verifica la
  correttezza formale dei protocolli usati e
  nel caso non venga rispettata tronca la
  comunicazione.

     Stateful multilayer firewalls
• Purtroppo (o per fortuna) la rete è in
  continua evoluzione e ci sono protocolli
  oramai consolidati come HTTP ed FTP
  ma ne vengono creati continuamente di
  nuovi ed anche quelli esistenti vengono
  modificati. Non è praticamente possibile
  trovare un firewall che sia in grado di
  capire e filtrare in maniera corretta tutti
  i protocolli che ci possono interessare.
Personal firewall

• I personal firewall (o host firewall)
  sono un tipo di firewall che devono
  essere usati sulla macchina da
  proteggere, non verificano solo il
  traffico di rete ma anche quale
  processo sta accedendo alla rete.
  Questo permette una precisione
  enorme nel controllo.

           Personal firewall

• I personal firewall vanno
  configurati individualmente sui vari
  host e raramente questo può
  essere fatto in maniera accurata
  per cui solitamente si perde il
  vantaggio della granularità del
  controllo.
Personal firewall

   • I personal firewall sono poi spesso
     progettati per mandare più alert
     del necessario e raramente
     forniscono tutti i dati sui pacchetti
     bloccati o ricevuti per cui è difficile
     capire cosa effettivamente
     facciano.

         Tabella riassuntiva sui firewall
  Packet    Application level         Multilayer stateful
   filter       firewall                    firewall
Economici Non molto costosi          Costosi
Veloci       Solitamente lenti       Abbastanza veloci
Filtraggio   Massima granularità      Filtraggio molto
grezzo       nel filtraggio e nei log preciso
             Serve un gateway per
             ogni protocollo
Come progettare una rete

• Per ora abbiamo visto una
  classificazione dei firewall,
  vediamo ora come va progettata
  una rete in modo da renderla
  sicura.

     Come progettare una rete

• La prima idea che viene è:

                      Internet

        Firewall

                   Rete locale
Come progettare una rete
• Questa soluzione è valida ma solo nel caso che
  non vengano offerti servizi. Le macchine che
  offrono servizi sono generalmente attaccabili
  molto più facilmente di quelle che non offrono
  servizi e vanno perciò messe in una rete a
  parte chiamata DMZ (DeMilitarized Zone) in
  modo da evitare che un attaccante si
  impossessi di una macchina aperta in qualche
  modo all'esterno e da questa possa attaccare
  le macchine interne (generalmente
  considerate più preziose) senza dover passare
  dal firewall.

       Come progettare una rete
      Internet
                                     Firewall 1

                              DMZ

                                      Firewall 2
  Rete interna
Come progettare una rete
   • In realtà non si perde quasi nulla a
     riunire “firewall 1” e “firewall 2”

          Internet                          Firewall

     Rete interna                    DMZ

          Come progettare una rete
E' naturalmente possibile usare più DMZ per separare
reti con dati di sensibilità differente:

          Internet                          Firewall

                                              DMZ 2

                                    DMZ 1
     Rete interna
Come progettare una rete
• E' fondamentale che non sia possibile
  raggiungere la rete interna dalla DMZ e
  tantomeno dall'esterno. Come faccio
  allora ad accedere alla rete interna da
  internet (per manutenzione o
  quant'altro)? Sono possibili due
  soluzioni:
• usare un bastion host.
• Usare una VPN.

      Come progettare una rete
• Un bastion host è una macchina
  esposta ad internet, posizionata
  nella DMZ o meglio ancora in una
  propria DMZ. Il suo scopo è
  concentrare in un unico punto tutti
  i modi di accedere alla rete interna
  in modo da poter concentrare in un
  solo punto la maggior parte degli
  sforzi per rendere sicura la rete.
Come progettare una rete

  • In queste slides ci siamo sempre
    riferiti al firewall come ad un unico
    oggetto. Vediamo ora come viene
    di solito realizzato il sistema
    Firewall

           Come progettare una rete
                       Router esterno
                                                Stateful
          Internet                              multilayer
                                                Firewall

                                          Router DMZ
Router interno

                                              Proxy
                     Proxy

                                        DMZ
     Rete interna
Come progettare una rete
• Abbiamo visto che packet filter, application
  level firewall e multilayer stateful firewall
  hanno punti di forza e di debolezza per cui
  vale la pena sfruttare le caratteristiche di ogni
  sistema.
• Ogni router è un packet filter a costo zero
  (abbiamo già pagato per avere il router).
• E' vero che tutto quello che fa un packet filter
  lo puo' fare il firewall stateful ma "sgrossando"
  il traffico con i packet filter si diminuisce il
  carico sulla macchina più costosa aumentando
  però la complessità dell’ambiente.

        Come progettare una rete
• I router vanno quindi configurati in questo
  modo:
• Traffico in ingresso:
   ƒ Bloccare i pacchetti destinati a servizi che non si
     vogliono offrire su internet.
   ƒ Bloccare gli indirizzi con source address invalidi.
   ƒ Bloccare i pacchetti con protocolli non utilizzati.
   ƒ Bloccare i pacchetti provenienti dall'esterno con
     indirizzo sorgente appartenente alla nostra rete.
   ƒ Permettere tutto il traffico di protocolli permessi e
     complessi (FTP, H323, ecc). Questi pacchetti
     verranno analizzati dal multilayer stateful firewall
Come progettare una rete

• Traffico in uscita:
  ƒ bloccare il traffico con un source
    address invalido.

      Come progettare una rete
• È bene inoltre usare un application
  gateway almeno per il web visto
  che il protocollo HTTP è oramai
  statico, è possibile trovare ottimo
  software free (p.e. squid) ed
  usando un caching proxy è pure
  possibile aumentare la velocità
  della navigazione e risparmiare
  banda.
Firewall di linux

E’ integrato nel kernel di linux, quindi
   rappresenta la soluzione più semplice e
   veloce. Il kernel deve essere predisposto in
   fase di compilazione , oppure devono essere
   caricati gli appositi moduli.
n Kernel 2.0.* -> ipfwadmin

n Kernel 2.2.* -> ipchains

n Kernel 2.4.* -> iptables

Firewall di linux
n   L’attraversamento dei pacchetti tra
    un’interfaccia ed un’altra deve essere
    abilitata espressamente nel kernel,
    attraverso il comando:
# echo 1 > /proc/sys/net/ipv4/ip_forward
n   Possibilità di estensioni (moduli), che
    possono essere incluse o meno in fase
    di compilazione
Iptables
n   Si basa sui concetti di tabelle, catene e
    regole
n   Una tabella è formata da catene (punti
    di controllo) e una catena da regole

Tabelle
n Filter
n NAT

n Mangle
Tabella filter
Contiene le regole di filtraggio vere e
 proprie dei pacchetti che il firewall
 origina e riceve o che transitano dal
 firewall

Tabella NAT
Consente di effettuare il NAT (Networking
 Address Translation) degli indirizzi IP o
 del valore della porta sorgente o di
 destinazione
Tabella mangle
         Usata per effettuare alterazioni particolari
           dell’header IP (TTL, TOS, MARK)
         Particolarmente interessante è il target
           MARK, che permette di marcare il
           pacchetto, in modo da essere trattato
           diversamente nei successivi punti di
           controllo o da altri programmi

         Come i pacchetti attraversano
         i filtri
                                                                 Filtraggio dei
                                                             pacchetti che devono              Pacchetto che deve
                                                                essere inoltrati                 essere inoltrato

                                                                            Mangle          Filter
                                                                         FORWARDING      FORWARDING
                                                                                                                                  Effettua NAT dei pacchetti in
           Effettua NAT
                                                                                                                                 uscita (tipicamente viene fatto il
  (Network Address Translation)
                                                                                                                                 mascheramento della soregente)
     dei pacchetti in ingresso
                                                                                                                                               POSTROUTING
                       PREROUTING

                                                                                                                                                             POSTROUTING

                                                            Viene deciso se il
                                    PREROUTING

                                                 DECISION

                                                                                                                           DECISION
                                                 ROUTING

                                                                                                                           ROUTING

                                                                                                           Viene decisa
                                                                                                                                      Mangle
              Mangle

                                                            pacchetto è
                                                                                                  l’interfaccia d’uscita
                                                                                                                                                                           RETE
                                                                                                                                                                 Nat

RETE
                                        Nat

                                                            destinato a
                                                            localhost o deve                              del pacchetto
                                                            essere inoltrato

                                                            Mangle                                               Filter
                                                            INPUT                                               OUTPUT
      Pacchetto destinato
                                                                                                                                                                 Pacchetto originato
              a localhost
                                                             Filter        LOCAL    ROUTING       Mangle         Nat                                             dal localhost
                                                            INPUT         PROCESS   DECISION     OUTPUT         OUTPUT

                                                               Filtraggio dei               Filtraggio dei
                                                                pacchetti in              pacchetti in uscita
                                                            ingresso al firewall              al firewall
Catene della tabella filter
n   INPUT
    operazioni di filtraggio di pacchetti appena
    gunti al firewall e diretti all’host
n   FORWARD
    operazioni di filtraggio di pacchetti che
    transitano dal firewall
n   OUTPUT
    operazioni di filtraggio di pacchetti generati
    localmente che stanno per uscire dal firewall

Catene della tabella NAT
n   PREROUTING
    operazioni di nat di pacchetti appena giunti al
    firewall
n   OUTPUT
    operazioni di nat di pacchetti generati
    localmente
n   POSTROUTING
    operazioni di nat di pacchetti che stanno per
    uscire dal firewall
Catene della tabella mangle

n   PREROUTING
n   INPUT
n   FORWARD
n   OUTPUT
n   POSTROUTING

Le regole
n   Hanno la forma di ACL
n   Ogni catena ha una policy di default
n   L’elenco delle regole viene scorso dall’inizio
    alla fine
n   Al primo match si stabilisce cosa fare del
    pacchetto e, salvo casi particolari si
    interrompe l’analisi delle regole della catena
n   Se per nessuna regola c’è il match, si esegue
    la policy di default
Come si costruisce una regola
#iptables [table] command
 [match] [target]

n   [table] selezione della tabella
n   [match] criteri per la selezione del
    pacchetto
n   [target] destino del pacchetto che
    soddisfa il match

Comandi sulle catene
n   Creare una nuova catena (-N)
n   Cancellare una catena vuota (-X)
n   Cambiare lapolicy di default di una catena (-
    P)
n   Elencare le regole presenti in una catena (-L)
n   Svuotare una catena delle sue regole (-F)
n   Azzerare i contatori
Comandi per manipolare le
regole di una catena
n   Appendere una nuova regola alla catena (-A)
n   Inserire una regola in una determinata
    posizione (-I)
n   Sostituzione di una regola presente in una
    certa posizione (-R)
n   Cancellazione di una regola presente in una
    certa posizione (-D)
n   Cancellazione della 1° regola di una catena (-
    D)

I target (1)
n   ACCEPT
    il pacchetto viene accettato
n   DROP
    il pacchetto viene scartato
n   REJECT
    stesso effetto di DROP, ma viene inviato in
    risposta un messaggio di errore ICMP di tipo
    “port unreachable”
n   Catena creata dall’utente
I target (2)
      n    RETURN
           termina la catena; se è una catena
           predefinita, viene eseguita la tattica, se
           è definita dall’utente, esegue la regola
           successiva sulla catena precedente
      n    QUEUE
           accoda i pacchetti per elaborazioni
           userspace

      Esempi

                  eth0                   eth1
                 1.2.3.4              192.168.1.1

Internet                   FIREWALL                          LAN

                                               192.168.1.*

#iptables –A FORWARD –i eth1 –j DROP

Tutte le opzioni di match possono essere negate
attraverso il simbolo !
Esempi

              eth0                   eth1
             1.2.3.4              192.168.1.1

Internet               FIREWALL                          LAN

                                           192.168.1.*

      #iptables –A FORWARD –i eth1 –s
        192.168.1.0/24 –d 0/0 –j DROP

      Esempi
              eth0                   eth1
             1.2.3.4              192.168.1.1

Internet               FIREWALL                          LAN

                                           192.168.1.*

#iptables –A INPUT –p tcp –s 1.2.3.5 –d
1.2.3.4 –-dport 22 –j ACCEPT
#iptables –A INPUT –p tcp –s 0/0 –d 1.2.3.4 --
dport 22 –j DROP
Esempi

                   eth0                   eth1
                  1.2.3.4              192.168.1.1

Internet                    FIREWALL                          LAN

                                                192.168.1.*

#iptables –A FORWARD –mac-source
00:60.08:91:CC:B7 –s 192.168.1.5 –d 0/0 –j
ACCEPT

      I frammenti IP (1)
      n    A volte il pacchetto generato dall’host
           mittente è troppo grande per attraversare
           alcune reti, viene quindi frammentato
      n    Il frammento contiene un sottoinsieme
           dell’header, non è quindi possibile verificare le
           intestazioni TCP, UDP e regole come –p tcp, -
           -sport non possono essere verificate
I frammenti IP (2)
 n   C’è la possibilità di dare una regola
     specifica per i frammenti, attraverso
     l’opzione –f

 n   Esempio:

#iptables –A OUTPUT –f –d 192.168.1.69
–j DROP

 I flag TCP
 n   Si possono filtrare i pacchetti attraverso
     i flag specifici di TCP
 n   --tcp-flags seguita da 2 stringhe di flag:
      la prima stringa è la maschera:lista di flag
        che si vogliono esaminare
      la seconda indica quali flag devono essere
        impostati
I flag TCP (esempio)
Voglio fare il log di tutte le connessioni
 TCP che passano dal firewall

#iptables –A FORWARD –p tcp –tcp-flags
  ALL SYN,FIN –j LOG

--syn è un’abbreviazione di –tcp-flags
  SYN,RST,ACK SYN

Connection tracking (1)
Capacità per un firewall di mantenere
  memoria dello stato delle connessioni.
Si usa l’opzione --state seguita da una
  lista di stati da confrontare.
Connection tracking (2)
Questi stati sono:
n NEW

  un pacchetto che crea una nuova
  connessione
n ESTABLISHED

  un pacchetto che appartiene a una
  connessione esistente

Connection tracking (3)
n   RELATED
    pacchetto relativo a una connessione
    esistente di cui non fa parte (es. errore
    ICMP, FTP data)
n   INVALID
    pacchetto che non può essere
    identificato (in genere va scartato)
Connection tracking (esempi)
#iptables – A FORWARD –d 192.168.0.0/16
  –m state –-state ESTABLISHED, RELATED
  –j ACCEPT
Consente il transito verso 192.168.* per
  connessioni già realizzate o correlate a
  connessioni precedenti
#iptables – A FORWARD –d 192.168.0.0/16
  –m state –-state INVALID –j DROP
Elimina i pacchetti non identificabili

Network Address Translation
(NAT)
n   Tecnica descritta nell’RFC 1631, con la quale
    un nodo di rete speciale acquista funzionalità
    simili a quelle di un router, allo scopo di
    sostituire indirizzi IP reali con altri indirizzi più
    convenienti
n   E’ possibile riutilizzare dinamicamente gli
    indirizzi IP privati, permettendo a tali reti di
    accedere all’esterno, pur non essendo questi
    univoci a livello globale
NAT
                                                   192.168.1.*
                  eth0              eth0
                 1.2.3.4         192.168.1.1

Internet                   NAT                         LAN

                                         Host   Host

    n   Normalmente gli indirizzi IP 192.168.1.* non
        hanno la possibilità di essere riconosciuti
        univocamente all’interno della rete globale,
        pertanto non è possibile accedere all’esterno. Si
        può ottenere attraverso il NAT

        NAT
    n   Souce NAT (SNAT)
        si ha quando si altera l’indirizzo sorgente del
        pacchetto. E’ effettuata in fase di post-routing
    n   Destination NAT (DNAT)
        si ha quando si altera l’indirizzo di destinazione,
        ossia si cambia dove la connessione è diretta.
        Si effettua in fase di pre-routing
SNAT
                                                    192.168.1.*
                 eth0                eth1
                1.2.3.4           192.168.1.1

Internet                    NAT                         LAN

                                          Host   Host

      #iptable –t nat –A POSTROUTING –o eth0 –j
        SNAT –to-source 1.2.3.4

      SNAT (mascheramento)
                                                    192.168.1.*
           Indirizzamento
                  IP                 eth0
              dinamico            192.168.1.1

Internet                    NAT                         LAN

                                          Host   Host

      #iptables –t nat –A POSTROUTING –o ppp0
        –j MASQUERADE
DNAT

 Internet                          NAT

            1.2.3.4:80
                                                      Rete locale

                                    192.168.1.2:80                 Server
                                                                 HTTP reale

      #iptables –t nat –A PREROUTING –p tcp –-
        dport 80 –i eth0 –j DNAT –to-
        destination 192.168.1.2

      DNAT (redirect)
                 eth0                            eth1
                1.2.3.4                       192.168.1.1

Internet                  Proxy trasparente                           LAN

                                                       192.168.1.*

   Si vuole che tutte le richieste di servizi HTTP, da
      parte della rete locale, siano dirottati verso il
      proxy, sullo stesso computer che ospita il NAT,
      alla porta 8080
   #iptables –t nat –A PREROUTING –p tcp
     –dport 80 –i eth1 –j REDIRECT –to-port
     8080
Bibliografia
n   Rusty Russel, Linux 2.4 Packet filtering
    HOWTO
    http://www.netfilter.org/documentation/HOWTO/packet-filtering-
    HOWTO.html

n   Rusty Russel, Linux 2.4 NAT HOWTO
    http://www.netfilter.org/documentation/HOWTO/NAT-
    HOWTO.html

n   Oskar Andreasson, Iptables tutorial
    http://iptables-tutorial.frozentux.net/

n   Manpage di iptables
Puoi anche leggere