Indice

Categorie

Category cover

Automazione
28 posts

Category cover

CISO
15 posts

Category cover

Corsi
9 posts

Category cover

Sicurezza Personale
9 posts

Category cover

Infrastruttura
5 posts

Category cover

Sicurezza
5 posts

Category cover

Libri
3 posts

Category cover

Vita
1 posts

Category cover

OT/ICS
1 posts

Category cover

UNetLab
1 posts

Category cover

Write-up
1 posts

Automatic network discovery and documentation

Andrea Dainese
28 Marzo 2017
Post cover

NetBrain è un noto software che consente la scoperta (e la gestione) della rete. Concentriamoci ora sulla scoperta e documentazione della rete: vogliamo rilevare automaticamente i dispositivi di rete, le loro connessioni e memorizzare tutto in un repository di controllo versione (GIT/CVS).

Quindi vogliamo:

  • rilevare tutti i dispositivi di rete;
  • mappare come sono connessi tra loro;
  • tracciare automaticamente le modifiche;
  • archiviare tutto in un repository di controllo versione (GIT/CVS);
  • visualizzare qualsiasi mappa aggiornata tramite un semplice browser.

Come possiamo risolvere il problema:

  • assumiamo che tutti i dispositivi siano Cisco, quindi possiamo usare CDP;
  • possiamo ottenere i dati CDP tramite SNMPv3;
  • possiamo costruire una topologia (sorgente, destinazione);
  • possiamo archiviare la topologia in un repository di controllo versione (GIT/CVS);
  • possiamo utilizzare jsPlumb per rendere la topologia (sorgente, destinazione) in una pagina web.

netdoc

netdoc è un piccolo esperimento che ho scritto per risolvere il problema. Contiene due script Python:

  • netdiscover.py: per scoprire i dispositivi di rete via SNMPv3 e generare due file .ini:
    • discovered_nodes.ini: contiene tutti i dispositivi di rete con alcune informazioni aggiuntive
    • discovered_connections.ini: contiene tutte le connessioni di rete con alcune informazioni aggiuntive
  • netplot.py: per generare una pagina web a partire dai file .ini sopra indicati.

I file .ini possono essere archiviati in un repository di controllo versione. Esecuzione di netconf

Attualmente, netdoc è uno script POC, quindi potrebbe funzionare nella tua infrastruttura o potrebbe non funzionare. Per avviarlo, eseguire:

./netdiscover.py -u snmpv3user -p snmpv3password -h 10.1.1.4 -h 10.1.1.5 -h 10.1.1.6

Il file discovered_nodes.ini contiene tutti i dispositivi rilevati tramite CDP nella seguente forma:

[AccessServer]
id = AccessServer
image = router.svg
disabled = false
platform = cisco 2610

Il titolo è l’ID del vicino CDP (di solito il nome host); gli altri attributi sono:

  • id: l’ID del vicino CDP (di solito il nome host)
  • image: un’immagine utilizzata per visualizzare il nodo nella pagina web
  • disabled: true se il dispositivo è assente nell’ultima scansione
  • platform: la piattaforma del vicino CDP

Il file discovered_connections.ini contiene tutte le connessioni rilevate tramite CDP nella seguente forma:

[AccessServer:e0/0-switch.example.com:gi2/0/46]
source = AccessServer
source_if = e0/0
destination = swipd002.campus.infocert.it
destination_if = gi2/0/46
disabled = false

Il titolo è l’ID del vicino CDP sorgente e destinazione con i nomi delle interfacce; gli altri attributi sono:

  • source: l’ID del vicino CDP sorgente
  • source_if: il nome dell’interfaccia sorgente
  • destination: l’ID del vicino CDP di destinazione
  • destination_if: il nome dell’interfaccia di destinazione
  • disabled: true se la connessione è assente nell’ultima scansione

Dopo una scansione riuscita, possiamo creare la pagina HTML:

./netplot.py > netdoc.html

Ed ecco una pagina web interattiva e trascinabile:

Discoverables

Riferimenti