Se describen los elementos de seguridad de cada componente de Pandora FMS, acordes a normativas como PCI/DSS, ISO 27001, ENS, LOPD y similares.
Además se incluye una descripción específica de los mecanismos de seguridad de cada elemento de Pandora FMS, se incide en los posibles riesgos y la manera de mitigarlos, utilizando las herramientas de que dispone Pandora FMS u otros mecanismos posibles.
Solución: Implementar un contenedor asegurado externo para los archivos de configuración externos, vía NFS.
Solución: Deshabilitar configuración remota en los EndPoints especialmente sensibles después de la configuración y dejarlos funcionando sin poder alterar nada remotamente, para una seguridad absoluta. Monitorización remota -sin Endpoints- de los dispositivos más delicados.
Solución: Activar la comunicación TLS entre servidor y base de datos MySQL. Configurar el método de autenticación caching_sha2_password.
Solución: Se protege de la misma manera que el servidor, mediante un sistema NFS externo asegurado.
Soluciones: Montar una solución de HA sobre el servicio TCP que ofrece para balanceo, o un cluster activo/activo. Vale cualquier solución hardware o software disponible al tratarse de un servicio TCP estándar.
Solución: Se protege de la misma manera que el servidor, mediante un sistema NFS externo asegurado.
Soluciones:
Solución: Implementar SSL/TLS.
Solución: Implementar SSL/TLS.
Solución: Implementar almacenamiento cifrado de datos.
Soluciones:
Solución: Fortalecimiento (hardening) del servidor que contiene la aplicación.
Soluciones:
Solución: Correcta configuración de permisos.
Soluciones:
Solución: Implementación de una conexión segura TLS. MySQL la soporta.
Solución: Configuración correcta de permisos de acceso.
El hardening de sistemas es un punto clave en la estrategia de seguridad global de una compañía.
Como fabricantes se emite una serie de recomendaciones para realizar una instalación segura de todos los componentes de Pandora FMS, basados en una plataforma estándar RHEL 8 o Ubuntu server.
Estas mismas recomendaciones son válidas para cualquier otro sistema de monitorización basado en Linux.
Para acceder al sistema, se crearán usuarios nominativos de acceso, sin privilegios y con acceso restringido a las necesidades que tengan.
Idealmente se debería integrar la autenticación de cada usuario con un sistema de autenticación doble basado en token. Existen alternativas gratuitas y seguras como Google Authenticator®integrables en Linux y fuera del alcance de esta guía. Considérese seriamente su uso.
Si es necesario crear otros usuarios para aplicaciones, deben ser usuarios sin acceso remoto (para ello, desactivar su Shell o método equivalente).
En el caso de que ciertos usuarios tengan que tener permisos de administrador se utilizará el comando sudo.
Bastará con estar conectado a internet o configurar el sistema dnf o apt para que utilice un servidor proxy.
Este comando puede ocasionar potenciales problemas de cambio de librerías, configuraciones, etcétera. Es importante actualizar el sistema operativo antes de poner el sistema en producción. Si se está revisando un sistema de producción ya activo, quizás solamente se necesite actualizar los componentes críticos, por ejemplo aquellos que tengan una vulnerabilidad.
Por ejemplo para actualizar solamente MySQL en un sistema RHEL: dnf update mysql-server.
La actualización del sistema operativo es un proceso que debería ser periódico. Mediante el inventariado de paquetes del sistema se pueden consultar versiones vulnerables y ejecutar actualizaciones de emergencia.
Es necesario tener activo el log de seguridad /var/log/secure y monitorizar esos logs con la monitorización.
Por defecto esto viene activado, si no es así, revisar el fichero /etc/rsyslog.conf o /etc/syslog.conf.
Se recomienda que se lleven los logs del sistema de auditoría y sean recogidos con un sistema externo de gestión de logs. Pandora FMS puede hacerlo y será útil para establecer alertas o revisarlos de manera centralizada en caso de necesidad.
El servidor SSH permite la conexión remota a sistemas Linux para la ejecución de comandos, por lo que se trata de un punto crítico y debe asegurarse prestando atención a los siguientes puntos (para ello edite el fichero /etc/ssh/sshd_config y posteriormente, reinicie el servicio).
#Port 22 -> Port 31122
#PermitRootLogin yes -> PermitRootLogin no
#AllowTcpForwarding yes -> AllowTcpForwarding no
#PermitTunnel no -> PermitTunnel no
/home/pfms/.ssh/authorized_keys y comprobar de cuáles máquinas pertenecen. Borrarlo si se cree que no debería haber ninguno.Banner /etc/issue.net
Si el MySQL solamente da servicio a un elemento interno se debe verificar con netstat de que únicamente escucha en localhost:
netstat -an | grep 3306 | grep LIST tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
En el anterior ejemplo se está escuchando sin restricciones, se debe editar el fichero /etc/my.cnf, sección [mysqld], añadiendo la siguiente línea:
bind-address = 127.0.0.1
Tras reiniciar el servicio vuelva a comprobar el puerto de escucha.
Contraseña MySQL
Conectar a la consola de MySQL con un usuario con privilegios:
mysql -h host -u root -p
Verificar que la contraseña es compleja y que ha solicitado contraseña. De no ser así, se establece con el comando:
mysqladmin password
Esta medida de seguridad es imprescindible para proteger bases de datos no solamente ante ataques externos sino ante usos incorrectos por parte de usuarios internos.
ServerTokens Prod
Añadir la anterior línea para ocultar la versión del servidor web (Apache, Nginx) en las cabeceras de información del servidor:
/etc/httpd/conf/httpd.conf (RHEL)./etc/apache2/conf-enabled/pandora_security.conf (Ubuntu server)
Para asegurar bien el motor de aplicaciones sobre el que funciona Pandora FMS, puede ser necesario, en algunos entornos especialmente sensibles con la seguridad, asegurar el acceso a la aplicación para que las cookies de sesión solamente sean transmitidas con SSL.
Esto hará que la aplicación no funcione cuando se usa sobre HTTP (sin cifrado).
Para ello, en el fichero php.ini se deben incluir los siguientes tokens de configuración:
session.cookie_httponly = 1 session.cookie_secure = 1
Esta técnica, que puede ser muy exhaustiva, consiste en eliminar todo lo innecesario en el sistema. Así se evitan posibles problemas en un futuro con aplicaciones mal configuradas que realmente no se necesitan. Para simplificar la aproximación a esta práctica, considérense únicamente aquellas aplicaciones que tienen un puerto abierto en la máquina, para ello ejecutar: netstat -tulpn.
Se debería investigar cada puerto y conocer la aplicación que hay detrás. Para ello se puede usar el comando lsof, que habrá que instalar con dnf o apt.
Aquellos servicios que escuchan en localhost (127.0.0.1) son más seguros que los que escuchan a todas las direcciones IP (0.0.0.0) y algunos de ellos, si están escuchando en puerto abierto, se debería intentar corregirlos para que escuchen solamente a localhost.
Mediante el sistema de inventario de procesos de Pandora FMS, se deben verificar que no se inicien nuevos procesos a lo largo del tiempo.
Se recomienda configurar la sincronización horaria del sistema, en un sistema RHEL:
dnf install ntpdate echo "ntpdate 0.us.pool.ntp.org"> /etc/cron.daily/ntp chmod 755 /etc/cron.daily/ntp
El sistema debería tener un EndPoint Pandora FMS instalado y ejecutado en el PFMS server. Para el sistema operativo MS Windows®, a partir de la versión 761, los ejecutables de instalación están firmados digitalmente.
Se recomiendan los siguientes chequeos activos además de los chequeos estándar:
module_plugin grep_log_module /var/log/messages Syslog \.\* module_plugin grep_log_module /var/log/secure Secure \.\*
Una vez instalado el EndPoint, habrá que definir manualmente al menos la siguiente información en la ficha de agente:
El plugin oficial permite monitorizar de forma proactiva la seguridad en el agente, en cada ejecución, casi en tiempo real, ofreciendo algunos chequeos que pueden alertar de algunos sucesos relevantes.
Este plugin está pensado para funcionar solamente en equipos Linux modernos. Contiene una compilación personalizada de John the ripper 1.8 + parches Contrib con binarios estáticos de 32 y 64 bits. El concepto principal del plugin es ser monolítico, detectar lo que puede ser reforzado y tratar de resolver las diferencias entre distribuciones sin preguntar nada al administrador, por lo que el despliegue podría ser el mismo para cualquier sistema, ignorando versiones, distro o arquitectura.
Este plugin comprobará: