ACL: concetti, wildcard mask e ACL standard

📋 Obiettivi di apprendimento
Definire cos’è un’ACL, spiegare la logica sequenziale delle ACE e il significato del deny implicito finale
Calcolare una wildcard mask a partire da una subnet mask e interpretare le keyword host e any
Configurare ACL standard numerata e con nome su router Cisco, applicarla a un’interfaccia e verificarla con i comandi show
Motivare perché le ACL standard vanno applicate vicino alla destinazione e non alla sorgente
🎬
Video
ACL standard su Cisco IOS — configurazione e scenari pratici
Guarda →
📄
Slides
ACL standard— slide con sintassi, esempi e scenari
🔬
Lab
ACL standard in Packet Tracer
GitHub →
🖧
Lab
PKT – ACL Standard Esercizio 1
PKT →
🖧
Lab
PKT – ACL Standard Esercizio 2
PKT →

Cos’è un’ACL

Una Access Control List (ACL) è un elenco ordinato di regole — chiamate ACE (Access Control Entry) — che un router Cisco usa per decidere se permettere (permit) o negare (deny) il transito di un pacchetto su una propria interfaccia.

Le ACL operano come un filtro sequenziale: ogni pacchetto che transita sull’interfaccia configurata viene confrontato con le ACE nell’ordine in cui sono scritte, dall’alto verso il basso, fino alla prima corrispondenza. Da quel momento la decisione è presa e il pacchetto viene gestito di conseguenza, senza esaminare le regole successive.

📌 ACL ≠ Firewall stateful

Le ACL su router Cisco sono stateless: analizzano ogni pacchetto singolarmente, senza memoria dello stato della connessione TCP. Sono più simili a un filtro pacchetti di prima generazione che a un firewall moderno. Per una protezione completa, le ACL si usano in combinazione con firewall stateful o NGFW.

Cosa può fare un’ACL — casi d’uso principali

Utilizzi tipici delle ACL su router Cisco
Sicurezza perimetrale
Bloccare indirizzi IP non autorizzati, isolare reparti aziendali, proteggere server critici
Controllo del traffico
Limitare aggiornamenti di routing a sorgenti note, bloccare traffico video per ridurre il carico di rete
Filtraggio per tipo
Permettere solo email (SMTP), bloccare Telnet (porta 23), limitare FTP a specifici utenti
NAT e VPN
Identificare il traffico da sottoporre a NAT o a cifratura VPN tramite access-list di classificazione
QoS
Identificare il traffico VoIP per dargli priorità e garantire qualità del servizio

Logica di funzionamento — la sequenza delle ACE

Comprendere la logica sequenziale è il punto più critico per configurare correttamente un’ACL. Seguiamo il percorso di un pacchetto:

1

Il router estrae le informazioni rilevanti dall’header del pacchetto (IP sorgente per ACL standard; IP, protocollo e porte per ACL estese)

2

Confronta con la prima ACE dell’ACL. Corrispondenza? → applica l’azione (permit o deny) e STOP, le ACE successive non vengono lette

3

Nessuna corrispondenza con la prima ACE? → passa alla seconda, poi alla terza, e così via

!

Se nessuna ACE corrisponde → si applica il deny implicito: il pacchetto viene scartato silenziosamente

⚠️ Il deny implicito — l’errore più comune

Ogni ACL Cisco termina con un deny any implicito che non compare nella configurazione ma è sempre presente. Se si crea un’ACL con sole istruzioni di deny senza nessuna di permit, tutto il traffico verrà bloccato — incluso il traffico di gestione del router stesso.

⚑ Regola pratica: ogni ACL deve contenere almeno una istruzione permit, altrimenti blocca tutto.

Esempio visivo — logica sequenziale

ACL 10 — cosa succede a tre pacchetti diversi
access-list 10 deny   192.168.1.0 0.0.0.255   ! ACE 1 — nega la rete 192.168.1.0/24
access-list 10 permit 192.168.0.0 0.0.0.255   ! ACE 2 — permette la rete 192.168.0.0/24
                                                  ! ACE 3 (implicita) — deny any
Pacchetto da 192.168.0.5
✅ PERMIT
ACE 1: no match → ACE 2: match su 192.168.0.0/24 → permesso
Pacchetto da 192.168.1.10
❌ DENY
ACE 1: match su 192.168.1.0/24 → negato (non legge ACE 2)
Pacchetto da 10.0.0.5
❌ DENY
ACE 1: no match → ACE 2: no match → deny implicito

Classificazione delle ACL

ACL Standard
Numeri: 1–99 e 1300–1999

Filtrano il traffico solo in base all’indirizzo IP sorgente. Non possono distinguere il protocollo né la porta di destinazione.

Parametri disponibili:
  • IP sorgente
  • Wildcard mask
  • Permit / Deny
⚑ Va applicata vicino alla destinazione
ACL Estesa
Numeri: 100–199 e 2000–2699

Filtrano in base a IP sorgente, IP destinazione, protocollo e porta. Controllo molto più granulare.

Parametri disponibili:
  • IP sorgente e destinazione
  • Protocollo (TCP, UDP, ICMP, IP)
  • Porta (eq, gt, lt, range)
⚑ Va applicata vicino alla sorgente

La Wildcard Mask — il cuore delle ACL

La wildcard mask (maschera con caratteri jolly) è il meccanismo che determina quali bit dell’indirizzo IP devono corrispondere per attivare una ACE. La logica è opposta alla subnet mask:

Bit 0 nella wildcard

Deve corrispondere
Il bit dell’indirizzo viene controllato

Bit 1 nella wildcard

Viene ignorato
Il bit dell’indirizzo non viene controllato

📌 Come calcolare la wildcard mask

La wildcard mask si ottiene sottraendo la subnet mask da 255.255.255.255:

  255.255.255.255
- 255.255.255.0    (subnet mask /24)
=   0.  0.  0.255  (wildcard mask)

Tabella degli esempi di wildcard mask

Casi d’uso più comuni
ObiettivoIndirizzoWildcard MaskEquivalenteHost coperti
Host singolo192.168.1.100.0.0.0host 192.168.1.101
Rete /24192.168.1.00.0.0.255equivale a /24256
Rete /16172.16.0.00.0.255.255equivale a /1665.536
Qualsiasi host0.0.0.0255.255.255.255anytutti
Rete /25 (prima metà)192.168.1.00.0.0.127.0 → .127128
Solo host pari (avanzato)192.168.1.00.0.0.254.0, .2, .4 … .254128

Le keyword host e any

Cisco IOS offre due abbreviazioni per i casi d’uso più frequenti:

keyword: host

Sostituisce la wildcard 0.0.0.0. Indica che tutti i bit dell’indirizzo devono corrispondere esattamente — filtra un singolo host.

! Equivalenti:
deny 192.168.1.10 0.0.0.0
deny host 192.168.1.10
keyword: any

Sostituisce 0.0.0.0 255.255.255.255. Indica che qualsiasi indirizzo corrisponde — tipicamente usato come ultima regola di permit.

! Equivalenti:
permit 0.0.0.0 255.255.255.255
permit any

ACL Standard — configurazione Cisco IOS

ACL standard numerata

Sintassi
access-list <numero> <permit|deny> <indirizzo-sorgente> [wildcard-mask]
numero
1–99 o 1300–1999 per ACL standard
permit | deny
azione da eseguire al match
indirizzo-sorgente
IP o rete sorgente (oppure keyword host / any)
wildcard-mask
opzionale — se omessa, assume 0.0.0.0 (host singolo)

Esempio 1 — Bloccare una rete, permettere tutto il resto

Scenario: bloccare la rete 192.168.1.0/24, permettere tutto il resto
! Step 1 — Definisci l'ACL
Router(config)# access-list 10 deny   192.168.1.0 0.0.0.255
Router(config)# access-list 10 permit any

! Step 2 — Applicala sull'interfaccia verso la DESTINAZIONE
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip access-group 10 in
Router(config-if)# exit
L’ACL 10 viene applicata in ingresso sull’interfaccia G0/1. I pacchetti provenienti da 192.168.1.0/24 vengono bloccati appena entrano nell’interfaccia.

Esempio 2 — Bloccare un singolo host

Scenario: bloccare solo il PC 192.168.1.55, permettere il resto della rete
Router(config)# access-list 11 deny   host 192.168.1.55
Router(config)# access-list 11 permit 192.168.1.0 0.0.0.255

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip access-group 11 in

ACL standard con nome

Le ACL con nome sono preferibili a quelle numeriche perché il nome descrive lo scopo e permettono di modificare singole ACE senza riscrivere l’intera ACL.

Sintassi e esempio ACL con nome
! Definizione
Router(config)# ip access-list standard BLOCCA-CONTABILITA
Router(config-std-nacl)# deny   192.168.5.0 0.0.0.255
Router(config-std-nacl)# permit any
Router(config-std-nacl)# exit

! Applicazione
Router(config)# interface GigabitEthernet0/2
Router(config-if)# ip access-group BLOCCA-CONTABILITA in

Perché le ACL standard vanno applicate vicino alla destinazione

Questo è un concetto fondamentale per l’esame di Stato. Poiché le ACL standard possono filtrare solo in base all’IP sorgente, applicarle vicino alla sorgente potrebbe bloccare traffico legittimo verso altre destinazioni.

Scenario esplicativo
Rete con tre segmenti: LAN-A (192.168.1.0/24), LAN-B (192.168.2.0/24), Server Farm (10.0.0.0/24).
Obiettivo: impedire a LAN-A di accedere alla Server Farm, ma permettere l’accesso a LAN-B.
❌ Sbagliato — ACL vicino alla sorgente

Se applico deny 192.168.1.0 sull’interfaccia di Router-A verso LAN-A, blocco tutto il traffico di LAN-A — incluso quello verso LAN-B che dovrebbe essere permesso.

✅ Corretto — ACL vicino alla destinazione

Applico deny 192.168.1.0 sull’interfaccia di Router-SF verso la Server Farm. LAN-A può ancora raggiungere LAN-B, ma non la Server Farm.

Verifica e monitoraggio delle ACL

Comandi show essenziali
show access-lists
Mostra tutte le ACL configurate con il contatore dei match per ogni ACE — fondamentale per il debug
show access-lists 10
Mostra solo l’ACL numero 10
show ip interface Gi0/1
Mostra quale ACL è applicata sull’interfaccia G0/1 e in quale direzione (in/out)
no access-list 10
Rimuove completamente l’ACL 10 — attenzione: non è possibile rimuovere singole ACE da un’ACL numerata
📌 Output del comando show access-lists
Router# show access-lists
Standard IP access list 10
    10 deny   192.168.1.0, wildcard bits 0.0.0.255 (15 matches)
    20 permit any (142 matches)

I contatori dei match sono preziosi: se una ACE ha sempre 0 match, probabilmente è mal posizionata o non raggiungibile per via di una regola precedente più generale.

📌 Riepilogo — Punti chiave
  • Un’ACL è una lista ordinata di ACE: il router confronta ogni pacchetto con le regole in sequenza e si ferma alla prima corrispondenza
  • Il deny implicito finale è sempre presente ma invisibile — ogni ACL deve avere almeno un permit per non bloccare tutto
  • La wildcard mask ha logica opposta alla subnet mask: bit 0 = controlla, bit 1 = ignora. Si calcola come 255.255.255.255 − subnet mask
  • Le ACL standard filtrano solo per IP sorgente → devono essere applicate vicino alla destinazione per evitare di bloccare traffico verso altre reti
  • Il comando show access-lists mostra le ACL con i contatori dei match per ogni ACE — strumento essenziale per il debug

Lascia un commento