Una Access Control List (ACL) è una lista di regole che controllano e filtrano il traffico in base agli indirizzi IP sorgente e destinazione o ai numeri di porta. Questo avviene permettendo o bloccando i pacchetti da un’interfaccia su un router, uno switch, un firewall ecc.
Le singole voci o dichiarazioni in una lista di accesso sono chiamate voci di controllo di accesso (ACEs). Ogni voce ACE definisce un flusso di traffico (sorgente/destinazione) che sarà permesso o bloccato.
Oltre al controllo e al filtraggio del traffico in una rete, le ACL possono anche essere usate come misura di sicurezza per la connessione al router, permettendo solo gli indirizzi IP o le reti necessarie per accedere al router via telnet (o preferibilmente con SSH).
Hanno anche diversi altri usi come il controllo dell’accesso alla gestione, il filtraggio della pubblicità delle rotte, il filtraggio dell’output di debug, l’identificazione del traffico per la crittografia in scenari VPN ecc.
Le liste di accesso sono fondamentalmente uno strumento per abbinare pacchetti interessanti che possono poi essere sottoposti a diversi tipi di operazioni speciali.
Sui dispositivi Cisco abbiamo due tipi principali di ACL. Queste sono le Standard Access Control Lists e le Extended Access Control Lists.
- Standard Access Lists
Le liste di accesso standard sono la forma di base delle liste di accesso sui router Cisco che possono essere utilizzate per abbinare i pacchetti in base al campo dell’indirizzo IP sorgente nell’header del pacchetto. Queste liste di accesso sono più semplici da creare e capire, ma le opzioni di corrispondenza dei pacchetti sono limitate solo all’indirizzo sorgente.
- Liste di accesso estese
Se vuoi confrontare i pacchetti su qualcosa di più dell’indirizzo IP sorgente, hai bisogno di una lista di accesso estesa: numerata o con nome. Le liste di accesso estese possono filtrare sugli indirizzi IP sorgente e destinazione, o una combinazione di indirizzi e diversi altri campi come le porte TCP/UDP ecc.
Sia le liste di accesso standard che quelle estese possono essere scritte in formato numerato o denominato, che sono solo modi diversi di scrivere liste di accesso.
In termini di funzionalità, le liste di accesso numerate e denominate sono equivalenti. Ciò che si può ottenere con una lista di accesso numerata può essere ottenuto anche con una equivalente lista di accesso con nome, e questo si applica sia alle ACL standard che a quelle estese.
Alcune persone preferiscono il formato con nome perché probabilmente è più leggibile, ma entrambi i formati sono ampiamente utilizzati nella pratica ed entrambi sono importanti per l’esame di certificazione Cisco.
Si prega di fare riferimento alla Tabella 1 per conoscere la gamma di numeri che possono essere utilizzati per creare liste di accesso numerate standard ed estese.
Tabella 1 Intervalli di numeri di liste di accesso
Tipo di lista di accesso | Intervallo di numeri |
Liste di accesso standard IP | 1-99 |
Liste di accesso standard IP (intervallo esteso) | 1300-1999 |
IP Extended Access Lists | 100-199 |
IP Extended Access Lists (expanded range) | 2000-2699 |
Prenderemo in considerazione queste liste di controllo d’accesso, come funzionano e come configurarle sui router Cisco.
Si prega di dare un’occhiata alla figura 1 qui sotto che useremo per tutti i nostri esempi di configurazione.
Lo scenario consiste in un singolo router R1 con due interfacce Fa0/0 e Fa0/1 collegate rispettivamente alla rete interna e a Internet.
Le liste di accesso avrebbero lo scopo di controllare l’accesso a Internet degli utenti della rete interna. Queste liste d’accesso verrebbero applicate all’interfaccia Fa0/0 nella direzione in entrata.
Figura 1 Applicazione della lista d’accesso
Esempi di configurazione della lista d’accesso standard
La lista di controllo d’accesso standard ti permetterà di permettere o negare il traffico da un indirizzo IP sorgente specifico o una rete IP.
Creazione di liste di accesso standard numerate
Iniziamo configurando una lista di accesso standard prima in formato numerato e poi in formato nominato. La lista di accesso dovrebbe permettere a Bob di accedere a Internet mentre blocca tutti gli accessi per Smith, registrando anche i tentativi non riusciti di Smith.
Vediamo come possiamo farlo usando una lista di accesso standard in formato numerato.
R1>enable
R1#configure terminal
Entrare i comandi di configurazione, uno per linea. Terminare con CNTL/Z.
R1(config)#access-list 1 permit host 192.168.1.3
R1(config)#access-list 1 deny host 192.168.1.7 log
R1(config)#
Nell’esempio di configurazione precedente abbiamo usato la parola chiave host per identificare i singoli host ma lo stesso risultato può essere ottenuto anche usando la maschera inversa 0.0.0.0.
Applichiamo ora questa access list all’interfaccia Fa0/0 in direzione inbound.
R1(config)#interfaccia Fa0/0
R1(config-if)#ip access-group 1 ?
in pacchetti in entrata
out pacchetti in uscita
R1(config-if)#ip access-group 1 in
R1(config-if)#end
R1#
Le liste di accesso nominate hanno un numero da 1 a 99. Quando metti una lista di accesso su un router dovrai identificare le liste di accesso con un numero, per esempio la lista di accesso 1 come mostrato sopra.
In ogni lista di accesso ci sarà un implicito deny all alla fine della ACL anche se non lo specifichi esplicitamente. Quindi se hai configurato la tua lista di accesso in questo modo, ecco cosa farebbe.
show access-list 1
L’output sarà:
access-list 1 permit host 192.168.1.3
access-list 1 deny host 192.168.1.7 log
access-list 1 deny any
Creazione di liste di accesso standard con nome
Creiamo ora una lista di accesso con nome e applichiamola all’interfaccia Fa0/0, per ottenere lo stesso effetto. Qui, useremmo la maschera inversa invece della parola chiave host per abbinare i singoli host.
R1>enable
R1#configure terminal
Entrare nei comandi di configurazione, uno per linea. Terminare con CNTL/Z.
R1(config)#ip access-list standard Filter
R1(config-std-nacl)#permit 192.168.1.3 0.0.0.0
R1(config-std-nacl)#deny 192.168.1.7 0.0.0.0 log
R1(config-std-nacl)#interfaccia Fa0/0
R1(config-if)#ip access-group Filter in
R1(config-if)#end
R1#
Esempi di configurazione delle liste di accesso estese
Una lista di controllo di accesso estesa vi permetterà di negare o permettere il traffico da specifici indirizzi IP e porte.
Ti dà anche la possibilità di controllare il tipo di protocollo che può essere trasferito come ICMP, TCP, UDP e così via. La gamma delle liste di controllo di accesso estese va da 100 a 199 per le ACL numerate.
Un esempio di una ACL estesa numerata:
access-list 110 permit tcp 92.128.2.0 0.0.0.255 any eq 80
L’ACL 110 permetterà il traffico proveniente da qualsiasi indirizzo sulla rete 92.128.2.0 (rete sorgente) verso qualsiasi IP di destinazione sulla porta 80.
La dichiarazione ‘any’ è lì per permettere il traffico verso qualsiasi IP di destinazione sulla porta 80. La prima dichiarazione di rete nel comando access-list (cioè 92.128.2.0 0.0.0.255) si riferisce alla sorgente del traffico, e la seconda dichiarazione di rete (la parola chiave “any” nel nostro esempio) si riferisce alla destinazione del traffico.
Un altro esempio:
access-list 111 permit ip 192.168.1.0 0.0.255 192.168.2.0 0.0.255
La configurazione precedente permetterà tutto il traffico IP dalla rete sorgente 192.168.1.0/24 verso la rete di destinazione 192.168.2.0/24.
Nota anche che la subnet mask nella configurazione ACL è sempre rappresentata con una maschera inversa (cioè invece di usare 255.255.255.0 usiamo 0.0.0.255).
Creazione di liste di accesso estese numerate
Configureremo ora una lista di accesso estesa prima in formato numerato e poi con nome. La lista di accesso dovrebbe permettere a Bob (dal nostro diagramma di rete sopra) di accedere ai server Web su Internet mentre blocca tutti gli accessi Web per Smith e registra anche i tentativi falliti di Smith di aprire un sito web.
Vediamo come possiamo fare questo usando una lista di accesso estesa in formato numerato.
R1>enable
R1#configure terminal
Entrare i comandi di configurazione, uno per linea. Terminare con CNTL/Z.
R1(config)#access-list 100 permit tcp host 192.168.1.3 any eq www
R1(config)#access-list 100 deny tcp host 192.168.1.7 any eq www log
R1(config)#interfaccia Fa0/0
R1(config-if)#ip access-group 100 in
R1(config-if)#end
R1#
Creazione di liste di accesso estese con nome
Ora, configuriamo la stessa lista di accesso estesa con nome.
R1>enable
R1#configure terminal
Entrare i comandi di configurazione, uno per linea. Terminare con CNTL/Z.
R1(config)#ip access-list extended Filter
R1(config-ext-nacl)#permit tcp 192.168.1.3 0.0.0.0 any eq www
R1(config-ext-nacl)#deny tcp 192.168.1.7 0.0.0.0 any eq www log
R1(config-ext-nacl)#interfaccia Fa0/0
R1(config-if)#ip access-group Filter in
R1(config-if)#end
R1#
Abbiamo trattato brevemente le liste di accesso in questo articolo. Puoi verificare quali liste di accesso esistono sul tuo dispositivo Cisco usando il comando show access-lists.
Un test finale delle liste di accesso è fatto generando effettivamente il traffico che la lista di accesso dovrebbe permettere o negare e vedere i risultati.
Come applicare l’ACL
Dopo aver impostato l’ACL sul posto dovrai specificare in quale direzione vuoi che operi sull’interfaccia che verrà applicata (in entrata o in uscita).
Per esempio “in” significa in entrata all’interfaccia e “out” significa in uscita dall’interfaccia. L’ACL viene poi applicata su un’interfaccia specifica usando il comando “access-group”.
È possibile identificare una lista di accesso dandole un nome o un numero come discusso sopra. Ecco una serie di comandi da usare:
Router(config)#interfaccia seriale 0
Router(config-if)#ip access-group 111 out
Utilizzando le Access List per proteggere l’accesso Telnet a un router
Puoi anche proteggere le linee telnet su un router tramite ACL. Questo vi permetterà di permettere l’accesso al login telnet solo a certi host o reti. Qui c’è una configurazione di esempio su come fare questo.
access-list 25 permit 192.168.2.0 0.0.255
line vty 0 4
access-class 25 in
Con questa ACL in atto permetterai solo agli host della rete 192.168.2.0/24 di avere accesso al login VTY. Tutti i tentativi da altre reti saranno bloccati.
Un altro esempio: Diciamo che abbiamo una specifica stazione di gestione (10.1.1.1) a cui dovrebbe essere permesso di accedere al router via telnet. Tutti gli altri host dovrebbero essere bloccati.
access-list 10 permit host 10.1.1.1
line vty 0 4
access-class 10 in