Consulenze presso Eunet srl, via dell'Artigianato 15, 09122 Cagliari 070 753609 Lun - Ven 08:30-13:00 / 14.30-17.00

Cisco ACL: configurazioni di base

Sui router Cisco, l’implementazione delle tecnologie di firewalling, almeno per una configurazione base, si ottiene tramite le Access Control Lists (ACL), funzionalità che permette un filtraggio del traffico basato principalmente sull’indirizzamento IP e sulle porte TCP e UDP. Ad esempio, un’ACL può permettere agli utenti con uno specifico indirizzo di rete di scaricare files da Internet tramite una connessione FTP, bloccando altri tipi di connessioni dalla stessa rete e bloccando inoltre qualsiasi altro traffico da indirizzi IP sorgenti diversi da quelli specificati.

Le ACL sono definite come insiemi di una o più regole, ognuna delle quali consente o nega il traffico in base ai parametri indicati. Il traffico è confrontato in sequenza con ciascuna istruzione, dall’alto verso il basso, fino a quando viene trovata una corrispondenza o fino a quando non ci sono più istruzioni. Non appena un pacchetto in transito soddisfa una regola, le istruzioni successive vengono scartate. L'ultima istruzione di una ACL è sempre una negazione implicita “deny ip any any” che nega qualsiasi tipo di traffico; si tratta di una regola inserita automaticamente alla fine di ogni ACL, anche se non visibile. Per questo motivo è fondamentale che in una ACL sia presente almeno un “permit”, diversamente l’unico risultato sarebbe la negazione di qualsiasi traffico per ogni direzione.

Le ACL non filtrano il traffico finché non vengono applicate ad un’interfaccia; bisogna poi specificare la direzione, che può essere in uscita o in ingresso sull’interfaccia. Il traffico in ingresso si riferisce al traffico che arriva sul router, prima dell’accesso alla tabella di routing. Il traffico in uscita si riferisce al traffico già entrato nel router e sottoposto ad elaborazione per l’inoltro; prima dell’inoltro verso un’interfaccia, viene esaminata l’ACL in uscita.

Si distinguono due gruppi fondamentali di ACL:

  • ACL standard, individuano il traffico a livello 3, in base al solo IP sorgente. A quell’IP sarà pertanto concesso o negato l’accesso a qualsiasi servizio.
  • ACL estese, individuano il traffico sino al livello 4, in base ai protocolli TCP o UDP e ai numeri di porta sorgente e di destinazione.

Sia le standard che le estese possono essere:

  • Numbered (numeriche), con identificativo basato sui numeri da 1 a 99 e da 1300 a 1999 per le  standard ACL, da 100 a 199 e da 2000 a 2699 per le ACL di tipo esteso.
  • Named (con nome), identificate da un nome scelto dall’amministratore.

 

Su un router si può definire un' ACL per ogni protocollo routed di livello 3 (ad esempio IP, IPX, Appletalk), per ogni interfaccia logica (ogni interfaccia “subif” può avere la propria ACL), per ogni direzione (IN o OUT). Ad esempio, se prendiamo l’interfaccia Ethernet 0/0 di un router che instrada solo il protocollo IP, possiamo avere per quest’interfaccia al massimo 2 ACL, una in ingresso ed una in uscita.

Un altro aspetto molto importante è il posizionamento delle ACL:

  • Posizionamento di ACL estese – Devono essere posizionate il più vicino possibile alla sorgente da filtrare. Posizionarle lontane dalla sorgente sarebbe inefficiente, poichè i pacchetti attraverserebbero troppe zone prima di essere bloccati o filtrati.
  • Posizionamento di ACL standard - Devono essere posizionate il più vicino possibile alla destinazione. Infatti, poichè le ACL standard filtrano i pacchetti solo in base all’indirizzo sorgente, il posizionamento nei pressi dell’interfaccia sorgente potrebbe bloccare del traffico ritenuto valido. Ad esempio, se si volesse bloccare l’accesso ad un server da una determinata rete con un deny indirizzi_rete, se la negazione fosse vicina alla rete sorgente, verrebbero bloccate anche altre destinazioni ritenute valide o addiritura negato tutto il traffico in uscita.

 

I comandi


Configurazione di ACL standard numeriche

Sintassi:
Router(config)#access-list numero_ACL deny|permit ip_sorgente maschera_wildcard
Esempio: consentire l'accesso alla rete 172.16.2.144/29
access-list 1 permit 172.16.2.144 0.0.0.7

 

Configurazione di ACL estese numeriche

Sintassi:
Router(config)#access-list numero-ACL [deny|permit] protocollo ip-sorgente wildcard ip-destinazione wildcard condizione applicazione
Esempio: bloccare il traffico telnet dalla subnet 172.16.2.0/24 verso qualsiasi host
access-list 101 deny tcp 172.16.2.0 0.0.0.255 any eq telnet

 

Configurazione di ACL standard con nome

Si noti che, a differenza delle ACL numeriche, il comando access-list è preceduto dal comando IP.

Sintassi:
Router(config)#ip access-list standard nome_ACL
Router(config-std-nacl)# [deny|permit] ip-sorgente
Esempio:
ip access-list standard permit-ip
permit 172.16.2.144 0.0.0.7

 

Configurazione di ACL estese con nome

Di nuovo, si evidenzia che a differenza delle ACL numeriche, il comando access-list è preceduto dal comando IP.

Sintassi:
Router(config)#ip access-list extended nome-ACL
Router(config-ext-nacl)# deny|permit protocollo ip_sorgente wildcard_mask ip_destinazione wildcard_mask condizione applicazione
Esempio:
ip access-list extended blocco-telnet
access-list 101 deny tcp 172.16.2.0 0.0.0.255 any eq telnet

 

Uso dei parametri “host” e “any”

Quando si crea una ACL, i parametri host e any sono utilizzabili al posto delle wildcard:

access-list 9 deny 192.168.15.99 0.0.0.0        <=>  access-list 9 deny host 192.168.15.99
access-list 9 permit 0.0.0.0 255.255.255.255  <=>  access-list 9 permit any

 

Assegnare un' ACL a un’interfaccia

Il valore ACL può essere un numero nel caso di ACL numbered o un nome nel caso di ACL named.

Sintassi:
Router(config-if)#ip access-group ACL in|out
Esempio 1: assegnare l’ACL TESTACL sull’interfaccia Fa0/0 filtrando il traffico in ingresso.
interface fa 0/0
ip access-group TESTACL i
Esempio 2: assegnare l’ACL 5 sull’interfaccia Serial 0/0 filtrando il traffico in uscita.
interface serial 0/0
ip access-group 5 out

 

Assegnare un' ACL sulle VTY, Virtual Terminal Lines

Sintassi:
Router(config-line)#access-class ACL in|out

 

Commentare un' ACL

Sintassi per ACL numeriche:
Router(config)#access-list 101 remark commento
Sintassi per ACL con nome:
Router(config)#ip access-list extended nome_ACL
Router(config-std-nacl)#remark commento

 

Rimuovere un' ACL da un’interfaccia

Sintassi:
Router(config-if)#no ip access-group ACL

 

Modifica di un' ACL

Uno dei vantaggi di utilizzare le ACL con nome è costituito dal fatto che l’amministratore può eliminare una riga specifica entrando nella modalità di configurazione dell’ACL stessa (ACL subconfiguration mode), utilizzano il parametro “no”.

 

Cancellare un' ACL

Nelle ACL numeriche non è possibile eliminare singole linee: è necessario pertanto eliminare l’intera ACL.

Sintassi:
Router(config)#no access-list lista

 

 

Verifiche e troubleshooting


Abilitare i log sulle ACL

Il log si abilita utilizzando il parametro log alla fine della sintassi di una ACL:

R1(config)# access-list 101 permit tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 eq 22 log

In questo modo, appena un pacchetto soddisfa una condizione presente nell’ACL, l’informazione viene registrata (sul buffer del router o su un syslog server, se configurato). Bisogna tener presente che la generazione di log impegna in modo consistente gli apparati. Vengono salvate diverse informazioni, quali:

  • Action - permit or deny
  • Protocol - TCP, UDP, or ICMP
  • Indirizzo sorgente e di destinazione
  • Porta sorgente e di destinazione, TCP e UDP
  • Tipi di messaggi ICMP

 

Visualizzare il contenuto di una ACL

Sintassi:
Router#show access-list ACL

 

Visualizzare quante e quali ACL sono presenti nel router

Sintassi:
Router#show ip access-lists

 

Visualizzare il posizionamento e la direzione delle ACL

Il comando seguente permette di verificare su quali interfacce e in che direzione sono state applicate le ACL. Ad esempio, nell’output sottostante possiamo notare che l’interfaccia Fa0/1.1 ha l’ACL 150 applicata in uscita e nessuna ACL in ingresso.

Sintassi:
Router#show ip interface

 

Visualizzare le ACL applicate ad un’interfaccia specifica

Il comando restituisce le stesse informazioni del comando precedente, questa volta circoscritte all’interfaccia selezionata.

Sintassi:
Router#show ip interface interfaccia
Esempio: visualizzare le eventuali ACL presenti sulla seriale 0/0
show ip interface serial 0/0

 

 

Esempi pratici


Impedire che gli hosts della subnet 172.16.4.0 possano raggiungere la subnet 172.16.3.0 tramite l’interfaccia Fa0/0. Poichè esiste una negazione implicita alla fine di ogni ACL, è fondamentale che nella ACL sia presente almeno un “permit”, diversamente l’unico risultato sarebbe la negazione di qualsiasi traffico per ogni direzione.

access-list 1 deny 172.16.4.0 0.0.0.255
access-list 1 permit any
interface FastEthernet 0/0
ip access-group 1 out

 

Negare il traffico FTP dalla subnet 172.16.4.0/24 alla subnet 172.16.3.0/24. Tutto il resto è permesso. Ricordiamo che la porta TCP 21 è utilizzata per i comandi FTP, la porta TCP 20 per il trasferimento dati.

access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 21
access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20
access-list 101 permit ip any any
interface fastethernet 0/1
ip access-group 101 in


(0 Votes)