LibreNMS è un sistema di monitoraggio della rete basato su PHP open source, potente e ricco di funzionalità che utilizza il protocollo SNMP. Supporta un’ampia gamma di sistemi operativi tra cui Linux, Windows e dispositivi di rete tra cui Cisco, Juniper, Brocade, Foundry, HP e molti altri.
Questo tutorial guida step by step nell’installazione di LibreNMS su Ubuntu 22.04 LTS utilizzando PHP 8.1 e come Web Server Apache
PREREQUISITI
Un server con installato Ubuntu Server 22.04.
L’accesso in SSH con l’utente root abilitato come indicato nel seguente articolo
INSTALLAZIONE DI APACHE
Prima di tutto aggiornare il sistema con il comando:
0 |
sudo apt update && sudo apt upgrade
|
Quindi installare Apache con il comando:
0 |
sudo apt install apache2
|
Quindi abilitare Apache con il comando:
0 |
sudo systemctl enable --now apache2
|
INSTALLAZIONE DEL PHP, MARIADB E DELLE RELATIVE DIPENDENZE
Di seguito installare PHP, MariaDB e altri pacchetti richiesti per configurare facilmente LibreNMS su Ubuntu 22.04
Per installare tutto insieme eseguire il comando:
0 |
sudo apt install acl curl nano composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php-cli php-curl php-fpm php-gd php-gmp php-json php-mbstring php-mysqli php-snmp php-xml php-zip rrdtool snmp snmpd whois unzip python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd python3-pip
|
CONFIGURAZIONE DI MARIADB
Prima di creare il database, configurare MariaDB per LibreNMS modificando il file di configurazione del server del database con il comando:
0 |
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
|
Nella sezione [mysqld] aggiungere le seguenti linee:
0
1
2
|
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
|
Se è tutto OK dovremmo vedere una schermata come nell’immagine sovrastante
Salvare e chiudere il file di configurazione
Riavviare il Database server con il comando:
0 |
sudo systemctl restart mariadb
|
Quindi abilitarlo con il comando:
0 |
sudo systemctl enable mariadb
|
Rendere sicuro MariaDB con il comando:
0 |
sudo mysql_secure_installation
|
Rispondere a tutte le domande come mostrato sotto quindi cambiare la password di root di MariaDB
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n]
Enabled successfully!
Reloading privilege tables..
... Success!
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
|
CREAZIONE DEL DATABASE PER LIBRENMS
Creare il Database per LIbrenms accedendo al Database MariaDB con il comando:
0 |
sudo mysql
|
Utilizzare i seguenti comandi per creare il database per LibreNMS e l’utenza di accesso.
0
1
2
3
4
|
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit;
|
ATTENZIONE: al posto di PASSWORD inserire una password a piacimento
CONFIGURAZIONE DEL TIMEZONE PER PHP
Editare i due file php.ini con i seguenti comandi:
0
1
2
|
sudo nano /etc/php/8.1/cli/php.ini
sudo nano /etc/php/8.1/fpm/php.ini
|
Cercare all’interno di entrambe i files la riga
0 |
#date.timezone = |
Quindi modificarla con la riga
0 |
date.timezone = Europe/Rome
|
Salvare e chiudere entrambe i files di configurazione.
Cambiare il timezone con il seguente comando:
0 |
sudo timedatectl set-timezone Europe/Rome
|
Verificare se il timezone è corretto con il comando:
0 |
sudo dpkg-reconfigure -f noninteractive tzdata
|
Se è tutto ok dovremmo vedere il seguente output:
0
1
2
|
Current default time zone: 'Europe/Rome'
Local time is now: Sun Apr 7 15:29:21 CEST 2024.
Universal Time is now: Sun Apr 7 13:29:21 UTC 2024.
|
Quindi eseguire il comando:
0 |
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p
|
Riavviare Apache e MariaDB con il comando:
0 |
sudo systemctl restart apache2.service mariadb.service
|
DOWNLOAD DI LIBRENMS
I file LibreNMS non sono presenti nel repository di Ubuntu, quindi clonarlo utilizzando Git direttamente dal suo repository GitHub.
Posizionarsi nella cartella /opt con il comando:
0 |
cd /opt
|
Scaricare l’ultima versione di LibreNMS con il comando:
0 |
sudo git clone https://github.com/librenms/librenms.git
|
CREAZIONE DELL’UTENTE PER LIBRENMS
Creiamo un utente dedicato che può accedere solo ai file di Librenms con il comando:
0 |
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
|
Settare quindi i permessi con i seguenti comandi:
0
1
2
3
4
5
6
|
sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms
sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
|
INSTALLAZIONE DI LIBRENMS
Passare all’utente creato LibreNMS e quindi installare le dipendenze PHP richieste da questa piattaforma di monitoraggio della rete con il comando:
0 |
sudo -u librenms bash
|
quindi eseguire il comando:
0 |
cd |
quindi il comando:
0 |
./scripts/composer_wrapper.php install --no-dev
|
Uscire dall’utente librenms con il comando:
0 |
exit |
CONFIGURAZIONE DEL PHP-FPM
Creare un file di configurazione PHP-FPM per LibreNMS copiando il file di configurazione esistente.
Posizionarsi nella cartella pool.d con il comando:
0 |
cd /etc/php/8.1/fpm/pool.d/
|
quindi copiare il file di configurazione di LibreNMS con il comando:
0 |
sudo cp www.conf librenms.conf
|
Editare il file librenms.conf con il comando:
0 |
sudo nano librenms.conf
|
Di seguito le modifiche da fare:
sostituire [www] con [librenms]
sostituire user = www-data con user = librenms
sostituire group = www-data con group = librenms
sostituire listen = /run/php/php8.1-fpm.sock con listen = /run/php-fpm-librenms.sock
Salvare e chiudere il file di configurazione
Tornare indietro nella cartella di root con il comando:
0 |
cd |
CONFIGURAZIONE DEL DEMONE SNMPD
In questa sezione procederemo con la configurazione del demone SNMPD
Prima di tutto copiare il file snmpd.conf.example in snmpd.conf
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
Editare il file snmpd.conf con il comando:
0 |
sudo nano /etc/snmp/snmpd.conf
|
Cambiare RANDOMSTRINGGOESHERE in qualsiasi stringa della comunità SNMP che si desidera utilizzare, quindi salvare il file.
Quindi eseguire i seguenti comandi in sequenza:
0
1
2
3
|
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro
sudo systemctl enable snmpd
sudo systemctl restart snmpd
|
CREAZIONE DEL CRON JOB
Procedere con la creazione del cron per la schedulazione del poller
Prima di tutto copiare il file librenms.cron in librenms
0 |
sudo cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
|
Editare il file cron con il comando:
0 |
sudo nano /etc/cron.d/librenms
|
Quindi aggiungere al fondo del file di configurazione la seguente riga
0 |
*/5 * * * * librenms /opt/librenms/poller.php -h all >> /dev/null 2>&1
|
Dovremmo vedere una schermata come quella sovrastante
Salvare e chiudere il file di configurazione
Riavviare il cron con il comando:
0 |
sudo systemctl restart cron
|
Quindi abilitare lo scheduler con i seguenti comandi:
0
1
2
|
sudo cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/
sudo systemctl enable librenms-scheduler.timer
sudo systemctl start librenms-scheduler.timer
|
Per assicurarti che i log di LibreNMS non diventino troppo grandi, abilita la rotazione dei log.
Prima di tutto copiare il file librenms.logrotate in librenms
0 |
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
|
Creare una scorciatoia Global lnms con il comando:
0 |
sudo ln -s /opt/librenms/lnms /usr/local/bin/lnms
|
Abilitare il completamento Bash lnms con il comando:
0 |
sudo cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
|
CREAZIONE DEL VIRTUAL HOST IN APACHE
Per accedere all’interfaccia web di LibreNMS bisogna dire al nostro server Apache dove si trovano i suoi file.Per questo, creiamo un file di configurazione dell’host virtuale con il comando:
0 |
sudo nano /etc/apache2/sites-available/librenms.conf
|
Aggiungere all’interno del file le seguenti righe:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<VirtualHost *:80>
DocumentRoot /opt/librenms/html/
ServerName librenms.example.com
AllowEncodedSlashes NoDecode
<Directory "/opt/librenms/html/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.php$">
SetHandler "proxy:unix:/run/php-fpm-librenms.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
|
ATTENZIONE: Sostituire il nome del server librenms.exalmple.com con l’indirizzo IP o con l’FQDN del server LibreNMS.
Salvare e chiudere il file di configurazione
Disattivare il site di default quindi abilitare quello appena creato con i comandi:
0
1
2
|
sudo a2dissite 000-default
sudo a2enmod proxy_fcgi setenvif rewrite
sudo a2ensite librenms.conf
|
Riavviare i servizi di Apache e l’FPM con i seguenti comandi:
0
1
|
sudo systemctl restart apache2
sudo systemctl restart php*-fpm
|
CONFIGURAZIONE DI LIBRENMS DA INTERFACCIA WEB
Una volta completata la configurazione di LibreNMS, aprire un browser e richiamare l’indirizzo IP del server o l’FQDN inseritio nel file di configurazione.
Ad esempio: http://indirizzo-IP-server o http://tuo-dominio.com
Innanzitutto, la configurazione dell’installazione verificherà le dipendenze richieste dal software.
Verificare che il check dei componenti sia tutto OK quindi cliccare sull’icona del database
Inserire tutte le info relative al database creato in precedenza quindi cliccare Check Credentials
Verificare che il check sia andato a buon fine quindi cliccare su Build Database
ATTENZIONE: durante questa fase non chiudere o aggiornare la pagina web
Verificare che sia andato tutto buon fine quindi cliccare sull’icona con la chiave
Inserire lo Username che si intende creare per l’accesso via web quindi la password e la relativa mail
Cliccare su Add User
Cliccare sul pallino blu evidenziato nell’immagine sovrastante
Impostare l’Update Channel, il tema quindi cliccare su Finish Install
Cliccare su Validate Install
Inserire le credenziali create in precedenza quindi cliccare Login
Se è andato tutto a buon fine dovremmo vedere la Dashboard di LibreNMS
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