Telemat Lab's home page





IMPLEMENTAZIONE DI UN PACKET FILTER

di: A. Pugi ed E. Vinciarelli


home pageIndicePrec.Succ.








Un Esempio Particolare



Analizziamo gli screening routers della CISCO, che si differenziano dagli altri poiché possiedono delle proprie regole sintattiche per la programmazione delle tabelle di filtraggio. La CISCO definisce una access lists, in cui per ogni indirizzo Internet è specificata la condizione permesso o rifiutato(permit-and-deny).Quando il pacchetto arriva allo screening router viene confrontato con le condizioni dell'access list.La prima condizione in cui rientra definisce se il pacchetto verrà rifiutato o permesso a seconda di quanto riportato nella tabella.Il test viene effettuato in maniera ordinata seguendo l'ordine con cui sono scritte le condizioni, siccome un pacchetto può rientrare in più condizioni è importante che l'access list sia compilata con il giusto ordine. Se il pacchetto non rientra in nessuna delle condizioni, viene scartato.
Ci sono due tipi di access-list: Standard access list

La sintassi per lo Standard access list è la seguente:
access-list list {permit|deny} address wildcard-mask
no access-list list

"list" è un intero tra 1 e 99 ed è usato per identificare la condizione.

L'uso delle parole-chiavi "permit" e"deny" corrispondono alle parole permettere e bloccare.
Ogni indirizzo di destinazione IP è comparato al valore specificato in "address".

L'"address" e la "wildcard-mask" sono valori di 32-bit e sono scritti usando la notazione "doted-decimal".
L'address bits corrispondenti ad 1 nella wildcard-mask sono ignorati nel confronto, mentre l'address bits corrispondenti a 0 nella wildcard-mask sono usati nel confronto.

Consideriamo il seguente esempio:



Nel primo caso dal confronto sono ignorati gli ultimi 8 bits, mentre nel secondo gli ultimi 16.
L'uso del comando "no access-list" cancella l'"access-list". Questo è usato quando non si sa se è stato precedentemente definito quel numero di lista.

Extended access list

La sintassi per l'extended access list è la seguente:
access-list list {permit|deny } protocol source source-mask destination destination-mask [operator operand]
listè un intero tra 100 e 199 ed è usato per identificare la condizione. L'uso delle parole-chiavi "permit" e "deny" corrispondono alle parole permettere e bloccare.
Protocol indica il tipo di protocollo usato TCP,UDP,IP e ICMP.
"Source" e "source-mask" sono valori di 32-bits e sono scritti usando la notazione "dotted-decimal".

I "source" bits corrispondenti ad 1 nella "source-mask" sono ignorati nel confronto, mentre i "source" bits corrispondenti a 0 nella "source-mask" sono usati nel confronto.
"Destination" e"destination-mask" sono valori di 32-bits e sono usati nello stesso modo di "source" e "source-mask".

L'"operator" e l'"operand" sono usati per comparare il numero di porta di destinazione ,e l'"operator" può assumere i seguenti valori:


Esempio

Supponiamo che la politica di sicurezza richieda di negare le richieste di connessioni al servizio SMTP (porta 25) del network 199.245.180.0 da parte dello host 132.124.23.55.
Questa politica può essere implementata nel seguente modo:

no access-list 101
access-list 101 deny tcp 132.124.23.55 0.0.0.0 199.245.180.0 0.0.0.255 eq 25

NOTA: Per restringere le connessioni in ingresso ed in uscita tra le linee del Cisco router e l'indirizzo contenuto nell'"access list" può essere usato il seguente comando:
access-class list {in|out}


Nel successivo esempio si definisce un "access list" che permette solo al network 199.89.55.0 di connettersi alle porte virtuali 1-5 del router:

access-list 18 permit 192.89.55.0 0.0.0.255
line 1 5
access-class 18 in




Collocazione del Packet Filter nella rete





Il router può esaminare il traffico dei pacchetti in ogni sua porta e considerare se il pacchetto è in arrivo o in uscita in ogni sua interfaccia con la rete. Molti venditori di routers implementano il filtraggio solo per i pacchetti in uscita, in quanto applica le regole quando il router consulta la tabella per determinare la destinazione del pacchetto. Se il pacchetto non rispetta alcuna regola, questo è respinto è viene spedito un messaggio di "ICMP destination unreacheable". Facendo l'analisi solo per i pacchetti in uscita dal router si perdono delle informazioni, infatti non si sa da dove il pacchetto è arrivato. Questo rende il network vulnerabile agli attacchi chiamati address spoofing (simulazione d'indirizzo). Consideriamo il seguente esempio:


(FIGURA4)

IL network 135.12.0.0 è connesso ad Internet attraverso lo screening router .

Un host esterno invia pacchetti al network cambiando il proprio indirizzo IP con l'indirizzo 135.12.10.201, che appartiene ad un host interno. Il pacchetto è ricevuto dallo screening router nella porta esterna. Se il router opera il filtraggio nei pacchetti in ingresso, riesce a capire l'inganno, poiché i pacchetti con quell'indirizzo sorgente non possono arrivare da quella porta, se invece il filtraggio avviene in uscita l'intrusore può penetrare tranquillamente all'interno della rete.

Quindi per avere una perfetta operazione di filtraggio, bisogna operare in ogni porta del router e controllare se i pacchetti sono in arrivo o in uscita dalla rete. Un ulteriore problema per la sicurezza del network nasce se nella progettazione delle regole non viene specificato una delle due porte, sorgente o destinazione.
Infatti molti routers operano il filtraggio basandosi solo nella porta sorgente.

Questo è giustificato dal fatto che in una connessione TCP il flusso dei dati è in entrambe le direzioni, quindi nella porta sorgente compaiono tutti e due i numeri delle porte degli host. Siccome il controllo non viene fatto simultaneamente sorgono dei problemi.Consideriamo il seguente esempio riportato nella tabella di filtraggio:

Numero RegolaAzioneSorgentePorta Sorg.DestinazionePorta DestOpzioni Flag
Protocollo
Descrizione
1allow199.245.180.05555135.67.12.33*TCPPermette sessioni TCP da host interni porta 5555 verso host esterni.
2allow135.67.12.335555199.245.180.0*TCPPermette sessioni TCP da host esterni con porta 5555 verso host interni
(FIGURA5)

La prima regola permette la connessione dalla porta 5555 dell'host interno 199.245.180.1 ad ogni porta dell'host 135.67.12.33.
La seconda regola permette la connessione dalla porta 5555 dell'host esterno 135.67.12.33 ad ogni 5555 dell'host interno.

Mentre la prima non danneggia la sicurezza, la seconda può aprire un varco nella sicurezza della rete.

(FIGURA6)

Infatti come si vede nella figura, un bogus program dell'host esterno può connettersi a qualsiasi porta dell'host interno, ed accedere cosi a qualsiasi tipo di servizio senza essere contrastato dallo screening router.



Varie Tipologie di Filtraggio







  • Filtraggio per FTP


  • Analizziamo il filtraggio di pacchetto nel caso di una sessione FTP tra un client nel network interno ed un server posto esternamente.

    (FIGURA7)
    Posizioniamo tra le 2 reti uno screening router, supponiamo che la tabella di filtraggio permetta la connessione tra i 2, il problema per la sicurezza è dovuta al fatto che la scelta della porta a cui far arrivare i dati nel client è dinamica, cioè non può essere predefinita.

    Nella tabella quindi non è presente la porta di destinazione.

    Numero RegolaAzioneSorgentePorta Sorg.DestinazionePorta DestOpzioni Flag
    Protocollo
    Descrizione
    1allow199.245.180.0*139.40.61.3*TCPPermessa connessione TCP in uscita
    2allow139.40.61.320199.245.180.0?TCPPorta destinazione sconosciuta

    (FIGURA8)

    Un intrusore fingendosi il server e mettendo come porta sorgente la porta 20 può accedere tranquillamente al network e attaccare un servizio dell'host.

    Un modo per evitarlo è prendere in considerazione l'ACK flag, e il range di valori che può assumere una porta.
    Nelle regole di filtraggio quindi avremo che i pacchetti provenienti dalla porta 20 del server e destinati ad un internal host con porta di destinazione maggiore di 1024 sono buoni, mentre i pacchetti con porta di destinazione minore di 1024 possono essere tentativi di attacchi e quindi rifiutati.

    Questo perché quasi tutti i servizi sono attaccati a porte con numeri inferiori a 1024, mentre la porta di ritorno dei dati dell'FTP ha un valore superiore.

    (FIGURA9)
    
    
    



  • Filtraggio X-Windows


  • 
    
    
    Il protocollo X11 usa il TCP e come l'FTP richiede una chiamata in arrivo al Server X11, ma in questo tipo di sessione l'X-server è il terminale utilizzato dall'user. Se un user vuole gestire una X11 applicazione in un sito esterno deve prima operare una connessione TCP con questo sito, poi sarà l`applicazione X11 della macchina esterna a creare una chiamata per il server.

    
    (FIGURA10)
    
    
    Consideriamo la seguente politica di sicurezza in cui è permesso un X-access da un sito esterno (128.23.0.0) alla rete interna mentre tutti gli altri accessi sono bloccati.

    X-11 server usa le porte 6000-6100.

    Numero RegolaAzioneSorgentePorta Sorg.DestinazionePorta DestOpzioni Flag
    Protocollo
    Descrizione
    1allow199.245.180.0***TCPPermette connessione TCP in uscita
    2block128.23.0.0*199.245.180.06000-6100TCPBlocca accesso a X11 da 128.23.0.0
    3allow**199.245.180.06000-6100Permette accesso a X11 da altri host

    (FIGURA11)



  • Filtraggio UDP


  • 
    
    

    La sessione UDP e` connectionless e quindi i suoi pacchetti non contengono molte informazioni per poter fare una adeguata operazione di filtraggio. L'unica informazione che puo` essere usata e` il numero di porta di destinazione e di sorgente. Di conseguenza per non compromettere la sicurezza del network si confina alla nostra LAN l'uso di quei servizi che prevedono una connessione UDP, ad eccezione del servizio DNS che ovviamente non puo` essere interno alla rete.
    
    



  • Filtraggio ICMP e RIP


  • 
    

    L'Internet Control Message Protocol (ICMP) e` parte dell'Internet layer ed e` descritto dall'RFC 792. Alcuni dei servizi offerti dall'ICMP sono:

    Analizziamo l'ICMP redirect, questo messaggio e` inviato dai routers agli altri dispositivi per informarli di nuove vie per l'instradamento dei pacchetti. Se a questo tipo di messaggio è permesso filtrare all'interno del nostro network, un host esterno può falsificare l'ICMP e causare la distruzione delle tabelle di instradamento.
    Per questa ragione è opportuno negare l'accesso a ICMP Redirect provenienti da un Network esterno.

    Un altro messaggio ICMP a cui negare l'accesso è ICMP echo-service, usato in risposta al comando PING, poiché attraverso il comando PING fatto da un host esterno verso un host appartenente alla rete da proteggere si può effettuare una mappatura di quest'ultima.

  • Filtraggio RIP


  • Il protocollo RIP è utile per scambiare informazioni all'interno del Network sull'instradamento dei pacchetti. Lo scambio del RIP tra i Router si basa sulla reciproca fiducia vale a dire non ci sono autenticazioni ; vale a dire, se un router invia un messaggio sbagliato, questo errore può propagarsi negli altri router producendo Loop ed instradamenti inefficenti. Anche in questo caso è possibile un attacco esterno attraverso la modifica , ad esempio, dell'indirizzo di default del router.



    Ultimo aggiornamento: 23 Settembre 1996


    Telemat Lab's home page

    home pageIndicePrec.Succ.