CDP – Cisco Discovery Protocol

Qualche riflessione sulla sicurezza

Ogni promessa è debito si dice dalle mie parti!
Vi avevo detto che avremmo trattato degli aspetti di sicurezza sul CDP e quindi lo faccio adesso.

Il CDP non ha meccanismi di sicurezza intrinsechi e quindi è vulnerabile ad alcuni tipi di attacchi. Inoltre – come ho spiegato prima – un malintenzionato con le informazioni sul firmware dell’apparato potrebbe sfruttarne eventuali vulnerabilità.

Come fare allora per sfruttare i benefici del CDP mantenendo un livello minimo di sicurezza?

In primo luogo il consiglio è quello di suddividere la nostra rete in due tipologie di zone:
– una di tipo trust, ossia la parte di rete interamente gestita da noi e dove possiamo abilitare tranquillamente il CDP
– una di tipo untrust e cioè ovunque potrebbe collegarsi qualcuno e quindi dove andremo a disabilitare il protocollo.
Qualcosa del genere:

Suddivisione in zone trust/untrust della rete

Un secondo consiglio ci viene direttamente da Cisco: creare dei filtri al CDP impostando quali TLV inviare o globalmente o su particolari interfacce (magari proprio quelle delle zona untrust che abbiamo individuato!).

Il procedimento è abbastanza semplice in effetti… a livello di configurazione globale si crea il filtro delle TLV e successivamente si applica.

Facciamo un esempio pratico:
Voglio escludere, nell’invio della frame CDP, le informazioni relativi agli indirizzi IP e alla versione firmware dell’apparato.

SW-A>enable
Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#cdp tlv-list UntrustZone
SW-A(config-tlv-list)#address
SW-A(config-tlv-list)#ip-prefix
SW-A(config-tlv-list)#mgmt-address
SW-A(config-tlv-list)#version
SW-A(config-tlv-list)#end
SW-A#

Successivamente applico questo filtro alla mia interfaccia di interesse:

SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#interface gigabitEthernet0/0
SW-A(config-if)#cdp filter-tlv-list UntrustZone
*Aug 16 06:39:34.185: %CDP-6-TLV_LIST_INTERFACE: Tlv-list UntrustZone applied on interface GigabitEthernet0/0
SW-A(config-if)#end

Come si può vedere, dopo aver applicato il filtro, mancano le informazioni della Version TLV e sia la Address TLV che la Management TLV non hanno più gli indirizzi al loro interno.

Frame CDP prima e dopo l’applicazione del filtro

Verificando la tabella dei neighbor sul vicino collegato alla mia interfaccia gi0/0 non avrò più le informazioni che ho esclus0 tramite il filtro.

SW-B>show cdp entry SW-A
-------------------------
Device ID: SW-A
Entry address(es):
Platform: Cisco ,  Capabilities: Router Switch IGMP
Interface: GigabitEthernet0/1,  Port ID (outgoing port): GigabitEthernet0/0
Holdtime : 165 sec

advertisement version: 2
VTP Management Domain: ''
Native VLAN: 1
Duplex: full

Purtroppo però questa funzionalità non è disponibile su tutte le versioni firmware degli apparati Cisco quindi verificate preventivamente se è possibile sfruttarla!