Instalar el software de monitorización de red Observium en Debian 9

En esta guía, te mostraremos cómo instalar y configurar la última versión del software de monitorización de red Observium (Edición Comunitaria) en la versión Debian 9, para monitorizar los equipos de red de tus instalaciones.

Observium es un potente y flexible software de monitorización de redes de código abierto y gratuito, escrito principalmente en lenguaje de programación PHP y desplegado en Linux bajo servidores web Apache/Nginx, PHP y sistema de gestión de bases de datos MySQL/MariaDB, también conocido como pila LAMP o LEMP. Ovservium utiliza el protocolo SNMP para consultar el estado de los hosts, servidores, routers, conmutadores y otros dispositivos de red, y es compatible con una gran variedad de hardware y sistemas operativos de red, como Linux, Windows, Cisco, HP, FreeBSD, Juniper, Brocade, Dell y otros importantes proveedores de dispositivos de red. El proceso de gestión de la aplicación puede realizarse fácilmente a través de una sencilla e intuitiva interfaz basada en la web.

Requisitos

  • Instalación mínima de Debian 9 en una máquina de servidor bare-metal o en un servidor virtual privado
  • Privilegios sudo de root para una cuenta local o remota o acceso directo a la cuenta de root
  • Una dirección IP estática configurada para una de tus tarjetas de interfaz de red del sistema
  • Un nombre de dominio, privado o público, dependiendo de tu implantación, con los registros DNS adecuados configurados para los servicios web. Si no tienes un nombre de dominio válido o registrado, puedes realizar la instalación y acceder al sitio web a través de la dirección IP de tu servidor
  • Si quieres utilizar las notificaciones por correo electrónico de Observium, debes tener un servidor de correo en funcionamiento debidamente configurado en tus instalaciones con acceso remoto a sus servicios IMAP y SMTP. Para la misma tarea también puedes utilizar un servicio de correo electrónico público, como Gmail o Yahoo! Mail.

Instalar Apache, PHP y MySQL

Antes de empezar con la instalación y configuración de Observium desde las fuentes en tu propio servidor, asegúrate primero de que el sistema cumple todos los requisitos de software para compilar e instalar la aplicación. En el primer paso, actualiza los repositorios de tu sistema y los paquetes de software ejecutando el siguiente comando.

apt update
apt upgrade

A continuación, ejecuta el siguiente comando para instalar algunas utilidades necesarias que se utilizarán para seguir gestionando tu sistema desde la línea de comandos.

apt install wget bash-completion curl

Una vez que el sistema se haya actualizado completamente y se hayan instalado las utilidades necesarias para gestionar tu servidor, configura el nombre de tu sistema ejecutando el siguiente comando. Sustituye tu variable de nombre de host en consecuencia.

hostnamectl set-hostname www.mynet.com

Verifica el nombre de la máquina y el archivo de hosts ejecutando los siguientes comandos.

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

Por último, reinicia el servidor de Debian para que se apliquen correctamente las actualizaciones del núcleo y los cambios de nombre de host.

systemctl reboot

Observium es una plataforma de monitorización de red basada en la web y escrita en el lenguaje de programación del lado del servidor PHP. Para poder ejecutar los scripts de archivos PHP de la aplicación, es necesario instalar y poner en funcionamiento en el sistema un servidor web, como el servidor HTTP Apache, y una pasarela de procesamiento PHP. Para instalar el servidor web Apache y el intérprete PHP junto con todos los módulos PHP necesarios para que la aplicación funcione correctamente, emite el siguiente comando en la consola de tu servidor.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-mcrypt php-pear php7.0-cli php7.0-snmp

Emite el siguiente comando para verificar si todos los módulos PHP instalados están habilitados en tu sistema

php –m

Además, asegúrate de instalar las siguientes utilidades requeridas por Observium para consultar y supervisar los dispositivos de red a través del protocolo SNMP, detectar e insertar otros parámetros de red y mostrar gráficos de recursos del sistema.

apt install fping rrdtool graphviz ipmitool snmp whois mtr-tiny imagemagick python-mysqldb

Una vez instalados Apache y PHP, comprueba si el servidor web está en funcionamiento y a la escucha de las conexiones de red en el puerto 80, emitiendo el siguiente comando con privilegios de root.

netstat –tlpn

En caso de que la utilidad de red netstat no esté instalada por defecto en tu sistema Debian, ejecuta el siguiente comando para instalarla.

apt install net-tools

Al inspeccionar la salida del comando netstat, puedes ver que el servidor web apache está escuchando conexiones de red entrantes en el puerto 80. Para la misma tarea también puedes utilizar el comando ss, que se instala automáticamente, por defecto, en Debian 9.

ss- tulpn

En caso de que tengas un cortafuegos habilitado en tu sistema, como la aplicación de cortafuegos UFW, debes añadir una nueva regla para permitir que el tráfico HTTP pase a través del cortafuegos, emitiendo el siguiente comando

ufw allow WWW

o

ufw allow 80/tcp

Si utilizas las reglas raw de iptables para gestionar las reglas del cortafuegos en tu servidor Debian, añade la siguiente regla para permitir el tráfico de entrada de los puertos 80 y 22 (para SSH) en el cortafuegos para que otros administradores de la red puedan navegar por la aplicación en línea.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service

A continuación, habilita y aplica los siguientes módulos de Apache necesarios para que la aplicación funcione correctamente, emitiendo los siguientes comandos.

a2enmod rewrite
systemctl restart apache2

Por último, comprueba si la página web por defecto del servidor web Apache puede mostrarse en los navegadores de tus clientes visitando la dirección IP de tu máquina Debian o tu nombre de dominio o FQDN del servidor mediante el protocolo HTTP, como se muestra en la siguiente imagen. Si no conoces la dirección IP de tu máquina, ejecuta los comandos ifconfig o ip a para revelar la dirección IP de tu servidor.

http://your_domain.tld

Para instalar y acceder al panel de administración web de Observium a través del protocolo HTTPS (que asegurará el tráfico para tus clientes) emite el siguiente comando para habilitar el módulo SSL del servidor web Apache y el archivo de configuración del sitio SSL.

a2enmod ssl
a2ensite default-ssl.conf

A continuación, abre el archivo de configuración del sitio SSL por defecto de Apache con un editor de texto y activa las reglas de reescritura de URLs añadiendo las siguientes líneas de código después de la directiva DocumentRoot como se muestra en el siguiente ejemplo:

nano /etc/apache2/sites-enabled/default-ssl.conf

Extracto del archivo de configuración del sitio SSL:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Además, modifica la línea VirtualHost para que tenga el siguiente aspecto:

        <VirtualHost *:443>

Cambiar el host virtual

Cierra el archivo SSL de Apache y abre el archivo /etc/apache2/sites-enabled/000-default.conf para editarlo y añade las mismas reglas de reescritura de URL que para el archivo de configuración SSL. Inserta las siguientes líneas de código después de la declaración DocumentRoot:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Opciones de Apache

Por último, reinicia el demonio Apache para aplicar todas las reglas configuradas hasta ahora y visita tu dominio a través del protocolo HTTP. Como estás utilizando los pares de certificados autofirmados automáticamente emitidos por Apache en la instalación, certificado que no es de confianza para el navegador, debería aparecer una advertencia de error en el navegador.

systemctl restart apache2

https://yourdomain.tld

Acepta la advertencia para aceptar el certificado no fiable y seguir siendo redirigido a la página web por defecto de Apache, como se muestra en la siguiente imagen.

Página por defecto de Apache

En caso de que la aplicación del cortafuegos UFW bloquee las conexiones de red entrantes al puerto HTTPS, debes añadir una nueva regla para permitir que el tráfico HTTPS pase a través del cortafuegos mediante el siguiente comando

ufw allow ‘WWW Full’

o

ufw allow 443/tcp

Si iptables es la aplicación de cortafuegos instalada por defecto para proteger tu sistema Debian a nivel de red, añade la siguiente regla para permitir el tráfico entrante del puerto 443 en el cortafuegos para que los visitantes puedan navegar por tu nombre de dominio.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent

En el siguiente paso, tenemos que hacer algunos cambios más en el archivo de configuración por defecto de PHP para asegurarnos de que las siguientes variables de PHP están activadas y la configuración de la zona horaria de PHP está correctamente configurada y coincide con la ubicación geográfica de tu sistema. Abre el archivo/etc/php/7.0/apache2/php.ini para editarlo y asegúrate de que las siguientes líneas están configuradas como se muestra. También, inicialmente, haz una copia de seguridad del archivo de configuración de PHP.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Busca, edita y cambia las siguientes variables en el archivo de configuraciónphp.ini:

file_uploads = On
default_charset               = UTF-8
error_reporting = E_ALL & ~E_NOTICE
date.timezone = Europe/London

Sustituye la variable date.timezone de acuerdo con la ubicación geográfica de tu servidor consultando la lista de zonas horarias proporcionada por los documentos de PHP en el siguiente enlace http://php.net/manual/en/timezones.php

Si quieres aumentar la velocidad de carga de las páginas de tu sitio web mediante el plugin OPCache disponible para PHP7, añade los siguientes ajustes de OPCache en la parte inferior del archivo de configuración del intérprete de PHP, debajo de la sentencia [opcache] como se detalla a continuación:

nano /etc/php/7.0/apache2/php.ini
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Cierra el php.ini archivo de configuración y verifica el final del archivo de configuración de PHP para comprobar si las variables de OPCache se han añadido correctamente emitiendo el siguiente comando.

grep opcache /etc/php/7.0/apache2/php.ini

Una vez que hayas realizado todos los cambios explicados anteriormente, reinicia el demonio apache para aplicar los nuevos cambios mediante el siguiente comando.

systemctl restart apache2

Por último, crea un archivo de información de PHP ejecutando el siguiente comando y comprueba si la zona horaria de PHP se ha configurado correctamente visitando el archivo de información de PHP desde un navegador en la siguiente URL, como se muestra en la siguiente imagen. Desplázate hasta la configuración de la fecha para comprobar la configuración de la zona horaria de PHP.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://domain.tld/info.php

Configuración PHP

La aplicación web Observium almacena diferentes configuraciones, como usuarios, sesiones, contactos, dispositivos de red, direcciones IP, interfaces de red y otros datos, en una base de datos RDBMS. En esta guía, configuraremos la aplicación Observium para utilizar la base de datos MariaDB como backend. Emite el siguiente comando para instalar la base de datos MariaDB y el módulo PHP necesario para acceder a la base de datos MySQL.

apt install mariadb-server php7.0-mysql mariadb-client

Una vez que hayas instalado MariaDB, comprueba ejecutando el comandonetstat si el demonio se está ejecutando y está escuchando conexiones en localhost, puerto 3306.

netstat –tlpn | grep mysql

A continuación, entra en la consola de MySQL y asegura la cuenta raíz de MariaDB ejecutando los siguientes comandos.

mysql -h localhost
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> update user set plugin='' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye

En el siguiente paso, asegura MariaDB ejecutando el scriptmysql_secure_installation proporcionado por los paquetes de instalación de los repositorios stretch de Debian. Mientras se ejecuta, el script te hará una serie de preguntas diseñadas para asegurar la base de datos de MariaDB, como por ejemplo: cambiar la contraseña de root de MySQL, eliminar los usuarios anónimos, desactivar los inicios de sesión de root remoto y eliminar la base de datos de prueba. Ejecuta el script emitiendo el siguiente comando y asegúrate de que escribes «sí» a todas las preguntas formuladas para asegurar completamente el demonio MySQL. Utiliza el siguiente extracto de la salida del script como guía.

mysql_secure_installation
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] 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!

Para probar la seguridad de MariaDB, intenta acceder a la base de datos desde la consola sin contraseña de root. El acceso a la base de datos debería ser denegado si no se proporciona una contraseña para la cuenta raíz, como se ilustra en el siguiente extracto del comando:

mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Si se proporciona la contraseña, el proceso de inicio de sesión debería concederse a la consola de MySQL, como se muestra en el siguiente ejemplo de comando:

mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye

A continuación, accede a la consola de la base de datos MariaDB y crea mediante los siguientes comandos una base de datos para la aplicación Observium y un usuario con contraseña que se utilizará para gestionar la base de datos de la aplicación. Sustituye el nombre de la base de datos, el usuario y la contraseña según corresponda.

mysql –u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database observium_db;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on observium_db.* to 'observium_user'@'localhost' identified by 'password1234';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

Para aplicar todos los cambios realizados hasta el momento, reinicia los demonios MySQL y Apache y verifica si los demonios se están ejecutando emitiendo los siguientes comandos.

systemctl restart mysql apache2
systemctl status mysql apache2

Instalar la Plataforma de Monitorización de Redes Observium

Una vez que se cumplan todos los requisitos del sistema para instalar la aplicación, visita la página oficial de Observium en www.observium.org y obtén el último archivo comprimido gzip ejecutando el siguiente comando.

wget http://www.observium.org/observium-community-latest.tar.gz

Cuando termine la descarga del archivo gzip, extrae el archivo de Observium a tu directorio de trabajo actual y haz una lista de los archivos extraídos con los siguientes comandos. Además, elimina el archivo index.html instalado por defecto por el servidor web Apache en la ruta webroot y elimina también el archivo info.php creado anteriormente.

tar xfz observium-community-latest.tar.gz 
ls
rm /var/www/html/index.html
rm /var/www/html/info.php

Los archivos de instalación de Observium se encuentran en tu directorio de trabajo actual en el directorioobservium/. Ejecuta el comando ls para listar los archivos de este directorio. Copia todo el contenido del directorio extraído a la ruta raíz del documento de tu servidor web un nivel más arriba (/var/www/ directorio) emitiendo los siguientes comandos. Además, asegúrate de copiar los archivos ocultos en el directorio de instalación y crea los directorios logs y rrd en esta ubicación.

cp -rf observium/* /var/www/
cp observium/.scrutinizer.yml /var/www/
mkdir /var/www/logs
mkdir /var/www/rrd
ls -al /var/www/

A continuación, ejecuta los siguientes comandos para conceder al usuario en tiempo de ejecución de Apache permisos completos de escritura en la ruta raíz de la web y en los directorios rrd y logs de la aplicación. Utiliza el comando ls para listar los permisos de los archivos instalados de la aplicación, situados en los directorios /var/www/html/ y rrd y logs.

chown -R www-data:www-data /var/www/rrd/
chown -R www-data:www-data /var/www/logs/
chown -R www-data:www-data /var/www/html/
ls -al /var/www/html/

En el siguiente paso, crea un nuevo archivo de configuración de la aplicación basado en el archivo de configuración de la plantilla por defecto de Observium mediante los siguientes comandos.

cd /var/www/
cp config.php.default  config.php

A continuación, empieza a editar el archivo de configuración de Observium y sustituye las siguientes variables de conexión de MySQL en consecuencia.

nano /var/www/ config.php

Encima del archivo config.php busca y actualiza el nombre y las credenciales de la base de datos MySQL según tu propia configuración, como se muestra en el siguiente extracto del archivo:

$config['db_extension'] = 'mysqli';
$config['db_host']      = 'localhost';
$config['db_user']      = 'observium_user';
$config['db_pass']      = 'password1234';
$config['db_name']      = 'observium_db';

Configurar la conexión a MySQL

A continuación, guarda y cierra el archivo config.php e importa el esquema de la base de datos MySQL de Observium ejecutando el discover.php con la bandera –u como se muestra en la siguiente captura de pantalla. El script PHP se encuentra en el directorio /var/www/.

/var/www/discovery.php –u

Descubrimiento de Observium

A continuación, añade la primera cuenta de administrador de Observium con el nivel de privilegios más alto (10) ejecutando el script adduser.php ubicado en el directorio /var/www/. Elige una contraseña fuerte para la cuenta de administrador de Observium.

/var/www/adduser.php observium_admin strongpass123 10

Para acceder al panel de administración web de Observium, abre un navegador y navega por la dirección IP de tu servidor o por el nombre de dominio o FQDN del servidor a través del protocolo HTTPS. Accede al panel de control de Observium con el nombre de usuario y la contraseña configurados para la cuenta de administrador en el paso anterior.

https://yourdomain.tld

Inicio de sesión en Observium

Después de iniciar la sesión en la aplicación con las credenciales de administrador, sigue ajustando la configuración de la aplicación navegando a la URL /settings/ o haciendo clic en el menú Configuración global -> Editar, como se muestra en la siguiente captura de pantalla. Los parámetros de Observium configurados a través de la interfaz web también se pueden codificar en el archivo de configuración de la aplicación: /var/www/config.php

Configuración de la observación

Para supervisar un dispositivo de red a través del protocolo SNMP, pulsa en el menú superior izquierdo y selecciona Añadir dispositivo en el menú desplegable, como se muestra en la imagen siguiente. También puedes añadir un nuevo dispositivo a través de la línea de comandos.

/var/www/add_device.php  hostname_or_IP   SNMP_community_string   v2c

Tablero de control

Por último, para obligar a los visitantes a navegar de forma segura por la interfaz de Observium a través del protocolo HTTPS, que encripta el tráfico entre el servidor y los navegadores de los clientes, vuelve al terminal de tu servidor y edita el archivo .htaccess situado en la ruta raíz del documento de tu sitio web, emitiendo el siguiente comando

nano /var/www/html/.htaccess

Añade las siguientes reglas en el archivo .htaccess después de la línea RewriteEngine en para redirigir automáticamente el tráfico del dominio a HTTPS.

extracto del archivo .htaccess :

# Redirect to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

También puedes desactivar el listado de documentos web del servidor Apache HTTP añadiendo la siguiente línea después de las líneas de redirección a HTTPS:

Options -Indexes

En la parte inferior del archivo puedes cambiar la configuración nativa del servidor PHP con los siguientes ejemplos de configuración. Modifica los ajustes de PHP para que se ajusten a tus propios recursos y configuraciones del servidor.

# Modify PHP settings
php_value session.use_trans_sid 0
php_value register_globals 1

Configuración de la reescritura

Para que la aplicación descubra y añada automáticamente nuevos dispositivos de red en la base de datos y compruebe y actualice su estado cada cinco minutos, añade las siguientes tareas crontab para que se ejecuten bajo los privilegios del usuario de ejecución de Apache:

crontab –u www-data –e

extracto del archivocrontab:

# Run a complete discovery of all devices once every 6 hours
33 */6 * * * /var/www/discovery.php -h all >> /dev/null 2>&1

# Run automated discovery of newly added devices every 5 minutes
*/5 * * * * /var/www/discovery.php -h new >> /dev/null 2>&1

# Run multithreaded poller wrapper every 5 minutes
*/5 * * * * /var/www/poller-wrapper.py 4 >> /dev/null 2>&1

¡Eso es todo! Has instalado y configurado correctamente la aplicación de monitorización de red Observium en Debian 9. Sin embargo, como el servidor HTTP Apache utiliza certificados autofirmados para cifrar el tráfico entre el servidor y el navegador del visitante, siempre se generará un mensaje de advertencia que se mostrará en el navegador del visitante. Esta advertencia puede ser molesta para los administradores de la red que visitan la aplicación web a través de un nuevo navegador o dirección IP. En este caso deberías comprar un certificado emitido por una Autoridad de Certificación de confianza u obtener un par de certificados gratuitos de Let’s Encrypt CA.

Para otras configuraciones personalizadas de la aplicación Observium, visita la página de documentación en la siguiente dirección:http://docs.observium.org/

También te podría gustar...