Le Access Control List (ACL) sono sequenze ordinate di regole (ACE, Access Control Entry) che il router valuta per decidere se un pacchetto va permesso (permit) o scartato (deny). Su IOS/IOS-XE rappresentano lo strumento di base per il filtraggio del traffico IPv4 ed è essenziale padroneggiarne logica, sintassi e posizionamento.

Standard vs Extended

La distinzione principale è quale campo l’ACL può ispezionare.

Tipo Range numerato Cosa filtra
Standard 1–99, 1300–1999 Solo source IP
Extended 100–199, 2000–2699 Source, destination, protocollo (IP, TCP, UDP, ICMP…) e porta

Una standard ACL è cieca sulla destinazione: sa solo da dove arriva il pacchetto. Una extended ACL è granulare e permette regole come “consenti TCP dalla rete A verso il server B sulla porta 443”.

! Standard: blocca una sorgente
access-list 10 deny host 192.168.1.5
access-list 10 permit any

! Extended: consenti HTTPS verso un server, nega il resto
access-list 110 permit tcp 10.0.0.0 0.0.0.255 host 172.16.5.10 eq 443

Numerate vs Named

Le named ACL (ip access-list standard|extended NOME) sono funzionalmente identiche alle numerate ma più leggibili e, soprattutto, editabili riga per riga grazie ai sequence number: è possibile inserire una ACE in una posizione specifica invece di riscrivere tutto.

ip access-list extended WEB-FILTER
 10 permit tcp any host 172.16.5.10 eq 80
 20 deny ip any host 172.16.5.10

La wildcard mask

La wildcard è il cuore concettuale (e la trappola più frequente). È l’inverso della subnet mask: il bit 0 = deve corrispondere, il bit 1 = ignora (“don’t care”).

Calcolo rapido: wildcard = 255.255.255.255 − subnet mask.

  • /24 → mask 255.255.255.0 → wildcard 0.0.0.255
  • /26 → mask 255.255.255.192 → wildcard 0.0.0.63
  • /30 → mask 255.255.255.252 → wildcard 0.0.0.3

Esistono due keyword abbreviate: host X.X.X.X equivale a wildcard 0.0.0.0 (host singolo), mentre any equivale a 0.0.0.0 255.255.255.255 (qualsiasi indirizzo).

Ordine top-down e implicit deny

Il router valuta le ACE dall’alto verso il basso e si ferma alla prima corrispondenza: appena una regola matcha, applica la sua azione e non prosegue. Da qui la regola d’oro: le ACE più specifiche vanno in alto, quelle generiche in basso. Un permit any messo prima di un deny host renderebbe quest’ultimo inutile.

In coda a ogni ACL esiste un implicit deny any invisibile: ciò che non è esplicitamente permesso viene scartato. Conseguenza pratica: un’ACL fatta di soli deny blocca tutto il traffico, perché manca un permit finale che lasci passare il resto.

Applicazione all’interfaccia

Un’ACL creata non filtra nulla finché non è applicata a un’interfaccia con direzione:

  • in → valuta i pacchetti in ingresso sull’interfaccia (prima del routing);
  • out → valuta i pacchetti in uscita (dopo il routing).
interface GigabitEthernet0/1
 ip access-group 110 in

Regola di posizionamento (best practice Cisco):

  • Standard ACL → vicino alla DESTINAZIONE. Filtrando solo sul source, se la mettessi vicino alla sorgente rischieresti di bloccare traffico legittimo diretto altrove.
  • Extended ACL → vicino alla SORGENTE. Essendo specifica su destinazione e porta, scarta subito il traffico indesiderato risparmiando banda lungo il percorso.

Trappole tipiche d’esame

  • Scenario: ACL con soli deny e nessuna connettività. → Ricorda l’implicit deny any finale: serve un permit esplicito per il traffico consentito, altrimenti passa zero.
  • Scenario: “consenti solo la subnet 172.16.8.0/22”. → La wildcard di /22 è 0.0.3.255, non 0.0.0.255. Calcola sempre 255.255.255.255 − subnet mask.
  • Scenario: dove metto la standard ACL?Vicino alla destinazione; l’extended invece vicino alla sorgente. Invertirli è l’errore classico.
  • Scenario: aggiungo una ACE a un’ACL numerata esistente. → Senza sequence number la nuova riga si accoda in fondo, dopo eventuali permit any, risultando inefficace. Usa una named ACL o i sequence number per inserirla nel punto giusto.
  • Scenario: il permit any è sopra un deny host. → Per l’ordine top-down vince la prima corrispondenza: l’host non verrà mai bloccato. Le regole specifiche vanno prima di quelle generiche.