Archivi tag: soho77

Script per il backup automatico della configurazione di un router Cisco SOHO 77

Premessa

Un sistemista di rete previdente sa che è di vitale importanza poter contare su di un backup valido delle configurazioni relative ai vari network device. Proprio per questo motivo ho deciso di creare uno scrip che permettesse di automatizzare tale procedura.

soho.JPG

 

Configurare un server TFTP

Occorre precisare che il backup della configurazione del nostro router Cisco SOHO 77 verrà archiviato su di un server TFTP basato su una distribuzione *buntu.

Ma veniamo al dunque. Per prima cosa installiamo il server TFTP digitando:

nightfly@nightbox:~$ sudo apt-get install tftp tftpd xinetd

A questo punto posizioniamoci sulla directory /etc/xinetd.d e creiamo il file tftp il cui contenuto dovrà essere:

service tftp
 {
 protocol        = udp
 port            = 69
 socket_type     = dgram
 wait            = yes
 user            = nobody
 server          = /usr/sbin/in.tftpd
 server_args     = /tftpboot
 disable         = no
 }

Come si può notare dalla direttiva server_args     = /tftpboot il nostro server salverà la configurazione del router nella directory /tftpboot. Inoltre, poichè tale dir non è presente sulla nostra macchina è necessario crearla digitando:

nightfly@nightbox:/$ mkdir tftpboot

posizioniamoci all’interno di /tftpboot e creiamo il file vuoto router.cfg che conterrà la configurazione del SOHO 77:

nightfly@nightbox:/tftpboot$ sudo touch router.cfg

A questo punto lavoriamo sui permessi della directory appena creata e del suo contenuto:

nightfly@nightbox:/$ sudo chmod 777 -R tftpboot

nightfly@nightbox:/$ sudo chown nobody tftpboot

Riavviamo xinetd digitando:

nightfly@nightbox:/$ sudo /etc/init.d/xinetd stop

nightfly@nightbox:/$ sudo /etc/init.d/xinetd start

Infine, verifichiamo che il nostro server TFTP sia in ascolto digitando:

nightfly@nightbox:/$ sudo nmap -sU localhost

se l’output sarà simile al seguente:

69/udp   open|filtered tftp

vuol dire che il server risulta effettivamente in ascolto.

Scrip per il backup automatico della configurazione relativa al SOHO 77

Prima di mostrarvi lo scrip, è necessario installare un tool indispensabile al suo funzionamento. Tale tool prende il nome di expect:

nightfly@nightbox:/$ sudo apt-get install expect

Creiamo ora il file backup_conf_soho77 il cui contenuto dovrà essere il seguente:

#!/usr/bin/expect

set password1 "<pass1>"
set password2 "<pass2>" #necessaria nel caso in cui la password per l'enable sia diversa da quella per l'accesso via telnet

spawn telnet <IP del router>
expect "Password:"
send "$password1r"
expect ">"
send "enar"
expect "Password:"
send "$password2r"
expect "#"
send "copy system:running-config tftp://<IP del server TFTP>/router.cfgr"
expect "?"
send "r"
expect "?"
send "r"
expect "#"
send "exitr"
expect eof

NB: prima della r all’interno delle virgolette ci vuole il backslash, in modo da inviare al router un ritorno a capo (nello scrip non appare in quanto viene automaticamente skippato da myblog per ragioni di sicurezza).

Rendiamo lo scrip eseguibile mediante il comando:

nightfly@nightbox:~$ sudo chmod +x backup_conf_soho77

e successivamente spostiamolo nella directory /usr/bin:

nightfly@nightbox:~$ sudo mv backup_conf_soho77 /usr/bin

Adesso non ci resta che “schedulare” l’esecuzione dello scrip. Per fare questo è sufficiente inserire una entry in /etc/crontab:

00 00   * * * root backup_conf_router

In particolare, ogni mezzanotte verrà eseguito il backup della configurazione mediante lo scrip descritto in precedenza.

Riavviamo cron per rendere effettive le nuove impostazioni:

nightfly@nightbox:~$ sudo /etc/init.d/cron restart

ed abbiamo finito.

A presto.

 

Configurare un router Cisco SOHO per PPPoE

Dopo una breve (ma necessaria) pausa ho deciso di riprendere la pubblicazione sul blog, trattando argomenti di grande interesse che durante questo lasso di tempo ho potuto approfondire.

Uno di questi riguarda la configurazione di un router Cisco SOHO, nella fattispecie il 77, per il PPPoE (Point-to-Point Protocol over Ethernet). Infatti, da qualche mese, Telecom sta convertendo le proprie linee da ATM a FullIP, costringendo gli utenti ad utilizzare la configurazione PPPoE, l’unica compatibile con il FullIP.

Ma quali sono i vantaggi di una rete FullIP? Beh, uno su tutti è sicuramente la possibilità di ridurre l’overhead, facendo aumentare di conseguenza la banda disponibile all’utente.

Dopo questa breve introduzione passiamo alla configurazione vera a propria.

La prima cosa da fare è munirci di un cavo console (quello che esce in dotazione con il dispositivo – Vedi foto) e collegarlo alla porta com del nostro pc ed alla porta console (di colore blu) del router. A collegamento avvenuto apriamo hyperterminal (Start -> Programmi -> Accessori -> Comunicazioni -> Hyper Terminal) associamo un nome alla connessione (nella finestra di popup che appare dopo l’avvio del programma) e premiamo su “OK”. Adesso selezioniamo la porta com del pc alla quale è collegato il cavo (nel mio caso COM1) clickiamo nuovamente su “OK” ed entreremo all’interno del menu di configurazione della porta precedentemente selezionata.

7e502c2fa9f21120f389e5cfae1afa5f.jpg

 

Scegliamo i seguenti parametri:

1) Bit per secondo: 9600

2) Bit di dati: 8

3) Parità: nessuno

4) Bit di stop: 1

5) Controllo del flusso: Hardware

Bene adesso selezioniamo “OK” e ci apparirà una schermata bianca (non vi preoccupate è perfettamente normale). Accendiamo quindi il router (dal pulsante opportuno presente nel retro del dispositivo) e vedremo apparire come per magia l’output relativo alla sequenza di bootstrap. Terminata tale operazione ci apparira il propt:

Router>

Entriamo in modalità enable che ci permette di accedere ai comandi di configurazione del router semplicemente digitando ena (oppure enable, è indifferente):

Router > ena

Adesso il prompt ci apparirà così:

Router#

Entriamo nel menù di configurazione vero e proprio digitando conf t (oppure configure terminal):

Router# conf t

Il prompt ci apparirà nel modo seguente:

Router(config)#

Impostiamo il nome del router utilizzando il comando hostname. Ad esempio:

Router(config)# hostname NightRouter

Il prompt cambierà nuovamente:

NightRouter(config)#

Definiamo password sia per la connessione via console sia per l’accesso tramite telnet, scrivendo rispettivamente:

NightRouter(config)# line console 0

NightRouter(config-line)# password <vostrapass>

NightRouter(config-line)# login

mentre per telnet:

NightRouter(config-line)# line vty 0 4

NightRouter(config-line)# password <vostrapass>

NightRouter(config-line)# login

Bene, adesso configuriamo la password per entrare in modalità enable:

NightRouter(config)# enable password <vostrapass>

NightRouter(config)# enable secret <vostrapass>

NightRouter(config)# service password-encryption

NightRouter(config)# exit

NightRouter#

Il comando service password-encryption serve a calcolare il digest md5 di tutte le password presenti all’interno del file di configurazione, in modo tale che un semplice show run non le mostri in chiaro.

Fatto ciò possiamo dedicarci alla configurazione delle varie interfacce. Cominciamo dall’interfaccia Ethernet:

NightRouter(config)# interface eth0

Associamo indirizzo ip e subnet mask alla stessa:

NightRouter(config-if)# ip address 192.168.1.0 255.255.255.0

“Accendiamo” l’interfaccia:

NightRouter(config-if)# no shutdown

Identifichiamo l’interfaccia interna per il NAT:

NightRouter(config-if)# ip nat inside

Usciamo dalla modalità di configurazione della porta Ethernet

NightRouter(config-if)# exit

NightRouter(config)#

Configuriamo ora l’interfaccia ATM:

NightRouter(config)# interface ATM0

NightRouter(config-if)# pvc 8/35

Dopo aver digitato questo comando, il prompt ci apparirà nel modo seguente:

NightRouter(config-atm-vc)#

Settiamo il protocollo PPPoE:

NightRouter(config-atm-vc)# pppoe-client dial-pool-number 1

Configuriamo il Dialer:

NightRouter(config)# int Dialer0

Poichè spesso si utilizza ip pubblico dinamico assegnato direttamente dall’ISP occorre digitare:

NightRouter(config-if)# ip address negotiated

NB: Se si utilizza ip pubblico statico bisogna associarlo all’interfaccia attraverso il comando ip adcdress <indirizzo> <subnet mask>

Identifichiamo l’interfaccia esterna per il NAT:

NightRouter(config-if)# ip nat outside

Definiamo il protocollo di incapsulamento:

NightRouter(config-if)# encapsulation ppp

Specifichiamo quale dialer pool utilizzare:

NightRouter(config-if)# dialer pool 1

Definiamo adesso i parametri (userid e pass) per collegarsi all’ISP:

NightRouter(config-if)# ppp chap hostname <vostrauserid>

NightRouter(config-if)# ppp chap password <vostrapassword>

Se il vostro provider utilizza il PAP anzichè il CHAP occorre digitare:

NightRouter(config-if)# ppp pap sent-username <vostrauserid> password <vostrapassword>

Ora, poichè si sta utilizzando il protocollo PPPoE, occorre definire la dimensione dell’MTU, che nella fattispecie è pari a 1492 byte (mentre per l’ATM è di 1500 byte).

NightRouter(config-if)# ip mtu 1492

NightRouter(config-if)# exit

NightRouter(config)#

Non abbiamo ancora finito. Poichè il PPPoE supporta una dimensione massima dei segmenti TCP pari a 1452, occorre settare il seguente paramentro nell’ambito dell’interfaccia ethernet0 (altrimenti la navigazione sul Web ne risentirà parecchio):

NightRouter(config)# interface eth0

NightRouter(config-if)# ip tcp adjust-mss 1452

NightRouter(config-if)# exit

NightRouter(config)#

Adesso possiamo configurare i DNS che il router utilizzerà per la risoluzione degli indirizzi:

NightRouter(config)# ip domain-lookup

NightRouter(config)# ip name-server 151.99.125.2

NightRouter(config)# ip name-server 151.99.125.3

Configuriamo il NAT:

NightRouter(config)# ip nat inside source list 1 interface dialer 0 overload

Definiamo una default route:

NightRouter(config)# ip route 0.0.0.0 0.0.0.0 dialer0

Definiamo la policy per l’access list 1:

NightRouter(config)# access-list 1 permit 192.168.1.0 0.0.0.255

NB: tale access list permette a tutti gli host della net locale di uscire verso la rete esterna (Internet). Il paramentro 0.0.0.255 è detto wildcard mask ed effettua un check solo sugli ultimi 4 bit degli indirizzi ip locali.

Adesso non ci resta che bloccare l’accesso Telnet dall’esterno (ovvero da Internet) ed abilitare i log:

NightRouter(config)# line vty 0 4

NightRouter(config-line)# access-class 1 in

NightRouter(config-line)# exit

NightRouter(config)# service timestamps log datetime localtime show-timezone msec

NightRouter(config)# service timestamps debug datetime localtime show-timezone msec

NightRouter(config)# service sequence-numbers

NightRouter(config)# logging queue-limit 10000

NightRouter(config)# logging buffered 1000000 notifications

NightRouter(config)# logging console critical

NightRouter(config)# logging monitor debug

NightRouter(config)# logging history notifications

NightRouter(config)# logging buffered 150000

NightRouter(config)# logging count

NightRouter(config)# logging exception 100000

NB: per visualizzare i log basta lanciare il comando show log (dalla modalità enable).

Ah, quasi dimenticavo, per motivi di sicurezza conviene disabilitare il server HTTP interno:

NightRouter(config)# no ip http

Adesso salviamo quanto fatto fino ad ora digitando:

NightRouter# copy run start

Ecco completata la configurazione del nostro Router. A presto 🙂

PS: Per utilizzare alcuni programmi, quali ad esempio client p2p, è necessario impostare correttamente il port forwarding. Un esempio di rule è la seguente (porta tcp di aMule):

NightRouter(config)# ip nat inside source static tcp 192.168.1.4 4652 interface dialer0 4652

Dove 192.168.1.4 è l’host su cui è in esecuzione aMule, tcp il protocollo utilizzato e 4652 il numero della porta usata per la connessione al server p2p.

SOHO 77 e logging su una linux box

In questo post abbiamo visto come salvare i log di un Cisco PIX 501 su di un apposito server linux. Oggi invece descriverò la procedura per impostare correttamente il logging su di un router Cisco SOHO 77, affinchè le informazioni da esso generate vengano inviate ad una linux box che funge da logserver.

soho77.jpg


SOHO 77

Per prima cosa entriamo in modalità enable e lanciamo un conf t:

soho77# conf t

soho77(config)#

Adesso digitiamo i seguenti comandi:

soho77(config)# logging <indirizzo IP del logserver>

soho77(config)# log facility local2

Nel caso in cui si voglia impostare un certo livello di severity (ad esempio warning), deve essere usato il comando:

soho77(config)# logging trap 4

Infine, lanciamo un copy run start per rendere effettive le modifiche apportate alla configurazione del nostro router:

soho77(config)# copy run start

Linux box

Sulla nostra linux box (ovvero il logserver) occorre fare in modo che il demone rsyslogd intercetti a dovere gli eventi inviati dal router.

Per prima cosa apriamo in scrittura il file 50-default.conf presente nella directory /etc/rsyslog.d ed inseriamo la seguente stringa subito dopo user.* :

local2.4                        /var/log/soho77.log

Creiamo il file che dovrà contenere i log del SOHO77:

nightfly@nightbox:/etc/rsyslog.d$ sudo touch soho77.log

Riavviamo quindi il demone rsyslogd:

nightfly@nightbox:/etc/rsyslog.d$ sudo service rsyslog restart

A questo punto non ci resta che definire appositamente la logrotation, in modo da tenere traccia dei log inviati dal router per un giusto lasso di tempo, magari sottoforma di tarball.

Per fare ciò posizioniamoci nella directory /etc/logrotate.d/ e creiamo il file soho77, il cui contenuto dovrà essere:

/var/log/soho77.log {

rotate 7

weekly

compress

missingok

notifempty

}

In particolare, il numero massimo di log che verranno conservati (comprese le tarball) è pari a 7 (rotate 7), ciascun log verrà compresso (compress) ed archiviato settimanalmente (weekly). Inoltre, nel caso in cui il file di log sia mancante non verrà generato alcun messaggio di errore (missingok) e la rotation non verrà attuata quando il file di log risulta vuoto (notifempty).

Fine del post, alla prossima.

Irrobustire le difese del nostro router Cisco SOHO

Abbiamo già visto nei precedenti post come configurare il nostro router per i protocolli PPPoA e PPPoE. Adesso vediamo quali sono le possibili tecniche per difenderlo da eventuali attacchi di bruteforce, IP spoofing o di tipo Denial of Service (DoS).

Messa in sicurezza delle connessioni Telnet

Il nostro router Cisco consente (per default) la connessione sulla porta 23 (Telnet) anche da host esterni alla nostra rete (ovvero da Internet), rendendolo soggetto ad eventuali attacchi di bruteforce.

Un modo per evitare che ciò avvenga è creare un ACL apposita che permetta la connessione al router via Telnet esclusivamente dagli host della nostra rete. Supponiamo quindi che la nostra LAN comprenda 6 indirizzi utilizzabili, ovvero 192.168.1.1 (il router), 192.168.1.2, 192.168.1.3, 192.168.1.4, 192.168.1.5, 192.168.1.6. Come avrete notato la subnet mask utilizzata è una /29 (255.255.255.248), la quale comprende in tutto 8 indirizzi di cui solo 6 possono essere assegnati agli host (il primo indirizzo indentifica la nostra rete, ovvero 192.168.1.0, mentre l’indirizzo 192.168.1.7 rappresenta il broadcast).

Detto ciò, non ci resta che definire l’ACL, digitando:

NightRouter(config)#access-list 1 permit 192.168.1.0 0.0.0.7

Tramite questo comando abbiamo creato l’ACL standard identificata dal numero 1 che permette l’accesso agli host appartenenti alla nostra LAN. Per fare ciò abbiamo dovuto specificare sia l’indirizzo di rete (192.168.1.0) che la wildmask (0.0.0.7). Quest’ultima rappresenta la parte fissa dell’indirizzo mediante degli zeri, mentre la parte variabile viene indicata attraverso il massimo valore intero rappresentabile dai bit che verranno utilizzati per formare l’indirizzo IP degli host.

Ad esempio, nel nostro caso, una /29 indica che su 32 bit (dimensione di un indirizzo IPv4) 29 costituiscono la maschera, mentre gli ultimi 3 concorrono a costituire gli indirizzi IP degli host. Sappiamo che il valore intero massimo rappresentabile mediante questi bit è pari a 7. Ergo la wildmask sarà pari a 0.0.0.7.

Discorso analogo va fatto per la classe A di indirizzi privati, ovvero la 10.0.0.0/8. In questo caso abbiamo 8 bit che costituiscono la subnet mask mentre gli altri 24 verranno utilizzati per assegnare gli indirizzi IP agli host. Dunque quale sarà la wildcard mask? Semplice: 0.255.255.255.

Per gli indirizzi di classe B privati, che vanno da 172.16.0.0/16 a 172.31.255.255/16 abbiamo la seguente wildcard: 0.15.255.255. Infine, per gli indirizzi privati di classe C, ovvero 192.168.1.0/24, 192.168.2.0/24 e così via possiamo utilizzare questa wildmask:

0.0.255.255

associata all’indirizzo 192.168.0.0, ovvero un indirizzo privato di classe C adattato a classe B, in modo tale che con una sola wildmask vengano interessate tutte le possibili reti private di classe C.

Questa spiegazione ci tornerà utilie quando andremo ad implementare le regole per difenderci dall’IP spoofing.

Tornando alla nostra ACL, è necessario che essa venga associata al servizio Telnet, che negli apparati Cisco prende il nome di vty. Per fare ciò basta digitare:

NightRouter(config)# line vty 0 4

NightRouter(config-line)# access-class 1 in

NightRouter(config-line)# exit

Come avrete facilmente intuito è il comando access-class che associa l’ACL standard 1 in ingresso al terminale Telnet.

Sicuramente a questo punto vi starete chiedendo: perchè ho definito un ACL che permette l’accesso via Telnet sul router agli host della mia LAN se poi non ho definito alcuna regola per vietare l’accesso a tutti gli altri host?

Semplice, ogni ACL nel momento in cui viene creata ha come regola implicita il deny any, quindi tutti gli altri host vengono automaticamente esclusi da ogni possibilità di accesso.

Misure contro L’IP Spoofing

Bene, il nostro terminale Telnet è finalmente al sicuro. Vediamo ora come fare per difenderci dall’IP spoofing, tecnica che prevede l’alterazione dell’IP sorgente presente all’interno dei pacchetti, in modo da aggirare i controlli effettuati dal router attraverso le ACL.

Una prima difesa contro questo attacco consiste essenzialmente nel creare un’ACL estesa in cui definire tutti gli indirizzi IP che non possono accedere al router mediante l’interfaccia connessa ad internet (Dialer0).

Passiamo quindi alla creazione dell’ACL:

NightRouter(config)# access-list 101 deny ip 10.0.0.0 0.255.255.255 any log

Mediante questo comando stiamo creando l’access list estesa (identificata dal numero 101) che nega qualsiasi pacchetto facente uso del protocollo IP proveniente dalla net 10.0.0.0/8 e diretto verso qualunque host della nostra rete.

Aggiungiamo altre regole alla nostra ACL:

NightRouter(config)# access-list 101 deny ip 172.16.0.0 0.15.255.255 any log

NightRouter(config)# access-list 101 deny ip 192.168.0.0 0.0.255.255 any log

NightRouter(config)# access-list 101 deny ip host 127.0.0.1 any log

NightRouter(config)# access-list 101 deny ip host 255.255.255.255 any log

NightRouter(config)# access-list 101 deny ip 224.0.0.0 15.255.255.255 any log

NightRouter(config)# access-list 101 permit ip any any log

Quest’ultima regola consente l’accesso a tutti gli altri host non esplicitamente negati nell’ambito delle regole precendenti.

Facciamo ora alcune piccole considerazioni:

1) Il termine “host” utilizzato nell’ambito delle regole 4 e 5 indica all’ACL che l’indirizzo da negare è soltanto uno, ovvero, rispettivamente, 127.0.0.1 (localhost) nel caso della regola numero 4 e 255.255.255.255 (broadcast) nel caso della regola numero 5. In alternativa avrei potuto usare la wildmask 0.0.0.0 immediatamente dopo l’indirizzo IP, ad esempio:

NightRouter(config)# access-list 101 deny ip 127.0.0.1 0.0.0.0 any log

NightRouter(config)# access-list 101 deny ip 255.255.255.255 0.0.0.0 any log

2) Per ciò che concerne, invece, la numerazione delle ACL, quelle standard vanno numerate da 1 a 99 e quelle estese da 101 a 199 (esistono comunque altri range utilizzabili per entrambe le tipologie di ACL).

3) Infine, è bene notare che le regole vengono applicate dal router in ordine sequenziale, ovvero dalla prima all’ultima. Quindi, se un dato pacchetto rispetta una regola, quelle immediatamente successive verranno ignorate. A tal proposito facciamo un piccolo esempio:

NightRouter(config)# access-list 101 permit ip any any

NightRouter(config)# access-list 101 deny 82.11.199.188 any any

Quest’ultima regola verrà palesemente ignorata dal router, in quanto abbiamo già permesso l’accesso indistinto a tutti i pacchetti.

PS: il termine log presente alla fine di ogni regola associata all’ACL indica al router di loggare tutti i pacchetti che sono stati scartati da essa.

Un piccolo trucco: quando definite il permit ip any any in un’ACL siate certi di aver negato tutti gli host ai quali non volete permettere l’accesso, anche perchè non è possibile (sia per le ACL standard che per quelle estese) andare a rimuovere una singola regola (se ad esempio digitiamo il comando no access-list 101 permit ip any any viene rimossa l’intera ACL).

Comunque, per sopperire a tale limitazione, le IOS più recenti hanno introdotto le ACL nominali, in cui è prevista la cancellazione di una o più regole specifiche.

Associamo tale ACL in ingresso all’interfaccia Dialer0, ovvero quella direttamente connessa ad Internet:

NightRouter(config)# int dia0

NightRouter(config-if)# ip access-group 101 in

Difesa contro gli attacchi di tipo DoS (Smurfing)

smurf-attack.jpg

 

Bene, ora non ci resta che difendere il nostro router dagli attacchi di tipo DoS. Per prima cosa occorre prendere delle contromisure contro lo smurfing. Tale tecnica coinvolge almeno tre tipi di attori: l’host dell’attaccante (A), uno o più host della nostra LAN (B) e l’host vittima (C). Nella fattispecie, l’host dell’attaccante, ovvero A, invia delle richieste di broadcast ad uno o più host della nostra LAN (B), contenenti come indirizzo IP sorgente quello dell’host vittima (C). Tali richieste di livello 3 (255.255.255.255) vengono convertite in richieste di livello 2 (FF:FF:FF:FF:FF:FF) (solitamente dal router) in modo tale che tutti gli host della LAN possano rispondere, generando un elevato ammontare di traffico. A questo punto, tutte le risposte così generate verranno inoltrate sotto forma di pacchetti ICMP verso l’host vittima, congestionandolo di conseguenza.

Per fare in modo che gli host della nostra LAN non vengano utilizzati come testa di ponte per attacchi di questo tipo basta lanciare il comando:

NightRouter(config)# int e0

NightRouter(config-if)# no ip directed-broadcast

Così facendo, le richieste di broadcast  (di livello 3) contenenti indirizzo sorgente fasullo, inoltrate da un attacker mediante l’interfaccia del router connessa ad internet (Dialer0) oppure attraverso un’interfaccia di rete interna (E0), non verranno tradotte in richieste di broadcast di livello 2 e non subiranno quindi il processo di amplificazione che sta alla base del successo di questo tipo di attacco.

NB: nei router che utilizzano IOS maggiori o uguali alla 12.0 tale comando è abilitato per default. Per indentificare la versione di IOS installata sul vostro router basta digitare:

NightRouter# sh ver

Difesa contro gli attacchi di tipo DoS (diretti verso i servizi di diagnostica)

Un altro tipo di attacco, di tipo DoS, a cui sono soggetti i router Cisco, consiste nell’invio di un grande numero di pacchetti  spuri UDP e TCP verso le porte echo, chargen, discard e daytime (quest’ultima si basa esclusivamente sul protocollo TCP). Tali porte vengono adoperate per operazioni di diagnostica sul router ed un attacco di questo tipo potrebbe causare la congestione della CPU, fino a portare allo stallo del dispositivo.

Per prevenire questa tipologia di attacco basta disabilitare i servizi di diagnostica sopra citati, attraverso i comandi:

NightRouter(config)# no service udp-small-servers

NightRouter(config)# no service tcp-small-servers

Difesa contro gli attacchi di tipo DoS (Land)

Un attacco di tipo “land” permette di inoltrare pacchetti TCP SYN (tipici dell’inizio di una connessione) con indirizzo IP sorgente e porta modificati e posti uguali all’indirizzo ed alla porta dell’host di destinazione, causando in alcuni casi anche il blocco del router.

Il problema è stato risolto nelle versioni più recenti di IOS, ma negli altri casi è necessario applicare un filtro che blocchi per ogni interfaccia la ricezione di questi pacchetti. Vediamo come fare (utilizzando delle ACL estese):

NightRouter(config)# access-list 102 deny ip <indirizzo della scheda ethernet0> 0.0.0.0 <indirizzo della scheda ethernet0> 0.0.0.0

Associamo dunque tale ACL all’intercaccia ethernet0:

NightRouter(config)# int e0

NightRouter(config-if)# ip access-group 102 in

Come avrete notato, non ho associato tale ACL anche all’interfaccia Dialer0, in quanto la maggior parte di noi utilizza IP dinamici che ci vengono assegnati direttamente dall’ISP. Nel caso in cui, però, usufruite di IP statico basta digitare:

NightRouter(config)# access-list 102 deny ip <indirizzo della scheda Dialer0> 0.0.0.0 <indirizzo della scheda Dialer0> 0.0.0.0

NightRouter(config)# int dia0

NightRouter(config-if)# ip access-group 102 in

Cifratura delle password

L’ultima parte di questa guida riguarda la cifratura delle password, in modo che uno sh run non permetta di visualizzarle in chiaro.

Per abilitare la cifratura occorre digitare:

NightRouter(config)# service password-encryption

Bene, ora il nostro router dovrebbe essere al sicuro contro gli attacchi più comuni. A presto.