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