Per essere più precisi quando si abbina un certo traffico di rete, si usano le liste di accesso estese. Le liste di accesso estese sono più difficili da configurare e richiedono più tempo al processore rispetto alle liste di accesso standard, ma permettono un livello di controllo molto più granulare.
Con le liste d’accesso estese, puoi valutare informazioni aggiuntive sui pacchetti, come:
- indirizzo IP sorgente e destinazione
- tipo di protocollo TCP/IP (TCP, UDP, IP…)
- numeri di porta sorgente e destinazione
Per configurare una lista d’accesso estesa sono necessari due passi:
1. configurare una lista di accesso estesa usando il seguente comando:
(config) access list NUMBER permit|deny IP_PROTOCOL SOURCE_ADDRESS WILDCARD_MASK DESTINATION_ADDRESS WILDCARD_MASK PROTOCOL_INFORMATION
2. applicare una lista di accesso ad un’interfaccia usando il seguente comando:
(config) ip access-group ACL_NUMBER in | out
I numeri delle liste di accesso estese sono in intervalli da 100 a 199 e da 2000 a 2699. Dovresti sempre posizionare le ACL estese il più vicino possibile alla fonte dei pacchetti che vengono valutati.
Per capire meglio il concetto di liste di accesso estese, considera il seguente esempio:
Vogliamo permettere alla workstation dell’amministratore (10.0.0.1/24) l’accesso illimitato al server (192.168.0.1/24). Negheremo anche qualsiasi tipo di accesso al Server dalla stazione di lavoro dell’utente (10.0.0.2/24).
Primo, creeremo una dichiarazione che permetterà l’accesso al Server dalla postazione dell’amministratore:
Poi, dobbiamo creare una dichiarazione che negherà l’accesso al Server dalla postazione dell’utente:
Infine, dobbiamo applicare la lista di accesso all’interfaccia Fa0/0 su R1:
Questo costringerà il router a valutare tutti i pacchetti che entrano in Fa0/0. Se l’amministratore cerca di accedere al Server, il traffico sarà permesso, a causa della prima dichiarazione. Tuttavia, se l’utente cerca di accedere al server, il traffico sarà proibito a causa della seconda dichiarazione ACL.
Alla fine di ogni lista di accesso c’è un’esplicita dichiarazione deny all, quindi la seconda dichiarazione ACL non era veramente necessaria. Dopo aver applicato una lista d’accesso, ogni traffico non esplicitamente permesso sarà negato.
Sul lato destro, abbiamo un server che funge da server web, in ascolto sulla porta 80. Abbiamo bisogno di permettere all’utente di accedere ai siti web su S1 (porta 80), ma abbiamo anche bisogno di negare altri tipi di accesso.
Prima di tutto, dobbiamo permettere il traffico dall’utente alla porta 80 del server. Possiamo farlo usando il seguente comando:
Utilizzando la parola chiave tcp, possiamo filtrare i pacchetti in base alle porte di origine e destinazione. Nell’esempio qui sopra, abbiamo permesso il traffico da 10.0.0.2 (stazione di lavoro dell’utente) a 192.168.0.1 (server) sulla porta 80. L’ultima parte della dichiarazione, eq 80, specifica la porta di destinazione 80.
Siccome alla fine di ogni lista di accesso c’è un’implicita dichiarazione deny all, non abbiamo bisogno di definire altre dichiarazioni. Dopo aver applicato una lista di accesso, ogni traffico non proveniente da 10.0.0.2 e diretto a 192.168.0.1, porta 80 sarà negato.
Dobbiamo applicare la lista di accesso all’interfaccia:
Possiamo verificare se la nostra configurazione ha avuto successo provando ad accedere al server dalla postazione dell’utente usando diversi metodi. Per esempio, il ping fallirà:
Telnetting alla porta 21 fallirà:
Tuttavia, saremo in grado di accedere al Server sulla porta 80 usando il nostro browser: