Установка LibreNMS

Установка LibreNMS.

Содержание

1 Необходимые пакеты

  • Установка осуществляется на Rockylinux
  • Установите сервер (см. Rocky Linux. Установка сервера).
  • Установите необходимое программное обеспечение:
    1dnf -y install epel-release
    2dnf module reset php
    3dnf install bash-completion cronie fping git httpd ImageMagick mariadb-server mtr net-snmp net-snmp-utils nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip gcc python3-develcase
    

2 Добавить пользователя

  • Добавить пользователя librenms:
    1useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
    

3 Скачать LibreNMS

  • Скачаем LibreNMS:
    1cd /opt
    2git clone https://github.com/librenms/librenms.git
    

4 Установить разрешения

  • Установим разрешения:
    1chown -R librenms:librenms /opt/librenms
    2chmod 771 /opt/librenms
    3setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
    4setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
    

5 Установить PHP-зависимости

  • Установим PHP-зависимости:
    1su - librenms
    2./scripts/composer_wrapper.php install --no-dev
    3exit
    
  • Если какие-либо проблемы с сетью, можно установить composer вручную:
    1wget https://getcomposer.org/composer-stable.phar
    2mv composer-stable.phar /usr/bin/composer
    3chmod +x /usr/bin/composer
    

6 Укажите часовой пояс

  • Установите системный часовой пояс (например, Etc/UTC):
    1timedatectl set-timezone Etc/UTC
    
  • Настройте часовой пояс для php.
  • Установка в файле /etc/php.ini:
    1[Date]
    2date.timezone = Etc/UTC
    

7 Настроить MariaDB

  • Настройки в файле /etc/my.cnf.d/mariadb-server.cnf:
    1[mysqld]
    2innodb_file_per_table=1
    3lower_case_table_names=0
    
  • Запустите mariadb:
    1systemctl enable --now mariadb
    
  • Установите настройки безопасности:
    1mariadb-secure-installation
    
  • Подключитесь к mariadb:
    1mysql -u root
    
  • Создайте пользователя и таблицу.
    • В коде замените password на пароль.
    • Пароль потребуется занести в файл конфигурации /opt/librenms/.env (в web-интерфейсе).
      1CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      2CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
      3GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
      4FLUSH PRIVILEGES;
      5exit
      

8 Настроить php-fpm

  • Настроим php-fpm:
    1cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
    
  • Отредактируйте /etc/php-fpm.d/librenms.conf.
  • Измените [www] на [librenms].
  • Изменить user и group на librenms.
  • Измените listen:
    1listen = /run/php-fpm-librenms.sock
    

9 HTTP-сервер

9.1 Nginx

9.1.1 Установка

  • Установим nginx.
  • Выберем нужный модуль:
    1dnf module list nginx
    2dnf module switch-to nginx:1.24
    3dnf -y install nginx
    

9.1.2 Конфигурация

  • Создайте librenms.conf:
    1touch /etc/nginx/conf.d/librenms.conf
    
  • Добавьте следующую конфигурацию, отредактируйте server_name по мере необходимости:
     1server {
     2 listen      80;
     3 server_name librenms.example.com;
     4 root        /opt/librenms/html;
     5 index       index.php;
     6
     7 charset utf-8;
     8 gzip on;
     9 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
    10 location / {
    11  try_files $uri $uri/ /index.php?$query_string;
    12 }
    13 location ~ [^/]\.php(/|$) {
    14  fastcgi_pass unix:/run/php-fpm-librenms.sock;
    15  fastcgi_split_path_info ^(.+\.php)(/.+)$;
    16  include fastcgi.conf;
    17 }
    18 location ~ /\.(?!well-known).* {
    19  deny all;
    20 }
    21}
    

9.1.3 Конфигурация SSL

  • Будем использовать сертификат Lets’ Encrypt.

  • Клиенты ACME. Certbot

  • Создайте librenms.conf:

    1touch /etc/nginx/conf.d/librenms.conf
    
  • Добавьте следующую конфигурацию, отредактируйте server_name по мере необходимости:

     1server {
     2     listen              443 ssl http2;
     3     listen              [::]:443 ssl http2;
     4     server_name example.com;
     5     ssl_certificate /etc/letsencrypt/live/yourwebsite.com/fullchain.pem;
     6     ssl_certificate_key /etc/letsencrypt/live/yourwebsite.com/privkey.pem;
     7     include /etc/letsencrypt/options-ssl-nginx.conf;
     8     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
     9     root        /opt/librenms/html;
    10     index       index.php;
    11     access_log  /opt/librenms/logs/access_log;
    12     error_log   /opt/librenms/logs/error_log;
    13
    14     charset utf-8;
    15     gzip on;
    16     gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
    17
    18     proxy_read_timeout 300;
    19     proxy_connect_timeout 300;
    20     proxy_send_timeout 300;
    21
    22     location / {
    23             try_files $uri $uri/ /index.php?$query_string;
    24     }
    25     location /api/v0 {
    26              try_files $uri $uri/ /api_v0.php?$query_string;
    27     }
    28     location ~.php {
    29              include fastcgi.conf;
    30              fastcgi_split_path_info ^(.+.php)(/.+)$;
    31              fastcgi_pass unix:/run/php-fpm/librenms.sock;
    32     }
    33     location ~ /.ht {
    34              deny all;
    35     }
    36}
    37
    38server {
    39        listen         80;
    40        listen         [::]:80;
    41        server_name    example.com;
    42        return         301 https://$server_name$request_uri;
    43}
    

9.1.4 Запуск http-сервера

  • Запустим nginx:
    1systemctl enable --now php-fpm
    2systemctl enable --now nginx
    

9.2 Apache

  • Можно использовать Apache.

9.2.1 Конфигурация

  • Создайте librenms.conf:
    1touch /etc/httpd/conf.d/librenms.conf
    
  • Добавьте следующую конфигурацию, отредактируйте ServerName по мере необходимости:
     1<VirtualHost *:80>
     2  DocumentRoot /opt/librenms/html/
     3  ServerName  librenms.example.com
     4
     5  AllowEncodedSlashes NoDecode
     6  <Directory "/opt/librenms/html/">
     7        Require all granted
     8        AllowOverride All
     9        Options FollowSymLinks MultiViews
    10  </Directory>
    11
    12  # Enable http authorization headers
    13  <IfModule setenvif_module>
    14        SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    15  </IfModule>
    16
    17  <FilesMatch ".+\.php$">
    18        SetHandler "proxy:unix:/run/php-fpm-librenms.sock|fcgi://localhost"
    19  </FilesMatch>
    20</VirtualHost>
    
  • Отключите сайт по умолчанию:
    1rm -f /etc/httpd/conf.d/welcome.conf
    
  • Запустите сервер:
    1systemctl enable --now httpd
    2systemctl enable --now php-fpm
    

9.3 SELinux

  • Настройте политики SELinux:
    1setsebool httpd_can_network_connect 1
    2setsebool -P httpd_can_network_connect 1
    

9.4 Брандмауэр

  • Настроим брандмауэр:
    1firewall-cmd --add-servic={http,https} --permanent
    2firewall-cmd --reload
    

10 Настройка SELinux

  • Установим необходимые пакеты:
    1dnf -y install policycoreutils-python-utils
    
  • Настройте контексты, необходимые LibreNMS:
     1semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?'
     2semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?'
     3semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?"
     4semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py'
     5restorecon -RFvv /opt/librenms
     6setsebool -P httpd_can_sendmail=1
     7setsebool -P httpd_execmem 1
     8setsebool -P httpd_can_network_connect 1
     9setsebool -P domain_can_mmap_files 1
    10setsebool -P httpd_setrlimit 1
    11chcon -t httpd_sys_rw_content_t /opt/librenms/.env
    

11 Настройка fping

  • Установите CAP_NET_RAW для fping:
    1setcap cap_net_raw+ep /usr/sbin/fping
    
  • Настройка SElinux для fping.
    • Перейдите в каталог /tmp.
    • Создайте файл http_fping.tt:
       1module http_fping 1.0;
       2
       3require {
       4type httpd_t;
       5class capability net_raw;
       6class rawip_socket { getopt create setopt write read };
       7}
       8
       9#============= httpd_t ==============
      10allow httpd_t self:capability net_raw;
      11allow httpd_t self:rawip_socket { getopt create setopt write read };
      
    • Скомпилируйте и загрузите модуль:
      1checkmodule -M -m -o http_fping.mod http_fping.tt
      2semodule_package -o http_fping.pp -m http_fping.mod
      3semodule -i http_fping.pp
      

12 Настройка межсетевого экрана

  • Разрешим доступ:
    1firewall-cmd --zone public --add-service http --add-service https
    2firewall-cmd --permanent --zone public --add-service http --add-service https
    

13 Настройте команду lnms

  • Сделайте ссылку в каталог, входящий в путь:
    1ln -s /opt/librenms/lnms /usr/local/bin/lnms
    
  • Включите автодополнение bash:
    1cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
    

14 Настроить snmpd

  • Скопируйте файл конфигурации:
    1cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
    
  • Замените в /etc/snmp/snmpd.conf строку RANDOMSTRINGGOESHERE на своё сообщество.
  • Загрузите агент определения дистрибутива:
    1curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
    2chmod +x /usr/bin/distro
    
  • Запустите демон snmp:
    1systemctl enable --now snmpd
    

15 Настройте cron

  • Установите cron-файл:
    1cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
    

16 Настройте logrotate

  • LibreNMS хранит журналы в /opt/librenms/logs.
  • Чтобы удалять старые журналы, вы можете использовать предоставленный файл конфигурации logrotate:
    1cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
    

17 Веб-установщик

  • Перейдите к веб-установщику и следуйте инструкциям на экране.
  • Веб-установщик может предложить вам вручную создать config.php, скопировав содержимое, отображаемое на экране, в файл.
  • После этого не забудьте установить права доступа к config.php:
    1chown librenms:librenms /opt/librenms/config.php
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие