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
|
|
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
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 |
|
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
Cisco ACL access control list
tutorial: guida all'uso delle ACL in italiano