Il tuo indirizzo IP è 162.158.79.164     

Cisco ACL: configurazioni di base

Scritto da Alessio Carta il . Inserito in CCNA Security . Visite: 13052

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


Commenti  

# Franco 2015-05-06 12:09
Buongiorno,
sono alle prime armi con IOS e sto cercando di implementare una ACL per limitare la banda a disposizione per ogni indirizzo IP in un range con il comando rate-limit a 200k, ma non riesco a trovare una soluzione.
Al momento ho implementato questo solo che in questo modo l'intera vlan ha il limite COMLPESSIVO di 200k e non 200k per OGNI ip. E' possibile realizzarlo?
!
interface Vlan1
ip address 192.168.1.1 255.255.255.0
ip nat inside
rate-limit output access-group 101 1600000 2400000 2400000 conform-action transmit exceed-action drop
!
access-list 101 remark *** OpenSpace - in ***
access-list 101 permit ip any any
!
Rispondi
# paola 2015-03-31 15:12
Help

con un vecchio cisco 1841 dovrei far transitare dalla FastEth 0/0 all fastEth 0/1 tutto il traffico con mask 255.0.0.0 ma mi segnala un errore di maschera rispetto al tipo di interfaccia. Come ne esco?
Rispondi
# Andrea 2015-04-28 16:53
che ip hanno le due fastEth?
Rispondi
# Massimiliano 2011-07-18 10:55
Citazione patrizio:
sarebbe possibile realizzare una ACL che filtri solamente la prima metà degli indirizzi ip di una subnet ?


Certamente: se ad esempio prendi la rete 192.168.0.0/24, hai che la prima metà degli indirizzi corrisponde al range 192.168.1.1-192 .168.127, che guarda caso corrisponde alla rete 192.168.0.0/25 (in tal caso 127 sarebbe di broadcast). L'altra metà corrisponde invece alla rete 192.168.0.128/25.

Utilizzando una maschera inversa, la rete 192.168.0.0/25 diventa 192.168.0.0 0.0.0.127. A questo punto crei un filtro per questa rete, il restante viene tutto bloccato per la negazione implicita “deny ip any any”.
Rispondi
# patrizio 2011-07-06 12:12
sarebbe possibile realizzare una ACL che filtri solamente la prima metà degli indirizzi ip di una subnet ?
Rispondi
+1 # Alessio 2010-07-21 16:27
Citazione Raffaele:
Grazie della risposta..quindi in pratica anche su degli switch 3750 sui quali volessi applicare delle acl,per far si che un singolo host venga appunto "negato" o "permesso",bisognerà risalire al suo ip e non all'hostname che da quanto ho capito non viene riconosciuto come comando nell'acl..Giusto?
Grazie ancora


Esattamente.
Ciao
Rispondi
# Raffaele 2010-07-21 08:15
Citazione Alessio:
Citazione Raffaele:
Sarebbe possibile configurare una ACL che faccia il deny di un hostname specifico e non solo dell'ip?


No, non si può fare con le acl ma si deve passare al content filtering:

www.cisco.com/.../index.html

Puoi ottenere dei risultati simili con le zone based cisco.com/.../...

Pubblicherò qualcosa a riguardo prossimamente.



Grazie della risposta..quind i in pratica anche su degli switch 3750 sui quali volessi applicare delle acl,per far si che un singolo host venga appunto "negato" o "permesso",biso gnerà risalire al suo ip e non all'hostname che da quanto ho capito non viene riconosciuto come comando nell'acl..Giusto?
Grazie ancora
Rispondi
# Alessio 2010-07-20 16:11
Citazione Raffaele:
Sarebbe possibile configurare una ACL che faccia il deny di un hostname specifico e non solo dell'ip?


No, non si può fare con le acl ma si deve passare al content filtering:

www.cisco.com/.../index.html

Puoi ottenere dei risultati simili con le zone based cisco.com/.../...

Pubblicherò qualcosa a riguardo prossimamente.
Rispondi
# Raffaele 2010-07-20 16:08
Sarebbe possibile configurare una ACL che faccia il deny di un hostname specifico e non solo dell'ip?
Rispondi

Aggiungi commento


Codice di sicurezza
Aggiorna

Utilizzando questo sito accetti l'uso di cookie per analisi, contenuti personalizzati e pubblicità mirata (tramite Google AdSense). Clicca qui per maggiori informazioni