LibreNMS est un système de supervision réseaux qui possèdent.
- Une découverte automatique du réseau en utilisant CDP, FDP, LLDP, OSPF, BGP, SNMP et ARP.
- Un système d’alerte flexible
- Une interface très complète pour gérer, représenter et extraire les données (graphiques, tableaux …)
- Des mises à jour automatique pour corriger des bugs ou ajouter de nouvelles fonctionnalités
Et de nombreuses autre possibilités.
Hello,
Petit tutoriel sur l'installation du logiciel de supervision LibreNMS sous Debian 10 Buster.
L'installation de l'os n'est pas abordée, je suis parti sur une base Debian Net-install standard avec acces ssh root distant autorisé.
Paquets et dépendances
Installation des paquets essentiels
apt install build-essential
Installation des paquets nescessaires pour LibreNMS
apt install curl apache2 composer fping git graphviz imagemagick libapache2-mod-php7.3 mariadb-client mariadb-server mtr-tiny nmap php7.3-cli php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-snmp php7.3-xml php7.3-zip python-memcache python-mysqldb rrdtool snmp snmpd whois python3-pip
Utilisateur et droits
useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms www-data
Clonage de Librenms via Git
cd /opt
git clone https://github.com/librenms/librenms.git
Installation du paquet "acl" pour la commande "setfacl"
apt install acl
Application des droits
chown -R librenms:librenms /opt/librenms
chmod 770 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
Installation des dépendance php via "composer"
cd librenms
su librenms
./scripts/composer_wrapper.php install --no-dev
exit
Base de donnée
Configuration de la base de donnée
systemctl restart mysql
mysql -uroot -p
NOTE: Pour plus de sécurité, veillez à changer le champ "password"
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit
Edition du fichier "50-server.cnf"
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ajoutez les lignes ci-dessous dans la section [mysqld]
innodb_file_per_table=1
lower_case_table_names=0
systemctl restart mysql
Assurez vous que le "timezone" soit parametré dans les fichiers de configuration de php (cli et web/apache), et augmentez les tailles d'upload
nano /etc/php/7.3/apache2/php.ini
nano /etc/php/7.3/cli/php.ini
date.timezone = Europe/Paris
upload_max_filesize = 20M
max_file_uploads = 200
Apache
Activation des modules "apache"
a2enmod php7.3
a2dismod mpm_event
a2enmod mpm_prefork
Creation du Vhost librenms
nano /etc/apache2/sites-available/librenms.conf
Le champ "ServerName" peut etre une adresse ip ou un fqdn (selon votre environement)
<VirtualHost *:80>
DocumentRoot /opt/librenms/html/
ServerName 192.168.0.27
AllowEncodedSlashes NoDecode
<Directory "/opt/librenms/html/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
Désactivation du site par défaut et activation du site librenms. (activation du mod rewrite aussi)
a2dissite 000-default
a2ensite librenms.conf
a2enmod rewrite
systemctl restart apache2
SNMP
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
nano /etc/snmp/snmpd.conf
Remplacer "RANDOMSTRINGGOESHERE" par votre communauté personnalisée
Snmp distro pour librenms:
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl restart snmpd
Taches cron librenms
cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Installation de LibreNMS via son interface web
http://librenms.example.com/install.php
Les prérequis sont vérifiés
Entrez les informations de base de donnée afin d'initialiser celle ci.
Si "timeout" lors de l'import, recommencer.
Creation de l'administrateur LibreNMS
Renseignez manuelement le fichier "/opt/librenms/.env" avec les informations communiquées par l'installateur.
Done
Installation du plugin WeatherMap
L'intégration de LibreNMS avec Network-Weathermap vous permet de créer des cartes réseau pour aider à visualiser les débits de trafic réseau.
Lien vers le site Web officiel de Network-Wearthermap
Prerequis:
apt install php-pear
Installation du plugin
cd /opt/librenms/html/plugins
git clone https://github.com/librenms-plugins/Weathermap.git
chown -R librenms:librenms Weathermap/
chmod 775 /opt/librenms/html/plugins/Weathermap/configs
Ajout de la tache cron pour raffraichir les maps
nano /etc/cron.d/librenms
*/5 * * * * librenms /opt/librenms/html/plugins/Weathermap/map-poller.php >> /dev/null 2>&1
Activation du plugin dans librenms
Dans "Vue d'ensemble-->plugins-->plugins admin" activez le module "Wheathermap"
Vous avez acces au plugin Wheathermap:
Votre fichier de configuration doit se nommer xxxxx.conf
Dans le parametrage "Map Properties" il faut indiquer le chemin d'acces aux fichiers:
Output Image Filename = /opt/librenms/html/plugins/Weathermap/output/my-map.png
Output HTML Filename = /opt/librenms/html/plugins/Weathermap/output/my-map.html
Il est possible d'obtenir ce genre de map:
Bonus : Installer phpmyadmin sur Debian 10
phpmyadmin, bien que pratique, n'est plus présent dans les paquets officiels de Debian depuis la version 10.
Voici comment l'installer manuelement.
La commande mysql_secure_installation
va apporter un minimum de sécurité à notre nouvelle installation. Elle va nous permettre :
- de changer le mot de passe root,
- de supprimer les comptes anonymes,
- de désactiver la connexion du compte root à distance, (je ne l'ai pas fait)
- de supprimer la base de données « test » à laquelle tout le monde peut avoir accès.
L’outil finit sur un rechargement des privilèges (« Flush privileges ») afin d’appliquer les changements de droits au serveur.
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
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.
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] n
... skipping.
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!
Installation de PHPmyadmin
cd /tmp/
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip
unzip phpMyAdmin-5.0.4-all-languages.zip
mv phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown www-data:www-data /var/lib/phpmyadmin/tmp
Configuration de la base de donnée pour phpmyadmin
mysql -u root
Attention à remplacer 'motdepasse' par le votre.
CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost';
FLUSH PRIVILEGES;
exit
Pour Apache:
nano /etc/apache2/conf-available/phpmyadmin.conf
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Activation de la configuration apache
a2enconf phpmyadmin.conf
systemctl restart apache2
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
nano /usr/share/phpmyadmin/config.inc.php
Pour pouvoir se connecter avec root à phpmyadmin, mettre un mot de passe à l'utilisateur "root" de mysql/mariadb:
mysql -u root
Attention à remplacer 'mon-password' par le votre
GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY 'mon-password';
FLUSH PRIVILEGES;
Une fois connecté à phpmyadmin, il sera peut etre nescessaire de creer des tables supplementaires pour le stockage des configurations, il suffit alors de cliquer sur le message d'erreur puis sur "creer les tables manquantes".
Source:
https://docs.librenms.org/Installation/Installation-Ubuntu-1804-Apache/
https://www.gabinhocity.eu/installer-apache-php7-3-mysql-et-phpmyadmin-sur-debian-10-buster/