CISCO ACL access control list


Le CISCO ACL (access control list) sono un elenco di regole che servono per controllare e filtrare gli accessi in una rete. Generalmente vengono impostate su un firewall oppure su un router.
Le ACL funzionano confrontando il flusso dati di una comunicazione con dei modelli (pattern) scelti da un amministratore di rete.
Esistono molte versioni di ACL prodotte da Cisco tra cui le access control list standard e le ACL estese.

ACL standard

Ecco un esempio di ACL standard:
   1. Router#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. Router(config)#access-list 10 deny host 192.168.0.1
   4. Router(config)#access-list 10 permit any
   5. Router(config)#interface f0/0
   6. Router(config-if)#ip access-group 10 in
   7. Router(config-if)#exit
   8. Router(config)#end
cisco acl router access control list

Con le regole impartite, tutte le richieste di connessione e l'invio di pacchetti da parte di 192.168.0.1 che sono giunte all'interfaccia fast ethernet 0/0 del router vengono scartati, mentre viene inoltrato oltre f0/0 il traffico proveniente da qualsiasi altro indirizzo IP. La linea 3 è formata così:
access-list 10 deny host 192.168.0.1

access-list è la parola chiave per impostare una regola ACL, 10 rappresenta un numero nell'intervallo fra 1 e 99 per definire un gruppo di regole che verranno applicate insieme, deny è la parola chiave che indica di scartare i pacchetti o messaggi della comunicazione, host 192.168.0.1 indicano di effettuare l'azione su ciò che viene dal singolo indirizzo 192.168.0.1.
access-list 10 permit any

La riga 4 autorizza tutto il traffico, grazie alla parola permit, proveniente da ogni indirizzo IP. Dato che le ACL vengono applicate dalla prima all'ultima un eventuale pacchetto originato da 192.168.0.1 viene bloccato dalla prima regola (quella stabilita nella terza riga).
ip access-group 10 in

La sesta linea assegna all'interfaccia f0/0 il gruppo di regole con numero 10, in più le access control list vengono controllate quando i pacchetti entrano nel router a causa della parola chiave in.
Una altra possibilità consiste nell'attribuire l'insieme delle ACL in uscita da un'interfaccia del dispositivo di filtraggio, in questo caso la parola chiave da adoperare è out.

ACL estese


   1. R1#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. R1(config)#access-list 110 deny tcp host 192.168.1.12 host 10.1.1.1
   4. R1(config)#access-list 110 permit tcp any any
   5. R1(config)#interface s0/0
   6. R1(config-if)#ip access-group 110 in
   7. R1(config-if)#exit
   8. R1(config)#end


Le ACL immesse nel router sono quelle di tipo esteso. Il vantaggio di usare le access control list estese è la possibilità di indicare per quali protocolli impedire o permette il traffico mentre le ACL standard consentono solamente di operare un controllo solo a livello di indirizzo IP.
access-list 110 deny tcp host 192.168.1.12 host 10.1.1.1

Nella riga 3 viene usato la cifra 110 come numero dell'insieme di regole; le ACL estese possono usare i valori compresi fra 100 e 199. Viene negato (deny) il passaggio oltre il router per tutti i segmenti tcp con IP address sorgente 192.168.1.12 e con indirizzo IP di destinazione 10.1.1.1.
access-list 110 permit tcp any any

La regola successiva permette l'inoltro dei segmenti tcp verso tutti gli host collegati.
Attenzione: solamente i segmenti TCP provenienti da 192.168.1.12 e diretti verso 10.1.1.1 vengono scartati, se 192.168.1.12 fa un ping (ICMP) a 10.1.1.1 non riceve risposta perché secondo la "filosofia" di CISCO tutto il traffico non autorizzato è eliminato. Con la regola 110 permit tcp any any è stato concesso solo il passaggio di tcp e non icmp, udp ...
ip access-group 110 in

La linea 6 attribuisce all'interfaccia seriale 0/0 le ACL del gruppo 110 in entrata.

   1. R1#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. R1(config)#access-list 120 deny icmp host 192.168.1.12 host 10.1.1.1
   4. R1(config)#access-list 120 permit icmp host 192.168.1.13 host 10.1.1.1
   5. R1(config)#interface f0/0
   6. R1(config-if)#ip access-group 120 in
   7. R1(config-if)#exit
   8. R1(config)#end

Con questo altro gruppo di regole viene vietato il traffico ICMP proveniente da 192.168.1.12 per 10.1.1.1. Con la successiva si autorizza in entrata l'inoltro dei messaggi ICMP diretti a 10.1.1.1 originati da 192.168.1.13. Si noti che la prima regola (linea 3) risulta superflua in quanto dal momento che ad un'interfaccia è stata attribuita una lista di controllo degli accessi tutto il resto del traffico non esplicitamente regolato dalle ACL viene negato (deny): è come se fosse stata aggiunta la regola access-list 110 deny any any.

Filtrare sottoreti o reti

Si può fare in modo che le ACL riconoscano più indirizzi IP invece che un solo IP. Per fare questo si può usare una sintassi:
access-list 111 deny icmp 192.168.1.0 0.0.0.255 10.1.1.0 0.0.255.255

I quattro numeri separati da un punto successivi a 192.168.1.0 formano la wilcard mask ovvero un pattern che indica al router quali bit controllare dell' IP addess sorgente: in questo caso solamente l'ultimo ottetto viene fatto variare mentre la parte indicata con gli zeri è fissa; la wildcard mask è simile al concetto di subnet mask. La regola stabilisce di negare icmp provenienti dagli indirizzi della rete 192.168.1.0/24 destinati alla rete 10.1.0.0/16

PATTERN ACL standard:
access-list {1...99} {permit|deny} IP-sorgente wilcard-mask IP-destinazione wilcard-mask

PATTERN ACL estese:
access-list {100..199} {permit|deny} protocollo IP-sorgente wilcard-mask op porta-sorgente IP-destinazione wilcard-mask op porta-destinazione

Due modi per...

access-list 11 deny 192.168.1.1 0.0.0.0

è equivalente a

access-list 11 deny host 192.168.1.1

Così come:

access-list 11 deny 0.0.0.0 255.255.255.255

è uguale a

access-list 11 deny any

   1. R1(config)#access-list 167 permit ip 10.2.2.0 0.0.0.255 any

La linea 1 crea un access control list che permette a un datagramma IP originato da un computer della rete 10.2.2.0/24 di oltrepassare il router e giungere a qualsiasi dispositivo.

ACL in uscita

Ecco un esempio nel quale le Cisco ACL vengono assegnate a un'interfaccia in uscita.

   1. R1#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. R1(config)#access-list 130 permit icmp 192.168.1.0 0.0.0.255 host 10.1.1.1
   4. R1(config)#interface f0/0
   5. R1(config-if)#ip access-group 130 out
   6. R1(config-if)#exit
   7. R1(config)#end

Se l'interfaccia f0/0 del router ha IP address 192.168.5.100 e 192.168.2.1 "pinga" l'interfaccia del router riceverà risposta nonostante sia presente una ACL che parrebbe filtrare i pacchetti.

Attenzione usando l'out i pacchetti non vengono filtrati se sono generati dal router stesso!

Per  fare un controllo sulla correttezza delle ACL impostate e per avere alcuni dettagli numero di volte che una regola è stata usata da un router si può utilizzare:

R1$enable
R1#show access-list 160
Extended IP access list 160
    deny ip host 192.168.3.2 host 10.3.3.3 (124 matches)
    permit ip 192.168.3.1 0.0.0.255 any (321 matches)
    deny ip any any (428 matches)

ACL estese e porte


   1. R1#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. R1(config)#access-list 180 permit tcp any any eq www
   4. R1(config)#access-list 180 deny tcp any any gt 1023
   5. R1(config)#access-list 180 permit icmp any any
   6. R1(config)#access-list 180 permit udp any any eq ntp
   7. R1(config)#access-list 180 deny ip any any
   8. R1(config)#interface S0/0
   9. R1(config-if)#ip access-group 180 in
  10. R1(config-if)#exit
  11. R1(config)#end


Ecco una serie più complessa di Cisco Access Control List che permette il traffico sulla porta 80 (www) da ogni IP address verso tutti le possibili destinazioni, nonché nega l'apertura delle porte effemerali (superiori alla 1023) e autorizza i pacchetti udp verso la porta ntp; il resto è vietato.
La terza riga indica di accettare il traffico TCP da e per ogni indirizzo IP. Non è autorizzato tutto il traffico bensì solamente quello destinato alla porta 80; questo è  indicato mediante l'uso di "eq www". In specifico "eq" significa equal mentre "www" sta per indicare la porta 80.
La riga 4 stabilisce che tutto il traffico tcp con porte maggiori di 1023 (1024...65535) è negato; gt sta per greater than, lt significa less then, neq = not equal then.

R1(config)#access-list 112 permit udp any any range 6000 6063

Permette il traffico udp con porte da 6000 a 6063.

Nel caso sia necessaria una connessione ad un web server è necessario aprire le porte effemerali altrimenti non potranno avvenire scambi di pacchetti tra il client e il server.

R1#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#access-list 191 deny tcp any any ack fin psh rst syn urg
R1(config)#access-list 191 deny tcp any any rst syn
R1(config)#access-list 191 deny tcp any any rst syn fin
R1(config)#access-list 191 deny tcp any any rst syn fin ack
R1(config)#access-list 191 deny tcp any any syn fin
R1(config)#access-list 191 deny tcp any any syn fin ack
R1(config)#end

Il gruppo di regole 191 fa scartare dal router tutti i pacchetti tcp che portano dei flag alterati, spesso sinonimo di un tentativo di accesso non autorizzato. Vengono rifiutati i segmenti con una combinazione non valida come ad esempio syn e fin attivi contemporaneamente (non avrebbe senso).

ACL con riconoscimento dello stato

Se il router lo implementa è possibile creare delle access control list che facciano uso della parola chiave established, che fanno si che non sia necessario lasciare aperte le porte effemerali.

   1. R1#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. R1(config)#access-list 198 permit tcp any eq telnet any ack
   4. R1(config)#access-list 198 permit tcp any eq telnet any rst
   5. R1(config)#access-list 198 permit tcp any eq www any established
   6. R1(config)#access-list 198 deny ip any any
   7. R1(config)#interface f0/1
   8. R1(config-if)#ip access-group 198 in
   9. R1(config-if)#exit
  10. R1(config)#end


Il traffico TCP generato il cui stato della connessione è stabilito, ovvero quando i bit nel segmenti sono o RST o ACK, è autorizzato il resto è vietato. Ciò non impedisce ai segmenti di arrivare tramite una porta efimerale. Con questo gruppo di regole è impossibile ottenere una connessione dall'esterno ma permette ad un host che si trovi dentro la rete, il cui traffico non è in entrata sull'interfaccia f0/1 bensì in uscita sulla stessa, di collegarsi ad un ipotetico web server. In più il computer interno più collegarsi alla porta 23 (telnet) e ricevere i segmenti TCP di ritorno.

Esempio

Primo esempio

rete filtrata con access control list
   1. R1#configure terminal
   2. Enter configuration commands, one per line. End with CNTL/Z.
   3. R1(config)#access-list 148 permit icmp host 192.168.1.1 any echo
   4. R1(config)#access-list 148 permit icmp host 172.16.15.1 host 192.168.1.1 echo-reply
   5. R1(config)#access-list 148 permit tcp any any
   6. R1(config)#interface f0/1
   7. R1(config-if)#ip access-group 148 in
   8. R1(config-if)#exit
   9. R1(config)#end

Il router sull'interfaccia f0/1 (192.168.1.100) permette il passaggio di messaggi icmp echo (richiesta di ping) da tutti gli IP address ma risponde solamente a 192.168.1.1. Il traffico TCP è permesso.

Secondo esempio

access-list 110 permit tcp any host 193.205.101.10 eq www
access-list 110 permit icmp any any echo-reply
access-list 110 
permit tcp any eq 80 host 193.205.1.1 established

interface FastEthernet0/0
 ip address 193.205.200.1 255.255.255.0
 no ip directed-broadcast
 ip access-group 110 in
rete con dmz e intranet

Ecco l'attività registrata dal router se il PC Intra (
193.205.1.1) richiede si collega al web server nella DMZ (193.205.101.10)
(07) in  F0/2: TCP: 193.205.1.1:1026 to 193.205.101.10:80
(07) out F0/1: TCP: 193.205.1.1:1026 to 193.205.101.10:80
(08) in  F0/1: TCP: 193.205.101.10:80 to 193.205.1.1:1026
(08) out F0/2: TCP: 193.205.101.10:80 to 193.205.1.1:1026
Nessuna regola all'interno del router è convolta durante questa connessione.
Quella che segue è l'attività riportata dal router che mostra una connessione da parte di un client in Internet (
193.205.200.2) verso il web server della DMZ.
(37) in  F0/0: TCP: 193.205.200.2:1027 to 193.205.101.10:80
(37) out F0/1: TCP: 193.205.200.2:1027 to 193.205.101.10:80
(38) in  F0/1: TCP: 193.205.101.10:80 to 193.205.200.2:1027
(38) out F0/0: TCP: 193.205.101.10:80 to 193.205.200.2:1027

Non è possibile fare un ping al web server. Al client in Internet viene indicato che nessun ping ha ricevuto risposta mentre nelle attività del router è segnato un ingresso da parte di messaggi ICMP echo-request, ma non è registrato nessun messaggio in uscita. Questo perchè il traffico è stato scartato dalle regole ACL.

(43) in  F0/0: PINGReq: 193.205.200.2 to 193.205.1.1 TTL=128
(46) in  F0/0: PINGReq: 193.205.200.2 to 193.205.1.1 TTL=128
(47) in  F0/0: PINGReq: 193.205.200.2 to 193.205.1.1 TTL=128
(48) in  F0/0: PINGReq: 193.205.200.2 to 193.205.1.1 TTL=128

Il ping da il PC in intranet verso la DMZ invece ha successo per via del lascia passare delle echo-reply, ecco l'attività mostrata dal router:

(54) in  F0/2: PINGReq: 193.205.1.1 to 193.205.101.10 TTL=128
(54) out F0/1: PINGReq: 193.205.1.1 to 193.205.101.10 TTL=127
(55) in  F0/1: PINGAck: 193.205.101.10 to 193.205.1.1 TTL=128
(55) out F0/2: PINGAck: 193.205.101.10 to 193.205.1.1 TTL=127
(56) in  F0/2: PINGReq: 193.205.1.1 to 193.205.101.10 TTL=128
(56) out F0/1: PINGReq: 193.205.1.1 to 193.205.101.10 TTL=127
(57) in  F0/1: PINGAck: 193.205.101.10 to 193.205.1.1 TTL=128
(57) out F0/2: PINGAck: 193.205.101.10 to 193.205.1.1 TTL=127
(58) in  F0/2: PINGReq: 193.205.1.1 to 193.205.101.10 TTL=128
(58) out F0/1: PINGReq: 193.205.1.1 to 193.205.101.10 TTL=127
(59) in  F0/1: PINGAck: 193.205.101.10 to 193.205.1.1 TTL=128
(59) out F0/2: PINGAck: 193.205.101.10 to 193.205.1.1 TTL=127

L'ultima regola del gruppo permette al computer (
193.205.1.1) nella Intranet di collegarsi all'esterno e perciò di ricevere dei segmenti TCP di risposta alla richiesta di una pagine web che si trovi oltre l'interfaccia f0/0.

Per segnalare errori o se ci sono dubbi: helicoterus-nemo2presso yahoo it
Valent - Xen e VMware blog
Cisco ACL access control list tutorial: guida all'uso delle ACL in italiano

Valid HTML 4.01 Transitional