Questa ? una guida per
creare un filtro ACL-based su router Cisco per bloccare in ingresso le porte
pi? vulnerabili, permettendone l'accesso solo
verso le macchine
autorizzate (e protette) a fornire i servizi. Le indicazioni riportate non
possono ovviamente coprire tutte le possibilit?, ma
permettono di poter
implentare una protezione minimale.
Viene riportato anche un
esempio di filtro in uscita (Antispoofing).
Per una descrizione
completa delle porte controllate il sito: iana (Internet Assigned Numbers
Authority)
NB: questo filtro va
applicato per il traffico in ingresso sull'interfaccia di collegamento verso il
GARR.
Onde evitare
interruzioni nei servizi di rete, ? consigliabile implementare le ACL un po'
per volta e non tutte contemporaneamente: a mano a mano
controllate il logging e
verificate con i vostri utenti se compaiono inconvenienti.
Le access-list sono
solitamente lunghe e complesse: editate un file con un nome mnemonico dove
scrivere tutte le regole che verr? poi caricato sul
router via tftp.
Inserite nel file dei commenti (carattere ! in prima colonna): vi serviranno in
futuro come riferimento.
Le ACL verranno poi
interpretate nell'ordine in cui sono scritte; fate attenzione perché il router
uscir? dal filtro al primo match che incontra,
ignorando le righe
successive.
Nell' esempio che segue
viene utilizzata l'access-list numero 103 (questo numero pu? essere scelto tra
100 e 199). Vedremo in seguito come verr?
attivata sul router.
Tutte le righe di
access-list terminano con "log": in questo modo ogni volta che un
pacchetto viene scartato, viene loggato sul router, ed
eventualmente anche su
una macchina che raccoglie i log, per analisi successive (anche per questo
vedremo in seguito come fare).
Prima e ultima riga del filtro
Il filtro deve DEVE SEMPRE avere come
prima riga:
no access-list 103
questo perché altrimenti le nuove regole con le ACL verranno
aggiunte alla access-list 103 gi? attiva sul router. Non ? possibile infatti
aggiungere ACL in mezzo ad un filtro:
bisogna cancellarlo e poi ricrearlo.
Inoltre DEVE SEMPRE avere come ultime
righe:
access-list 103 permit ip
any any
end
La prima serve per fare passare tutto
quello che non viene bloccato dalle ACL (senza questa riga il default sarebbe
deny any any
implicito);
la seconda termina il filtro.
Permette le connessioni gi? aperte
I pacchetti che hanno gi? superato la
fase di setup (p.e. connessioni dall'interno della LAN) non vengono
controllati.
access-list 103 permit tcp
any any established
AntiSpoofing
Blocca il traffico proveniente da network
riservate:
access-list 103 deny ip
host 0.0.0.0 any log
access-list 103 deny ip 127.0.0.0
0.255.255.255 any log
access-list 103 deny ip 10.0.0.0 0.255.255.255 any log
access-list 103 deny ip 172.16.0.0
0.15.255.255 any log
access-list
103 deny ip 192.168.0.0 0.0.255.255
any log
e proveniente da network locali:
access-list 103 deny ip
XXX.YYY.ZZZ.0 0.0.0.255 any log
NB: inserire una riga per ognuna delle network del
proprio dominio
Blocco di eventuali host indesiderati
Se volete bloccare l'ingresso di host
specifici:
access-list 103 deny ip
host xxx.yyy.zzz.kkk any log
Blocco di eventuali network indesiderate
Se volete bloccare l'ingresso di network
specifiche:
access-list
103 deny ip xxx.yyy.zzz.0 0.0.0.255
any log
Blocca tutto dalla porta 1 alla porta 20
Le porte dalla 1 alla 20 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 1 20 log
access-list 103 deny tcp any
any range 1 20 log
Filtra porta 21 - FTP
FTP trasmette la password in chiaro per
cui ? potenzialmente pericoloso, a volte per? ? necessario tenerlo aperto verso
alcune macchine
(p.e. macchine amministrazione). Se dovete
lasciarlo aperto, fatelo solo network to host o (meglio) host to host e
bloccate FTP verso le
altre macchine:
access-list 103 permit tcp xxx.yyy.zzz.kkk host sss.ddd.fff.ggg eq
21 <<< host to
host
access-list 103 permit tcp xxx.yyy.zzz.0 0.0.0.255 host sss.ddd.fff.ggg
eq 21 <<< network to host
access-list 103 deny tcp any
any eq 21 log
access-list 103 deny udp any
any eq 21 log
Blocca porta 22 - SSH
Se avete host con versioni SSH non sicure:
access-list 103 deny tcp
any host xxx.yyy.zzz.kkk eq 22
access-list 103 deny udp any host xxx.yyy.zzz.kkk eq 22
Filtra porta 23 - Telnet
Telnet trasmette la passowrd in chiaro
come FTP ma a volte ? necessario tenerlo aperto:
access-list 103 permit tcp
xxx.yyy.zzz.kkk host sss.ddd.fff.ggg eq 23 <<< host to host
access-list 103 permit tcp xxx.yyy.zzz.0 0.0.0.255 host sss.ddd.fff.ggg
eq 23 <<< network to host
access-list 103 deny tcp any
any eq 23 log
access-list 103 deny udp any
any eq 23 log
Blocca porta 24 - any private mail system
La porta 24 non ? normalmente necessaria(
iana)
access-list 103 deny tcp any any eq 24 log
access-list 103 deny udp any any
eq 24 log
Filtra porta 25 - SMTP
La porta 25 deve essere aperta solo verso
il(i) mailserver xxx.yyy.zzz.kkk:
access-list 103 permit tcp
any host xxx.yyy.zzz.kkk eq smtp
access-list 103 deny tcp any
any eq smtp log
access-list
103 deny udp any any eq 25 log
Blocca tutto dalla porta 26 alla porta 52
Le porte dalla 26 alla 52 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 26 52 log
access-list 103 deny tcp any any
range 26 52 log
Filtra porta 53 - DNS
La porta 53 deve essere aperta solo verso
il(i) DNS Nameserver locali xxx.yyy.zzz.kkk in udp;
in tcp solo da macchine DNS server
esterne autorizzate al zone-transfer:
access-list 103 permit udp any host
xxx.yyy.zzz.kkk eq domain <<<
aggiungere pi? righe per pi? server
access-list 103 permit tcp host
ddd.fff.ggg.hhh host xxx.yyy.zzz.kkk eq domain
<<< aggiungere pi? righe per pi? server
access-list 103 deny tcp any any eq domain log
access-list 103 deny udp any
any eq domain log
Blocca tutto dalla porta 54 alla porta 79
Le porte dalla 54 alla 79 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 54 79 log
access-list
103 deny tcp any any range 54 79 log
Filtra porta 80 - HTTP
La porta 80 deve essere aperta solo verso
il(i) WWW-http Server xxx.yyy.zzz.kkk:
access-list 103 permit tcp
any host xxx.yyy.zzz.kkk eq www
<<< aggiungere pi? righe per pi? server
access-list 103 deny tcp any
any eq www log
access-list 103 deny udp any
any eq 80 log
Blocca tutto dalla porta 81 alla porta 109
Le porte dalla 81 alla 109 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 81 109 log
access-list 103 deny tcp any
any range 81 109 log
Filtra porta 110 - POP3
La porta 110 deve essere aperta solo
verso il(i) POP3 Server xxx.yyy.zzz.kkk, se ce ne sono:
access-list 103 permit tcp
any host xxx.yyy.zzz.kkk eq pop3
<<< aggiungere pi? righe per pi? server
access-list 103 deny tcp any
any eq pop3 log
access-list 103 deny udp any
any eq 110 log
Blocca tutto dalla porta 111 alla porta 122
Le porte dalla 111 alla 122 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 111 122 log
access-list 103 deny tcp any
any range 111 122 log
Filtra porta 123 - NTP
La porta 123 deve essere aperta solo
verso il(i) NTP (Time syncronization) Server xxx.yyy.zzz.kkk, se ce ne sono:
access-list 103 permit udp
any host xxx.yyy.zzz.kkk eq 123
<<< aggiungere pi? righe per pi? server
access-list 103 deny tcp any
any eq 123 log
access-list 103 deny udp any
any eq 123 log
Blocca tutto dalla porta 124 alla porta 136
Le porte dalla 124 alla 136 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 124 136 log
access-list 103 deny tcp any any
range 124 136 log
Filtra porte 137 138 139 - NetBios
La porte 137, 138, 139 devono essere
aperte solo se necessario o richiesto (p.e. Server NICE) xxx.yyy.zzz.kkk
(verificate anche se serve
aperta la porta 445 - Microsoft DS):
all to host:
access-list 103 permit tcp any host xxx.yyy.zzz.kkk range 137 139
access-list 103 permit udp any host xxx.yyy.zzz.kkk range 137 139
access-list 103 deny tcp any
any range 137 139 log
access-list 103 deny udp any
any range 137 139 log
oppure
host to host:
access-list 103 permit tcp host sss.ddd.fff.ggg host
xxx.yyy.zzz.kkk range 137 139
access-list 103 permit udp host sss.ddd.fff.ggg host
xxx.yyy.zzz.kkk range 137 139
access-list 103 deny tcp any
any range 137 139 log
access-list 103 deny udp any
any range 137 139 log
Blocca tutto dalla porta 140 alla porta 142
Le porte dalla 140 alla 142 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 140 142 log
access-list 103 deny tcp any
any range 140 142 log
Filtra porta 143 - IMAP
La porta 143 deve essere aperta solo
verso il(i) IMAP Server xxx.yyy.zzz.kkk:
access-list 103 permit tcp
any host xxx.yyy.zzz.kkk eq 143 <<< aggiungere pi? righe per pi?
server
access-list 103 deny tcp any
any eq 143 log
access-list 103 deny udp any
any eq 143 log
Blocca tutto dalla porta 144 alla porta 169
Le porte dalla 144 alla 169 non sono normalmente
necessarie( iana)
access-list 103 deny udp any any range 144 169 log
access-list 103 deny tcp any
any range 144 169 log
Filtra porta 170 - PRINT-SRV
Se volete permettere l'accesso alla stampante
xxx.yyy.zzz.kkk da altri domini presenti sulla vostra LAN, p.e. network
sss.ddd.fff.0 del
Dipartimento di Fisica (vedere anche
porta 515):
access-list 103 permit tcp sss.ddd.fff.0
0.0.0.255 host xxx.yyy.zzz.kkk eq 170
<<< aggiungere pi? righe per pi? stampanti
access-list 103 deny tcp any any eq 170 log
access-list 103 deny udp any
any eq 170 log
Blocca tutto dalla porta 171 alla porta 442
Le porte dalla 171 alla 442 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 171 442 log
access-list 103 deny tcp any
any range 171 442 log
Filtra porta 443 - HTTPS
La porta 443 deve essere aperta solo
verso il(i) WWW-HTTPS e/o WebMail Server, xxx.yyy.zzz.kkk:
access-list 103 permit tcp
any host xxx.yyy.zzz.kkk eq 443
<<< aggiungere pi? righe per pi? server
access-list 103 deny tcp any
any eq 443 log
access-list 103 deny udp any
any eq 443 log
Blocca tutto dalla porta 444 alla porta 448
Le porte dalla 444 alla 448 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 444 448 log
access-list 103 deny tcp any
any range 444 448 log
Filtra porta 449 - AS Server Mapper
Alcuni Java script utilizzati dall'
Amministrazione INFN a Frascati sull'host sss.ddd.fff.ggg potrebbero avere la
necessit? di questa porta
aperta verso il sistema AS400 locale
xxx.yyy.zzz.kkk:
access-list 103 permit tcp host
sss.ddd.fff.ggg host xxx.yyy.zzz.kkk eq 449
access-list 103 deny tcp any any eq 449 log
access-list 103 deny udp any
any eq 449 log
Blocca tutto dalla porta 450 alla porta 514
Le porte dalla 450 alla 514 non sono normalmente
necessarie( iana)
access-list 103 deny udp any any range 450 514 log
access-list 103 deny tcp any
any range 450 514 log
Filtra porta 515 - SPOOLER
Se volete permettere l'accesso alla
stampante xxx.yyy.zzz.kkk da altri domini presenti sulla vostra LAN, p.e.
network sss.ddd.fff.0 del
Dipartimento di Fisica (vedere anche
porta 170):
access-list 103 permit tcp sss.ddd.fff.0
0.0.0.255 host xxx.yyy.zzz.kkk eq 515
<<< aggiungere pi? righe per pi? stampanti
access-list
103 deny tcp any any eq 515 log
access-list 103 deny udp any
any eq 515 log
Blocca tutto dalla porta 516 alla porta 960
Le porte dalla 516 alla 960 non sono
normalmente necessarie( iana)
access-list 103 deny udp any any range 516 960 log
access-list 103 deny tcp any
any range 516 960 log
Porte da 961 a 990 aperte per ssh
Filtra porta 993 - IMAP4 (IMAP SSL)
La porta 993 deve essere aperta solo
verso il(i) IMAP-SSL server xxx.yyy.zzz.kkk:
access-list 103 permit tcp
any host xxx.yyy.zzz.kkk eq 993 <<< aggiungere pi? righe per pi?
server
access-list 103 deny tcp any
any eq 993 log
access-list 103 deny udp any
any eq 993 log
Porte da 994 a 1022 aperte per ssh
Con questo abbiamo terminato le porte
definite Well Known. Per le porte superiori, ecco alcuni esempi di porte da
filtrare:
!
! 1080 chiusa per IRC
!
access-list 103 deny tcp any any eq 1080 log
access-list 103 deny udp any
any eq 1080 log
!
! 1993 UDP chiusa per sicurezza SNMP
CISCO
!
access-list 103 deny udp any
any eq 1993 log
!
! 2049
NFS
!
access-list 103 deny tcp any
any eq 2049 log
access-list 103 deny udp any
any eq 2049 log
!
!
6667 chiusa per IRC
!
access-list 103 deny tcp any any eq 6667 log
access-list 103 deny udp any
any eq 6667 log
!
! 27374 chiusa per worm ramen
!
access-list 103 deny tcp any any
eq 27374 log
access-list 103 deny udp any
any eq 27374 log
Chiusura del file
Come gi? riportato all'inizio, chiudete
il file con:
access-list 103 permit any
any
end
Filtro in uscita
In questo esempio viene creato un filtro
(access-list 104 in questo caso) in uscita per l'interfaccia verso la rete
esterna.
Queste ACL servono per:
bloccare host del vostro dominio
(p.e. host compromessi in attesa di bonifica).
bloccare porte in uscita utilizzate da virus.
Antispoofing delle network locali:
permette l'uscita solo dei pacchetti che abbiano come source address indirizzi
delle network locali.
tutto il resto viene bloccato
no access-list 104
!
! *********************************
! filtro per wan in uscita
!
*********************************
!
access-list 104 deny tcp host
xxx.yyy.kkk.zzz any log
access-list 104 deny udp host
xxx.yyy.kkk.zzz any log
!
! 27374 chiusa per worm ramen
!
access-list 104 deny tcp any
any eq 27374 log
access-list 104 deny udp any
any eq 27374 log
!
!
antispoofing dalle network locali
!
access-list 104 permit ip xxx.yyy.kkk.0 0.255.255.255 any
access-list 104 permit ip xxx.yyy.hhh.0 0.255.255.255 any
!
! tutto il resto viene bloccato
!
access-list 104 deny ip any any log
!
end
Attivazione filtri
I file con i filtri devono risiedere su
una macchina che abbia TFTP attivo in una directory autorizzata al TFTP (vedi
/etc/inetd.conf o
equivalente). Le protezioni dei file
devono essere: -rwxr-xr-x (chmod 775).
Dalla console del Cisco, in enable,
individuate (show interface) l'interfaccia di accesso alla rete esterna (p.e.
ATM2/0.1) ed eseguite i
seguenti comandi per caricare il file con
il filtro e associare l'access-list 103 al traffico entrante ed eventualmente
l'access-list 104 al
traffico uscente dell'interfaccia verso
il GARR.
# copy tftp run
host ?
[return]
Address
of remote host? host-con-tftp
Name of
configuration file? /drectory-tftp/filtro.103
Il router carica il filtro, segnalando se ci sono errori
di sintassi o se l'operazione viene completata con successo.
Se lo avete implementato, ripete
l'operazione per il filtro in uscita (access-list 104).
Ora associamo i filtri all'interfaccia:
# conf t
interface ATM2/0.1
ip
access-group 103 in
ip access-group 104 out << solo se implementato
control Z
Ricordate di salvare le modifiche:
# copy run startup
# copy
run tftp
per salavare la configurazione su host con tftp deve esistere
nella directory abilitata al tftp un file vuoto con protezione:
-rwxrwxrwx (chmod 777).
Logging
Dalla console del Cisco ? possibile
monitorare i pacchetti scartati con il comando:
# show logging
in testa alla videata vengono
visualizzati gli eventi pi? recenti. Questo sistema non ? per? molto comodo:
visualizza solo gli eventi pi?
recenti. Per inviare i messaggi di log su
un host, eseguite i seguenti comandi sul router:
# conf t
logging buffered 16384 << dimensioni buffer
no logging console << disabilita i
messaggi su console
logging trap debugging << livello dei
messaggi generati
logging facility local6 << definisce su quale facility il syslog della macchina
riceve i messaggi
logging xxx.yyy.kkk.hhh << host di destinazione
Sull'host di destinazione, nel file
/etc/syslog.conf ( o equivalente) inserire una riga:
local6.debug
/directory/cisco.log
Su questi log file si possono utilizzare tool automatici
per verificare eventuali scan, compromissioni, etc.
A seconda della quantit? e complessit?
delle ACL, questo file pu? crescere di dimensioni rapidamente: utilizzate tool
come logrotate per
ruotarli, comprimerli e archiviarli.
Con il comando show process ? possibile
visualizzare il carico della cpu del Cisco per verificare l'impatto dei filtri
sulle performance del
router.
Per informazioni o commenti sulla pagina:
F. Brasolin