Una sequenza di access-list permettono o bloccano il traffico verso specifice destinazioni o applicazioni (porte) ad esempio 22,23,80,445,3389 ecc.
La sequenza di access-list è letta in sequenza fino a quando il pacchetto dati non incontra l’esatta access-list (matches)
Una volta trovata la corrispondente ACL il processo ricomincia da capo SEMPRE dall’alto verso il basso.
Prendiamo per esempio le ACLs qui sotto:
Access-list test1 deny ip 10.0.0.0 0.255.255.255 any (permit)
Access-list test1 deny ip 20.0.0.0 0.255.255.255 any (permit)
Access-list test1 deny ip 30.0.0.0 0.255.255.255 any (deny)
Access-list permit ip host 30.0.0.1 any (deny)
Un’altra cosa da sapere è che alla fine di ogni sequenza di access-list è implicito deny deny.
In altre parole se un pacchetto non incontra nessuna ACL viene scartato, quindi tutto quello che non è esplicitamente dichiarato è implicitamente bloccato.
Altra cosa da ricordare è che se le ACLs non vengono applicate alle interfaccie queste non avranno nessuno effetto.
Due tipi di ACLs
Standard ACL (1-99 o 1300-1999) dovrebbero essere posizionate solo vicino all’interfaccia sorgente.
Extended ACL (100-199 o 2000-2699)
IP sorgente
IP di destinazione
Tipo di protocollo
Numero di porta
Ruoli delle Access-list:
Un tipo di ACLs per tipo (standard o Extended) per direzione, per interfaccia.
Il tipo di ACLs Standard 1-99 o 1300-1999 oppure Estesa 100-199 o 2000-2999
Ricorda non puoi avere due ACL sotto la stessa interfaccia in due direzioni diverse. Quando dico direzioni intendo dati in entrata e in uscita.
Comandi standard access-list
Access-list (1-99) (permit | deny) (source address) (wildcard bits)
Ad esempio se vogliamo permettere il traffico per la rete 192.168.1.0/24access-list 10 permit 192.168.1.0 0.0.0.255
Oppure bloccare il traffico per la rete 195.16.0.0/16
Access-list 20 deny 195.16.0.0 0.0.255.255
Wildcard (inverse subnet mask)
Ad esempio una subnet /23 cioè 255.255.255.254.0 =
11111111.11111111.11111110.00000000
La corrispondente wildcard è 0.0.1.255 gli ultimi 9 bits possono essere qualsiasi IP
Altro esempio subnet /27 = 11111111.11111111.11111111.11100000
Oppure 0.0.0.31 = 00000000.00000000.00000000.00011111
Gli utltimi 5 bits possono essere qualsiasi indirizzo.
Access-list 10 deny 192.168.101.0 0.0.0.255
Access-list 10 deny 192.168.102.0 0.0.0.255
Access-list 10 deny 192.168.103.0 0.0.0.255
Access-list 10 permit any
In questo esempio alla fine abbiamo permit any, questo perchè avendo tre deny e non specificando Access-list 10 permit any bloccherei tutto il traffico.
Ricorda quello che non è ESPLICITAMENTE permesso è implicitamente bloccato.
L’ordine in cui vengono scritte le ACLs è molto importante ad esempio
Access-list 10 deny 192.168.0.0 0.0.0.255
Access-list 10 permit host 192.168.0.1
In questo esempio blocco il traffico anche per 192.168.0.1 perchè stiamo andando da una ACL generica 192.168.0.0 ad una specifica. Mentre invertendole funzionerebbe.Access-list 10 permit host 192.168.0.1Access-list 10 deny 192.168.0.0 0.0.0.255
asa(config)# show access-list
access-list ABC line 1 extended deny tcp any host 209.165.201.29 eq www (hitcnt=0)
Per rimuovere una ACL
asa(config)# no access-list ABC extended deny tcp any host 209.165.201.29 eq www
Potremmo aver bisogno di creare una ACL che entri in azione in un giorno ed un’ora specifica ad esempio:
asa(config)# time-range weekend
asa(config)# periodic weekdays 09:00 to 18:00
asa(config)# access-list ABC line 1 extended deny tcp any host 209.165.201.29 eq www time-rage weekend
Network-object
asa(config)# objet-group network HR-Finance
asa(config-network-object )# description HR e Finance
asa(config-network-object )# network-object host 192.168.10.20
asa(config-network-object )# network-object 172.16.0.0 255.255.0.0
Quindi adesso creiamo le nostre ACLs
asa(config)# access-list abc1 permit tcp objet-group HR-Finance any eq www
asa(config)# access-list abc2 permit tcp objet-group HR-Finance any eq 443
Abilitare il PING dall’esterno all’interno
asa(config)# access-list 101 permit icmp any any echo-reply
asa(config)# access-list 101 permit icmp any any source-quench
asa(config)# access-list 101 permit icmp any any unreachable
asa(config)# access-list 101 permit icmp any any time-exeeded
E la dobbiamo abiliare sotto l’interfaccia OUTSIDE
Access-group 101 in interface outside