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
0 commenti