ACL estese: sintassi, applicazione e casi d’uso

📋 Obiettivi di apprendimento
Scrivere e interpretare la sintassi completa di un’ACL estesa numerata e con nome, con protocollo, IP sorgente/destinazione, operatori di porta
Distinguere il comportamento inbound da outbound e motivare perché le ACL estese vanno applicate vicino alla sorgente
Spiegare il funzionamento della keyword established e come permette le risposte TCP senza aprire connessioni non richieste
Progettare e configurare ACL estese per scenari reali: protezione server web, blocco Telnet, accesso selettivo per reparto
🎬
Video
ACL estese su Cisco IOS — configurazione e scenari pratici
Guarda →
📄
Slides
ACL estese — slide con sintassi, esempi e scenari
🔬
Lab
ACL estese con DMZ in Packet Tracer
GitHub →
🖧
Lab
PKT – ACL Estese
PKT →

Da standard a estesa — il passo in avanti

Nella lezione precedente abbiamo visto che le ACL standard filtrano esclusivamente in base all’IP sorgente: un controllo utile ma grossolano. Le ACL estese aggiungono quattro dimensioni di filtraggio, consentendo una politica di sicurezza molto più granulare:

🔵
IP SORGENTE
da quale host o rete proviene
🟣
IP DESTINAZIONE
verso quale host o rete è diretto
🟡
PROTOCOLLO
TCP, UDP, ICMP, IP
🟤
PORTA
eq, gt, lt, range, neq

Questa granularità permette policy molto precise: “permettere solo al reparto Marketing di raggiungere il server web interno sulla porta 443, bloccando qualsiasi altra comunicazione”.

Sintassi completa dell’ACL estesa

Sintassi — ACL estesa numerata
access-list <numero> <permit|deny> <protocollo>
  <ip-sorgente> <wildcard-src> [<operatore> <porta-src>]
  <ip-destinazione> <wildcard-dst> [<operatore> <porta-dst>]
  [established] [log]
Protocolli principali
ip — qualsiasi protocollo IP (include TCP, UDP, ICMP)
tcp — Transmission Control Protocol
udp — User Datagram Protocol
icmp — Internet Control Message Protocol
Operatori di porta
eq 80 — uguale a 80
gt 1023 — maggiore di 1023
lt 1024 — minore di 1024
neq 23 — diverso da 23
range 20 21 — da 20 a 21 inclusi
Porte TCP/UDP notevoli — da memorizzare
20/21 — FTP
22 — SSH
23 — Telnet ❌
25 — SMTP
53 — DNS
67/68 — DHCP
80 — HTTP
110 — POP3
143 — IMAP
443 — HTTPS
3389 — RDP
8080 — HTTP alt.

Inbound vs Outbound — direzione del filtraggio

Quando si applica un’ACL a un’interfaccia router occorre specificare la direzione del traffico da filtrare rispetto all’interfaccia stessa. I termini inbound e outbound si riferiscono sempre al punto di vista del router, non della rete.

INBOUND (in)

Il filtro agisce sui pacchetti che entrano nell’interfaccia del router, prima che il router effettui il routing. I pacchetti non autorizzati vengono scartati immediatamente, risparmiando risorse.

interface GigabitEthernet0/0
 ip access-group 100 in
✅ Più efficiente — scarta prima del routing
OUTBOUND (out)

Il filtro agisce sui pacchetti che escono dall’interfaccia del router, dopo che il routing è già avvenuto. Utile per controllare cosa viene inoltrato verso una rete specifica.

interface GigabitEthernet0/1
 ip access-group 100 out
⚠️ Meno efficiente — il routing è già avvenuto
Regola di posizionamento per le ACL estese

Le ACL estese, potendo specificare sia IP sorgente che destinazione, vanno applicate il più vicino possibile alla sorgente del traffico. In questo modo i pacchetti indesiderati vengono eliminati prima di occupare banda sulla rete, a differenza delle ACL standard che vanno vicino alla destinazione.

Confronto operativo inbound vs outbound
CaratteristicaInboundOutbound
Punto di controlloAll’ingresso interfacciaAll’uscita interfaccia
Routing effettuato?❌ Non ancora✅ Già effettuato
EfficienzaMaggioreMinore
Uso idealeBloccare traffico alla sorgenteControllare ciò che esce verso una rete specifica
ACL estese — preferenza✅ PreferitaSolo se inbound non è pratico
⚠️ Un’ACL non è bidirezionale

Applicare un’ACL in su un’interfaccia non filtra automaticamente il traffico di risposta che esce dalla stessa interfaccia. Per gestire correttamente le risposte TCP occorre usare la keyword established oppure un firewall stateful. Questo è il limite più importante delle ACL su router Cisco.

La keyword established — gestire le risposte TCP

La keyword established è uno degli strumenti più potenti e fraintesi delle ACL estese. Permette di distinguere una risposta TCP da una nuova connessione TCP, senza mantenere una vera state table come farebbe un firewall stateful.

Come funziona TCP — il three-way handshake

Client
192.168.1.10
SYN
nessun flag ACK — connessione nuova
SYN-ACK
flag ACK attivo — è una risposta
ACK
flag ACK attivo — è una risposta
Server
esterno
Osservazione chiave: solo il primo pacchetto SYN non ha il flag ACK. Tutti i pacchetti successivi di una connessione TCP esistente — risposte, dati, chiusura — hanno il flag ACK attivo.

Cosa fa established

La keyword established corrisponde a un pacchetto TCP solo se ha il flag ACK o RST attivo. Questo equivale a dire: “questo pacchetto fa parte di una connessione già iniziata”. Poiché il primo SYN non ha il flag ACK, una regola con established non permette mai nuove connessioni in ingresso.

Scenario — permettere agli host interni di navigare su HTTP, bloccare connessioni in ingresso
! ACL 110 — applicata INBOUND sull'interfaccia verso Internet (traffico da Internet)

! Permette le RISPOSTE alle connessioni HTTP avviate dall'interno
access-list 110 permit tcp any 192.168.1.0 0.0.0.255 eq 80 established

! Permette le RISPOSTE alle connessioni HTTPS avviate dall'interno
access-list 110 permit tcp any 192.168.1.0 0.0.0.255 eq 443 established

! Nega tutto il resto (connessioni in ingresso non richieste)
access-list 110 deny   ip any any

interface Serial0/0/0   ! interfaccia verso Internet
 ip access-group 110 in
SYN-ACK da server web
✅ PERMIT
Ha il flag ACK → corrisponde a established → risposta legittima
SYN da attaccante esterno
❌ DENY
Non ha il flag ACK → non corrisponde a established → bloccato
📌 established ≠ firewall stateful

established è una soluzione approssimata: controlla solo il flag ACK, non mantiene una vera tabella di stato. Un attaccante esperto può costruire un pacchetto con flag ACK senza che esista una connessione reale (attacco ACK scan) e bypassare questo controllo. Per una protezione completa serve un firewall stateful — ma per molti scenari pratici, established è sufficiente e molto usato nella realtà.

ACL estesa con nome

Sintassi e struttura
Router(config)# ip access-list extended NOME-ACL
Router(config-ext-nacl)# permit|deny protocollo sorgente wildcard destinazione wildcard [eq porta]
Router(config-ext-nacl)# exit

Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip access-group NOME-ACL in|out

Esempi pratici — scenari reali

Scenario 1 — Proteggere un server web in DMZ

Obiettivo: consentire accesso HTTP/HTTPS al server 192.168.2.10, bloccare tutto il resto
ip access-list extended PROTEGGI-WEB
 ! Permette HTTP dall'esterno verso il server web
 permit tcp any host 192.168.2.10 eq 80
 ! Permette HTTPS dall'esterno verso il server web
 permit tcp any host 192.168.2.10 eq 443
 ! Permette i ping ICMP per diagnostica
 permit icmp any any echo-reply
 ! Blocca tutto il resto
 deny ip any any

interface Serial0/0/0   ! interfaccia WAN verso Internet
 ip access-group PROTEGGI-WEB in
L’ACL viene applicata inbound sull’interfaccia WAN: il traffico esterno verso il server sulla porta 80/443 passa, tutto il resto — incluse connessioni SSH, RDP, o Telnet verso qualsiasi host — viene scartato.

Scenario 2 — Bloccare Telnet, permettere SSH

Obiettivo: nessun accesso Telnet (porta 23) verso la LAN, SSH (porta 22) solo dal reparto IT
ip access-list extended POLICY-ACCESSO
 ! Nega Telnet verso qualsiasi host della LAN
 deny   tcp any 192.168.1.0 0.0.0.255 eq 23
 ! Permette SSH solo dal reparto IT (192.168.10.0/24)
 permit tcp 192.168.10.0 0.0.0.255 192.168.1.0 0.0.0.255 eq 22
 ! Permette tutto il traffico IP rimanente
 permit ip any any

interface GigabitEthernet0/0
 ip access-group POLICY-ACCESSO in

Scenario 3 — DMZ con server web pubblico e server interno

Questo è il caso più completo, che ricorda la topologia del Lab A di questo modulo. Abbiamo un server web in DMZ (192.168.2.10) raggiungibile da Internet e un server interno (192.168.1.2) che non deve mai essere accessibile dall’esterno. I PC della LAN devono poter navigare su Google.

ACL sull’interfaccia WAN — filtraggio traffico in ingresso da Internet
! Permette traffico HTTP verso il server web in DMZ
access-list 100 permit tcp any host 192.168.2.10 eq 80

! Permette le RISPOSTE alle navigazioni dei client LAN verso Google e altri siti
access-list 100 permit tcp any eq 80  192.168.1.0 0.0.0.255 established
access-list 100 permit tcp any eq 443 192.168.1.0 0.0.0.255 established

! Permette risposte echo ICMP
access-list 100 permit icmp any any echo-reply

! Nega TUTTO il traffico non autorizzato verso la LAN e la DMZ
access-list 100 deny ip any any

interface Serial2/0   ! interfaccia verso Internet
 ip access-group 100 in
Analisi delle regole
Regola 1: il server web in DMZ è accessibile dall’esterno sulla porta 80 — scopo pubblico
Regola 2-3: established consente le risposte ai siti visitati dai client LAN, bloccando connessioni non richieste
Regola 4: i ping di risposta (echo-reply) sono permessi per la diagnostica — i ping in uscita (echo) erano già stati bloccati
Regola 5: deny implicito esplicito — buona pratica per la leggibilità e per attivare il logging

Scenario 4 — Accesso FTP solo per utenti autorizzati

Obiettivo: solo la subnet 10.0.10.0/24 può accedere al server FTP 192.168.1.50
ip access-list extended ACCESSO-FTP
 ! FTP richiede due porte: 21 (controllo) e 20 (dati) oppure passive mode (porte alte)
 permit tcp 10.0.10.0 0.0.0.255 host 192.168.1.50 eq 21
 permit tcp 10.0.10.0 0.0.0.255 host 192.168.1.50 eq 20
 permit tcp 10.0.10.0 0.0.0.255 host 192.168.1.50 range 1024 65535
 ! Permette il restante traffico IP
 permit ip any any

interface GigabitEthernet0/0
 ip access-group ACCESSO-FTP in

Errori comuni e best practice

Errori da evitare nelle ACL estese
1
Dimenticare il permit ip any any finale
Il deny implicito finale blocca tutto ciò che non corrisponde alle regole esplicite. Se non prevedi una regola di permit generale, tutto il traffico non specificato viene bloccato.
2
Applicare l’ACL estesa vicino alla destinazione invece che alla sorgente
Il traffico percorre inutilmente tutta la rete prima di essere scartato. L’ACL estesa va sull’interfaccia più vicina alla sorgente, in direzione inbound.
3
Usare ip quando si vuole filtrare una porta specifica
ip come protocollo include tutto (TCP, UDP, ICMP) e non supporta il filtro per porta. Per specificare porte occorre usare tcp o udp esplicitamente.
4
Dimenticare le porte del traffico di ritorno senza usare established
Se blocchi tutto il traffico in ingresso senza permettere le risposte con established, i client interni non riceveranno mai le risposte ai loro HTTP GET, rendendo inutilizzabile la navigazione.
📌 Riepilogo — Punti chiave
  • Le ACL estese filtrano per IP sorgente, IP destinazione, protocollo e porta — controllo molto più granulare delle ACL standard
  • Inbound agisce prima del routing (più efficiente); outbound agisce dopo. Le ACL estese si applicano preferibilmente inbound vicino alla sorgente
  • La keyword established permette i pacchetti TCP con flag ACK o RST — distingue le risposte alle connessioni esistenti dai nuovi SYN in ingresso
  • Per filtrare porte serve usare tcp o udp come protocollo — il protocollo ip non supporta il filtro per porta
  • Le ACL con nome sono preferibili a quelle numeriche: il nome è descrittivo e permettono la modifica di singole ACE senza riscrivere l’intera lista

Lascia un commento