martedì, Marzo 19, 2024

Gestione di una rete di apparati Cisco: best practices

In questo articolo vedremo quali sono gli accorgimenti da prendere per gestire al meglio una rete costituita di apparati Cisco Systems.

Supponete di dover gestire una rete composta da numerosi apparati Cisco (Router e Switch, ad esempio). Vedremo nel seguito quali configurazioni è meglio adottare, quali protocolli attivare, che standard utilizzare per gestire al meglio questa rete.

Progettazione della rete

Nella maggior parte dei casi la vostra rete sarà già bella e pronta, putroppo. Supponiamo che sia così, altrimenti dovremmo qui parlare di network design nel dettaglio, argomento che mi riprometto di trattare in un altro articolo. In ogni caso se la vostra rete è stata ben progettata e pianificata, in modo gerarchico, sarà probabilmente molto più semplice da gestire, sia a livello di protocolli di routing, che di access-lists, ecc.

Una rete, invece, dove i collegamenti sono nati lì dove necessario in un certo momento (rete magliata, non gerarchica) le cose si fanno parecchio più complicate.

Schemi di Indirizzamento

Definire ed utilizzare schemi di indirizzamento IP ben precisi, che facciano magari riferimento alla topologia della rete, è un vantaggio enorme. Vi permetterà ad esempio di effettuare le cosiddette route summarizations e vi renderà anche più facile ricordare in quale parte della rete si trovi un certo indirizzo, senza dover andare magari a consultare della documentazione, che va comunque prodotta.

Nomi degli apparati

Un’altra cosa da prendere in considerazione sono i nomi che vengono dati agli apparati. Si vedono spesso reti nelle quali gli apparati hanno nomi di fantasia (ad esempio Zeus, Athena, ecc.). Questo tipo di pratica è senz’altro divertente ma molto meno efficace dal punto di vista della gestibilità della rete. Molto meglio dare agli apparati nomi che denotino, ad esempio, la loro locazione fisica. Sarà poi più semplice per il gestore di rete capire su quale apparato e in quale punto della rete è collegato in un certo momento. Utilizziamo quindi il comando hostname dell’IOS in modo sensato, ad esempio:

hostname roma_backbone oppure hostname milano_access o hostname milano_ISDN, ecc.

denotando ad esempio la locazione fisica e l’utilizzo che viene fatto del router (router di backbone, router di accesso ISDN, ecc.).

Inoltre l’host name può essere reperito tramite SNMP da un eventuale sistema di gestione: questo vi permetterà di rappresentare la mappa fisica della rete su, ad esempio, HP Openview NNM in modo molto più semplice. Documentate inoltre in una tabella Excel i nomi degli apparati, la locazione fisica, gli indirizzi, ecc. Configurate anche un DNS dove inserirete i nomi degli apparati con i rispettivi indirizzi IP: sarà in questo modo molto più semplice raggiungerli utilizzando nomi, invece di indirizzi. Se utilizzate un DNS configurate tutti i router in modo che facciano riferimento ad esso per risolvere i nomi:

ip domain-server 10.5.4.1

dove 10.5.4.1 è l’indirizzo IP del vostro DNS. Se invece non avete un DNS server inserite il comando:

no ip domain-lookup

per evitare che il vostro router cerchi di risolvere ogni nome a lui sconosciuto che inserite a linea di comando.

Interfacce

Come ben sapete in un router ogni interfaccia ha un indirizzo IP ben preciso e differente dalle altre (tralasciando i casi di interfacce unnumbered o negotiated). E’ buona pratica assegnare un nome simbolico ad ogni interfaccia, andandolo ad inserire sia nel router tramite il comando ip host che in un DNS. Ad esempio:

ip host s0_roma_backbone 22.253.23.3
ip host e0_roma_backbone 22.253.24.1
ip host roma_backbone 22.253.24.1
ip domain-name rete.it

Scegliamo nel caso sopra come interfaccia principale del router l”interfaccia Ethernet0 (e0). Quindi roma_backbone.rete.it corrisponderà allo stesso indirizzo di e0_roma_backbone.rete.it. Utilizzate un dominio fittizio (rete.it) oppure un dominio reale assegnatovi dal NIC (questo a seconda che la vostra sia una rete privata o una rete pubblica).

Nella configurazione delle interfacce è inoltre buona regola:

Utilizzare sempre il comando shutdown se l”interfaccia non è attiva.
Ricordarsi sempre di rimuovere indirizzi, descrizione, ecc. se l’interfaccia è stata disattivata (questo evita situazioni del tipo: “ma qui questa linea non funziona, era attiva?”). Questo soprattutto se la gestione della rete è affidata a più persone.

Utilizzare sempre il comando description, che permette di assegnare ad una interfaccia una descrizione. E’ buona regola in questo caso inserire nella descrizione informazioni aggiuntive, come la tecnologia del collegamento (ISDN, Frame-Relay, CDN, ecc.) il numero della linea (DLCI, N. CDN, N. ISDN), punti collegati o cliente collegato all”interfaccia, eventualmente la velocità. Ad esempio:

interface Serial0
description Collegamento Roma Milano - CDN N. 335566/33 - Vel. 128KBit

Inoltre se avete un buon sistema di gestione o vi cimentate nello scripting, potete prelevare queste informazioni tramite SNMP e costruire automaticamente una tabella Excel o un database dei vostri collegamenti attivi. Molto utile anche per generare inventari sempre aggiornati, che alternativamente andranno prodotti manualmente.

Specificate sempre tramite il comando bandwidth la velocità del collegamento. In questo modo le statistiche di occupazione che potete visualizzare tramite il comando show interface indicheranno il carico corretto della linea (xxx/255). Ad esempio:

interface Serial0
bandwidth 128

notate che lo specificare la velocità del collegamento sull”interfaccia non limita in alcun modo le performance del collegamento ma serve solo a fini statistici per aggiornare in modo corretto le stime di occupazione. Quindi se ad esempio specificate bandwidth 1024 su un collegamento a 2MBit/Sec (2048KBit/Sec) non limitate l”utilizzo del collegamento ad un solo MBit/Sec ma semplicemente le statistiche di occupazione saranno calcolate dal router come se il collegamento avesse una velocità di un solo MBit/Sec.

Infine se avete reti libere a disposizione (ad esempio siete in una rete privata e avete praticamente tutti gli indirizzi che volete) utilizzate sempre una interfaccia di loopback configurata su ogni router.

In questo modo avrete a disposizione una interfaccia sempre up e raggiungibile, indipendentemente dal fatto che le altre siano up o down:

interface loopback0
ip address 10.149.250.5 255.255.255.252

I vantaggi dell”utilizzare una interfaccia di loopback su ogni router sono diversi, questi alcuni:

  • Avrete una interfaccia sempre up a cui far fare riferimento dai sistemi di gestione per fare i poll SNMP, prelevare le configurazioni, andare in telnet, ecc.
  • Potete utilizzare l’indirizzo assegnato alla loopback per rendere unnumbered delle interfacce ad esempio seriali o ISDN. Non lo consiglio se avete indirizzi a disposizione (rende più complessa la gestione) ma se siete a corto è una soluzione ideale.
  • Potete usare la loopback come peer del vostro processo BGP per renderlo più stabile (l’interfaccia è sempre UP).
  • Tunneling: usare l’interfaccia di loopback come estremo di un tunnel rende il tunnel stesso più stabile (se usate ad esempio STUN o GRE o IPSEC).

Modalità di commutazione dei pacchetti

Come saprete i router cisco supportano diverse modalità di commutazione (routing) dei pacchetti. A seconda della modalità di commutazione scelta su di un interfaccia, un eventuale pacchetto in output sull”interfaccia stessa segue un percorso diverso all”interno dell”hardware del router e ciò influenza la velocità con cui il pacchetto viene commutato e quindi le performance e l’occupazione della CPU del router stesso. I principali metodi di commutazione dei pacchetti sono i seguenti:

  • Process Switching
  • Fast Switching
  • Optimum Switching
  • Netflow Switching

CEF (Cisco Express Forwarding)

In aggiunta a questi sui router della serie 12000, 7500, 7200 lo switching può avvenire in maniera distribuita, ovvero direttamente effettuato dalle VIP Cards (schede hardware montate sui router di fascia alta che sono a loro volta dei veri e propri router, si parla in questo caso di distributed switching, distributed CEF, ecc.). Non mi voglio dilungare qui nella spiegazione di come i pacchetti vengano commutati nelle diverse modalità (è materiale per un articolo a parte) ma sappiate che l’ordine che ho sopra mantenuto va dalla modalità più lenta a quella più veloce. In particolare non utilizzate MAI il process switching, modalità nella quale ogni singolo pacchetto viene commutato dalla CPU del router, senza utilizzare alcuna cache. Utilizzate sempre almeno il fast switching dando a livello di ogni interfaccia del router il comando:

ip route-cache

utilizzate il process switching solo in caso dobbiate effettuare del debugging intensivo, utilizzando ad esempio il comando debug ip packet, che mostra traccia di tutti i pacchetti che transitano sul router solo in caso sia attivo il process switching. Ricordate però alla fine del debug di tornare sempre in modalità fast switching. L”optimum switching è da preferire sui router della serie 7500 solo se avete una versione di IOS inferiore alla 12.0. In caso contrario utilizzate il CEF (Cisco Express Forwarding) che garantisce performance migliori. Per attivare il CEF date in modalità di configurazione globale il comando:

ip cef

In questo modo verrà automaticamente utilizzato il CEF per tutte le interfaccie dove avrete dato il comando ip route-cache. Utilizzate comunque il CEF su tutti i router dove è disponibile (dalla 12.1 in poi anche sui router della serie 3600 e 2600 e piano piano verra esteso a tutte le serie di router Cisco). Per verificare se il vostro router supporta il CEF date semplicemente il comando sopra e verificate se viene accettato dall’IOS.

Se utilizzate ad esempio una Ethernet per fare il routing di più subnet sulla stessa rete locale (pratica non molto pulita e consigliata ma a volte dettata dalle necessità) utilizzate sempre il comando:

ip route-cache same-interface

In questo modo verrà utilizzato il fast switching anche per i pacchetti che entrano ed escono dalla stessa interfaccia. Questo comando ridurrà di parecchio il carico di CPU del vostro router se siete nella situazione sopra descritta.

Configurazione del protocollo SNMP

Come saprete il protocollo SNMP (Simple Network Management Protocol) permette di accedere a varie informazioni riguardanti lo stato degli apparati di rete (router e switch), occupazione di linee, statistiche, ecc.

Per abilitare il protocollo SNMP in sola lettura sui vostri router date il comando:

snmp-server community password RO

Se invece volete avere la possibilità di fare modifiche utilizzate il comando:

snmp-server community password2 RW

Nel secondo caso sarà ad esempio possibile scrivere in alcuni MIB dei vostri apparati (ad esempio facendo in questo modo un reload di un router o comandando al router di inviare la propria configurazione tramite TFTP ad un certo server in modo da archiviare le configurazioni in modo automatico). Quello che molti non sanno è che si può limitare l”accesso SNMP ad un router a indirizzi IP ben precisi, utilizzando una access-list. Ad esempio:

access-list 10 permit 10.1.1.0 0.0.0.255
snmp-server community password3 RW 10

In questo modo solo un host della rete 10.1.1.0/24 sarà in grado di accedere al nostro router tramite SNMP. E’ buona regola utilizzare accorgimenti di questo tipo perchè l’SNMP è un protocollo molto semplice ed è quindi semplice utilizzarlo per, ad esempio, acquisire informazioni sulla struttura di una rete prima di effettuare un attacco.

Se prevedete di utilizzare dei software per effettuare aggiornamenti automatici dei firmware dei router (ad esempio Ciscoworks 2000) o comunque volete avere la possibilità di riavviare un router tramite SNMP dovete dare il comando:

snmp-server system-shutdown

in questo modo, scrivendo in un opportuno MIB, sarà possibile effettuare il riavvio di un router tramite SNMP. Se questo comando non è inserito l”operazione invece non sarà possibile. Se avete dubbi evitate tranquillamente di inserire questo comando.

Un’altra cosa che si configura normalmente è l’indirizzo in un host che riceverà le nostre trap, ovvero messaggi che scattano a particolari eventi che accadono all’interno del nostro router:

snmp-server host 10.3.3.3

In questo modo le trap verranno inviate all’host 10.3.3.3. Su questo host dovrà essere ovviamente installato un software in grado di interpretare le trap, ad esempio HP Openview NNM. Supponiamo ad esempio che sul nostro router cada un collegamento dedicato, l’evento verrà immediatamente notificato all”host 10.3.3.3 tramite una trap snmp di link-down. Questo permetterà ad esempio di far scattare un allarme acustico sull”host stesso, o di inviare una mail di allarme, o ancora un messaggio SMS.

Il Syslog

Un’altra buona pratica è quella di attivare un logging almeno di livello informational sui vostri router. Inviando questi log ad un syslog server, potete memorizzare il comportamento dei vostri router e realizzare tramite ad esempio dei tool unix (grep, awk, ecc.) dei report sul comportamento dei vostri apparati (stato delle interfaccie, problemi di CPU, RAM, ecc.). Una cosa molto importante è assicurarsi di aver disabilitato la modalità di output del logging del router in console. Se infatti attivate un comando di debug con molto output rischiate di mandare in blocco il vostro router in quanto il logging saturerà la vostra console, che di norma va solo a 9600bps. Per disabilitare il logging in console date il seguente comando in modalità di configurazione globale:

no logging console

date poi il comando:

logging buffered 8192

che attiva un buffer di 8192 byte all”interno dei quale verranno memorizzati i messaggi di log più recenti. Il numero di byte può essere anche maggiore a seconda della quantità di messaggi che volete memorizzare e della quantità di memoria libera del vostro router. Infine per attivare l”invio dei messaggi di logging ad un syslog server utilizzate il comando:

logging 10.5.4.3

dove 10.5.4.3 è l’indirizzo IP del server a cui volete inviare i log del vostro router. Sul server deve essere installato un demone di syslog (se utilizzate linux potete utilizzare syslogd, installato di default all”installazione del sistema operativo). Per stabilire il livello di dettaglio dei log che verranno inviati al server potete utilizzare il comando:

logging trap

dove può essere: debugging, informational, notification, warnings, errors, critical, alerts, emergencies. Più alto il livello (debugging) maggiore e più dettagliato sarà l”output dei log. Consiglio di utilizzare il default (informational) e di attivare debugging solo qualora dobbiate fare del troubleshooting.

Configurate poi la facility che utilizzate per inviare i log al syslog server. Il default è local7:

logging facility local7

In questo modo potete redirezionare i log inviati dai router in un certo file sul sistema server (deviando invece i log di altri apparati in file diversi, per maggiori informazioni consultate il manuale online del syslogd, ad esempio).

Se volete che nei vostri log compaiano data e ora del messaggio, dovete dare i comandi:

service timestamps log datetime
service timestamps debug datetime

E’ inoltre buona regola avere sempre data e ora esatti configurati sui router in modo da avere data e ora corretti anche sui singoli messaggi di log che arrivano al syslog server. Configurate la vostra timezone (fuso) tramite il comando:

clock timezone GMT 1

Settate poi data e ora con il comando:

clock set 12:30:00 May 3 2001

Se il router ha una batteria tampone interna (non è il caso del Cisco 2500 ma la maggior parte degli altri router Cisco la ha) anche dopo un reload conserverà data e ora corretti. L”ideale è però avere data e ora sincronizzati su ogni router. Per fare questo consiglio di installare su di un server un demone NTP (Network Time Protocol Server). Per Linux, ad esempio, esiste un demone NTP, lo potete installare sulla stessa macchina su cui indirizzate i syslog, ad esempio. Poi dovete configurare ogni router per reperire la data e ora dal server NTP:

clock timezone GMT 1
ntp server 10.3.3.3

dove 10.3.3.3 è l”indirizzo del PC sul quale avete installato il server NTP. Se configurate in questo modo tutti i router avrete data e ora identici su ognuno di essi. Se volete che il router aggiorni addirittura data e ora al passaggio ora legale/ora solare e viceversa date per l”italia il comando:

clock summer-time summertime recurring last Sun Mar 3:00 last Sun Oct 3:00

che indica la data in cui entra in vigore l”ora legale e quella in cui si rientra nell’ora solare.

Password

Ovviamente configurate sempre le password di telnet, enable ed enable secret ma non dimenticate quella di console, che spesso si tende a tralasciare:

line console 0
login
password xxxx
line aux 0
login
password xxxx
line vty 0 4
login
password xxxx
exit
enable secret Secretpassword
enable password Enablepassword

Non dimenticate che in questo caso al prompt di enable dovrete inserire la secret password. Usate inoltre sempre il comando:

service password-encryption

in questo modo anche le password di telnet e console vengono mostrate criptate quando listate a video la configurazione.

Se avete molti apparati potrebbe essere utile utilizzare un sistema di autenticazione sul quale configurerete i vari utenti amministratori, ad esempio un TACACS+ server o un RADIUS server come il Ciscosecure ACS. In questo modo potrete anche assegnare ai vari operatori diversi livelli di accesso (e quindi diversi comandi che potranno o meno utilizzare).

Per quanto riguarda l’accesso tramite telnet (sulle linee vty) è bene limitare l’accesso in telnet ai router a indirizzi IP ben definiti. Utilizzando questi comandi lo potete fare:

access-list 1 permit 10.1.1.0 0.0.0.255
line vty 0 4
access-class 1 in

In questo modo solo gli host nella rete 10.1.1.0/24 saranno in grado di accedere in telnet al router.

CDP (Cisco Discovery Protocol)

Il CDP è attivo automaticamente su tutte le interfacce. Disattivatelo sulle interfacce di dial-out/dial-in (BRI, Dialer, ecc.), non è normalmente utile e fa traffico. Per farlo usate il comando:

interface BRI0
no cdp enable

Non dimenticate che utilizzando il comando show cdp neighbors potete avere informazioni su tutti gli apparati cisco adiacenti a quello su cui siete connessi. Ad esempio:

show cdp neighbors

Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater

Device ID Local Intrfce Holdtme Capability Platform Port ID
Chicago_backbone.rete.it Ser 2/3 166 R 2620 Ser 0/0
Chicago_switch1 Eth 0/0 134 T S WS-C4006 2/4
Chicago_cliente1 Ser 2/1 133 R 2610 Ser 0/0

lasciate quindi attivo il CDP su tutte le interfacce tranne quelle che lavorano in commutata.

Altro
Se utilizzate un comando del tipo:

boot system flash slot0:nomeios

inserite sempre al di sotto di esso un comando:

boot system flash

senza il nome del file. In questo modo se aggiornate il firmware e vi dimenticate di modificare il comando partirete comunque dal primo IOS presente nella flash.

Disattivate il source-routing se non lo utilizzate, è un buco di sicurezza:

no ip source-route

Utilizzate sempre il comando:

no ip directed-broadcast

su tutte le interfacce (se non li utilizzate, ovviamente). Vi proteggerete meglio dagli attacchi DDOS (Distributed Denial Of Service).

Se potete (se avete una versione di IOS dalla 12.0T in su) utilizzate le named access-list. Se date nomi significativi alle liste di accesso sarà più semplice identificare il loro utilizzo.

Documentazione

In ultimo vediamo quale documentazione è bene predisporre. Essa sarà utile in caso di aggiornamenti, nuove implementazioni e troubleshooting:

  • Elenco degli apparati (nome, indirizzo IP, descrizione, locazione fisica, caratteristiche tecniche (modello, schede, ecc.)).
  • Elenco dei collegamenti (punti collegati, tecnologia, identificativo (N. CDN, N. ISDN, ecc.), velocità)
  • Mappa topologica della rete (può essere realizzata tramite un sistema di gestione come HP Openview NNM, ad esempio)
  • Elenco delle password (dovrebbe essere presente in copia unica e ben custodito)
  • Infine è consigliabile predisporre dei controlli periodici (dei log, dei locali fisici, ecc.) e cambiare le password periodicamente (ogni tre mesi, ad esempio).

Articoli correlati

Il caso “Medusa Ransomware”

I ransomware stanno diventando sempre più una minaccia di rilevanza importante, quasi da non far dormire sonni tranquilli ad aziende sia pubbliche che private,...

Digital Transformation


 

Noleggia una Tesla per il tuo evento ICT!

Categorie