Oxidized è un ottimo strumento per automatizzare i backup di configurazioni di dispositivi come i firewall ASA, i router IOS e tutti i tipi di switch!
Ho scelto Oxidized perché è molto facile da integrare in Librenms.
Di seguito sono riportate le istruzioni su come integrare Oxidized in LibreNMS:
Accedere al server LibreNMS in SSH con le credenziali di root
Andare nella root directory
0 |
cd /root/ |
Installare Ruby e Crap con il comando:
0 |
apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev |
Installare Oxidized con il comando
0 |
gem install oxidized |
Se è andato a buon fine dovremmo vedere al fondo queste righe
0 1 |
Done installing documentation for asetus, net-ssh, rugged, slop, oxidized after 5 seconds5 gems installed |
Lanciamo quindi il comando:
0 |
gem install oxidized-script oxidized-web |
Se è andato a buon fine dovremmo vedere al fondo queste righe
0 1 |
Done installing documentation for charlock_holmes, rack, tilt, rack-protection, sinatra, emk-sinatra-url-for, temple, haml, htmlentities, puma, rb-fsevent, ffi, rb-inotify, sass-listen, sass, backports, rack-test, multi_json, sinatra-contrib, oxidized-web after 319 seconds 21 gems installed |
NOTA BENE: se non installi oxidized-web, assicurati di rimuovere “rest” dalla tua configurazione
Lanciare due volte Oxidized per generare il file di configurazione con il comando:
0 1 |
oxidized oxidized |
Editiamo il file di configurazione con il comando:
0 |
nano /root/.config/oxidized/config |
quindi incolliamo il seguente codice al posto di quello esistente
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
username: INSERIRE L'ACCOUNT UTILIZZATO PER IL COLLEGAMENTO AGLI APPARATI password: INSERIRE LA PASSWORD DELL'ACCOUNT UTILIZZATO PER IL COLLEGAMENTO AGLI APPARATI model: procurve interval: 3600 #interval in seconds #log: ~/.config/oxidized/logs debug: true threads: 30 timeout: 20 retries: 3 prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/ vars: enable: S3cr3tx groups: {} rest: 127.0.0.1:8888 pid: ~/.config/oxidized/oxidized.pid input: default: telnet, ssh debug: false ssh: secure: false output: default: git git: user: Oxidized email: oxidized@example.com repo: "~/.config/oxidized/oxidized.git" source: default: csv csv: file: ~/.config/oxidized/router.db delimiter: !ruby/regexp /:/ map: name: 0 model: 1 username: 2 password: 3 vars_map: enable: 4 model_map: cisco: ios juniper: junos hp: procurve |
Salvare e chiudere il file di configurazione
Generare il file router.db che ospiterà le nostre password con il comando:
0 |
nano /root/.config/oxidized/router.db |
Il contenuto del file è il seguente:
hostname:model:username:password:enable_password
Ad esempio:
#Firewalls
10.0.0.1:asa:admin:password:enable_password
#Switches
10.0.0.8:hp:admin:password:enable_password
10.0.0.0:cisco:admin:password:enable_password
NOTA BENE: inserire tutti gli apparati assicurandosi che siano raggiungibili in SSH o Telnet
Salvare e chiudere il file di configurazione
Lanciamo Oxidized con il comando:
0 |
oxidized |
Se è tutto ok dovremmo vedere il servizio oxidized partire e iniziare a contattare gli apparati censiti nel file router.db
Quindi dovremmo vedere inizialmente le righe seguenti e poi dovremmo vedere i tentativi di collegamento sugli apparati
0 1 2 3 |
[2018-08-29T12:05:31.641448 #11494] INFO -- : Oxidized starting, running as pid 11494 I, [2018-08-29T12:05:31.642194 #11494] INFO -- : lib/oxidized/nodes.rb: Loading nodes D, [2018-08-29T12:05:31.642376 #11494] DEBUG -- : resolving DNS for 192.168.100.1... D, [2018-08-29T12:05:31.642411 #11494] DEBUG -- : IPADDR |
Ora configuriamolo per essere eseguito come servizio
Con il seguente comando controlliamo la versione do Oxidized
0 |
oxidized -v |
Al momento l’ultima versione è la 0.24.0
Quindi lanciamo il seguente comando:
0 |
sudo cp /var/lib/gems/2.3.0/gems/oxidized-0.24.0/extra/oxidized.service /lib/systemd/system/ |
Ora modificare questo file che abbiamo creato con il comando:
0 |
nano /lib/systemd/system/oxidized.service |
Al posto della riga
0 |
User= oxidized |
inserire la riga
0 |
User=root |
Quindi il file oxidized.service avrà questo codice:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#For debian 8 put it in /lib/systemd/system/ #For RHEL / CentOS 7 put it in /etc/systemd/system/ #and call it with systemctl start oxidized.service [Unit] Description=Oxidized - Network Device Configuration Backup Tool After=network-online.target multi-user.target Wants=network-online.target [Service] ExecStart=/usr/local/bin/oxidized User=root KillSignal=SIGKILL [Install] WantedBy=multi-user.target |
Salvare e chiudere il file di configurazione
Ora ricaricare systemctl e avviare il servizio con i comandi:
0 1 2 3 |
sudo systemctl daemon-reload sudo systemctl enable oxidized.service sudo systemctl start oxidized sudo systemctl status oxidized |
Se è tutto ok dovremmo vedere una schermata come mostrato nell’immagine sovrastante
Cliccare CTRL-C per uscire
In ultimo configuriamo Oxidized in LibreNMS collegandoci alla pagina web.
Cliccare su Global Settings
Selezionare External Settings
Cliccare su Oxidized integration per inserire i paramentri di configurazione
Abilitare tutte le opzioni e inserire l’URL http://127.0.0.1:8888
Per verificare che le API funzionino collegarsi tramite LibreNMS ad uno degli swtich censiti nel file router.db
Se è tutto ok dovrebbe comparire il pulsante Config come mostrato nell’immagine sovrastante
Da questa pagina abbiamo la possibilità di vedere le configurazioni salvate dello switch, l’ultima sincornizzazione della configurazione e le differenze tra una configurazione ed un altra.
Come definito nel file di configurazione /root/.config/oxidized/config i backup verranno eseguiti in automatico ogni 3600 secondi
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 commenti