Configuración de SELinux para Pandora FMS
Introducción
En Pandora FMS la instalación se debe realizar siempre con Security-Enhanced Linux (SELinux ) desactivado. Tras su instalación, y ante la necesidad de tenerlo activado en algunos entornos, se detallan los ajustes de configuración para diferentes distribuciones de GNU/Linux.
Rocky Linux 8
Instalación de Audit2allow
Para crear este tipo de reglas se utiliza Audit2allow, el cual será el encargado de permitir las acciones necesarias.
Antes de comenzar con la creación de las reglas para las políticas es posible que se necesite instalar una serie de paquetes para poder utilizar Audit2allow.
Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
dnf install selinux-policy-devel -y dnf install policycoreutils-python-utils -y
Localización del directorio log de SELinux
Los errores que devuelve SELinux se pueden encontrar en las siguientes rutas:
/var/www/html/pandora_console/log/audit.log
/var/log/messages
En caso de actualizar Pandora FMS por OUM se deberá modificar el archivo logrotate correspondiente.
Para comprobar de una forma más clara lo que bloquea SELinux, se recomienda borrar los logs anteriores y esperar a que se vuelvan a generar con nuevos registros.
Se debe detener syslog (este servicio también podría llamarse rsyslog). Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
systemctl stop syslog
Se debe borrar audit.log
y el archivo log de mensajes del sistema:
rm /var/www/html/pandora_console/log/audit.log /var/log/messages
Iniciar de nuevo syslog (este servicio también podría llamarse rsyslog):
systemctl start syslog
Configuración de SELinux
Para configurar SELinux con el valor deseado, se modifica su fichero de configuración /etc/selinux/config
:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
- Si se necesita que SELinux se ejecute en modo restrictivo, dejando ejecutar solamente lo que aparece dentro de las reglas de los módulos, se debe configurar a
enforcing
, sacando así (mediante elaudit.log
) las ejecuciones denegadas por SELinux. - Si por el contrario se necesita que imprima las advertencias (warnings) en lugar de bloquear las acciones se dejará en
permissive
, y luego comprobar estos warnings en el archivoaudit.log
.
Localizar las entradas para la creación de las reglas de las políticas
Para visualizar las últimas entradas de los logs introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
tail -f /var/www/html/pandora_console/log/audit.log /var/log/messages
Se podrá observar que saldrán errores, por ejemplo:
type=AVC msg=audit(1431437562.755:437): avc: denied { write } for pid=1835 comm="httpd" name="collections" dev=dm-0 ino=266621 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir
Para convertir estos errores en reglas que SELinux pueda interpretar se debe ejecutar:
grep collections /var/www/html/pandora_console/log/audit.log | audit2allow -M pandora
Esto creará dos ficheros en el directorio actual:
pandora.pp pandora.te
Para activar la nueva regla se debe ejecutar:
sudo semodule -i pandora.pp
Se debe repetir el proceso para añadir las reglas que falten. Después de añadir todas las reglas, SELinux dejará de reportar errores.
Reglas necesarias para el correcto funcionamiento de Pandora FMS
Para que Pandora FMS pueda ejecutar todos los servicios correctamente, se deberán crear reglas para las siguientes funcionalidades:
- Crear, actualizar y borrar colecciones.
- Enviar mensajes de correo electrónico mediante las tareas programadas (Cronjob).
- Configuración remota de los agentes.
- Monitorización snmptrapd.
- Monitorización NetFlow.
De otra forma, SELinux bloqueará cualquier acción asociada a estas funcionalidades.
Una forma de unir todas estas reglas en una sola, para poder usar Pandora FMS totalmente, sería:
grep -e data_in -e collections -e var_spool_t -e zip -e md5 -e denied /var/log/audit/audit.log | audit2allow -M pandora
Luego se debe repetir el paso descrito arriba para activar la regla. Con se abarcarían todos los posibles conflictos entre Pandora FMS y SELinux. Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
sudo semodule -i pandora.pp
Resumen práctico
Se resumen las reglas para utilizar SELinux con Pandora FMS teniendo muy en cuenta que para cada caso en particular se deberán cambiar los valores y parámetros de manera personalizada tales como dev=sdaX
o pid=XXX
.
El comando setsebool es una herramienta para establecer booleanos para SELinux. La opción -P
indica que persista el valor ajustado a través de reinicios, y el 1
al final de la instrucción indica valor verdadero, activando así su aplicación. Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
setsebool -P httpd_unified 1 setsebool -P httpd_read_user_content 1 setsebool -P httpd_can_network_connect 1 setsebool -P httpd_execmem 1 setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_connect_ldap 1 setsebool -P authlogin_nsswitch_use_ldap 1 setsebool -P nis_enabled 1 setsebool -P httpd_setrlimit 1
El comando chcon cambia el contexto SELinux de los ficheros. La opción -t
indica un tipo de fichero SELinux y la opción -R
lo aplica a un directorio y todo su contenido de manera recursiva. Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
chcon -R -t httpd_sys_content_rw_t /var/www/html/pandora chcon -R -t httpd_sys_content_rw_t /var/spool/pandora/ chcon -R -t httpd_sys_content_rw_t /tmp/
Se agregan las siguientes reglas, recordando siempre las personalizaciones necesarias para cada caso. Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
echo 'type=AVC msg=audit(1709637797.944:2074063): avc: denied { write } for pid=176072 comm="php-fpm" name="collections" dev="sda5" ino=142704842 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir permissive=1' | audit2allow -a echo 'type=AVC msg=audit(1709639101.328:2100929): avc: denied { unlink } for pid=152354 comm="php-fpm" name="gotty_cron_tmp.log" dev="sda5" ino=134725871 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=file permissive=1' | audit2allow -a echo 'type=AVC msg=audit(1710850539.491:32359350): avc: denied { write } for pid=3895348 comm="connection" name="tmp" dev="sda5" ino=8398230 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:httpd_sys_rw_content_t:s0 tclass=dir permissive=1' | audit2allow -a
Se utiliza el siguiente comando para crear las reglas en un fichero llamado rules_apply.pp
:
audit2allow -a -M rules_apply
Se aplican las reglas creadas en el paso anterior con el comando semodule:
semodule -i rules_apply.pp
CentOS 7
Instalación de Audit2allow
CentOS 7 pronto alcanzará su fin de ciclo de vida (EOL). Esta documentación se conserva por propósitos históricos.
Para crear este tipo de reglas se utiliza Audit2allow, el cual será el encargado de permitir las acciones necesarias.
Antes de empezar con la creación de las reglas para las políticas es posible que se necesite instalar una serie de paquetes para poder utilizar Audit2allow.
Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
yum install selinux-policy-devel -y yum install policycoreutils-python -y
Localización del directorio log de SELinux
Los errores que devuelve SELinux se pueden encontrar en las siguientes rutas:
/var/www/html/pandora_console/log/audit.log
/var/log/messages
En versiones anteriores a la 747, el fichero audit.log
se encuentra en /var/log/audit/audit.log
.
En caso de actualizar por OUM se deberá modificar el archivo logrotate correspondiente.
Para comprobar de una forma más clara lo que bloquea SELinux, se recomienda borrar los logs anteriores y esperar a que se vuelvan a generar con nuevos registros.
Se debe detener syslog (este servicio también podría llamarse rsyslog). Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
/etc/init.d/syslog stop
Se debe borrar audit.log
y el archivo log de mensajes del sistema:
rm /var/www/html/pandora_console/log/audit.log /var/log/messages
Iniciar de nuevo syslog (este servicio también podría llamarse rsyslog):
/etc/init.d/syslog start
Configuración de SELinux
CentOS 7 pronto alcanzará su fin de ciclo de vida (EOL). Esta documentación se conserva por propósitos históricos.
Para configurar SELinux con el valor deseado, se modifica su archivo de configuración:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
- Si se necesita que SELinux se ejecute en modo restrictivo, dejando ejecutar solamente lo que aparece dentro de las reglas de los módulos, se debe configurar a
enforcing
, sacando así (mediante elaudit.log
) las ejecuciones denegadas por SELinux. - Si por el contrario se necesita que imprima las advertencias (warnings) en lugar de bloquear las acciones se dejará en
permissive
, y luego comprobar estos warnings en el archivoaudit.log
.
Localizar las entradas para la creación de las reglas de las políticas
CentOS 7 pronto alcanzará su fin de ciclo de vida (EOL). Esta documentación se conserva por propósitos históricos.
Para visualizar las últimas entradas de los logs introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
tail -f /var/www/html/pandora_console/log/audit.log /var/log/messages
Se podrá observar que saldrán errores, por ejemplo:
type=AVC msg=audit(1431437562.755:437): avc: denied { write } for pid=1835 comm="httpd" name="collections" dev=dm-0 ino=266621 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_spool_t:s0 tclass=dir
Para convertir estos errores en reglas que SELinux pueda interpretar se debe ejecutar:
grep collections /var/www/html/pandora_console/log/audit.log | audit2allow -M pandora
Esto creará dos ficheros en el directorio actual:
pandora.pp pandora.te
Para activar la nueva regla se debe ejecutar:
sudo semodule -i pandora.pp
Se debe repetir el proceso para añadir las reglas que falten. Después de añadir todas las reglas, SELinux dejará de reportar errores.
Reglas necesarias para el correcto funcionamiento de Pandora FMS
CentOS 7 pronto alcanzará su fin de ciclo de vida (EOL). Esta documentación se conserva por propósitos históricos.
Para que Pandora FMS pueda ejecutar todos los servicios correctamente, se deberán crear reglas para las siguientes funcionalidades:
- Crear, actualizar y borrar colecciones.
- Enviar e-mails mediante las tareas programadas (Cronjob).
- Configuración remota de los agentes.
De otra forma, SELinux bloqueará cualquier acción asociada a estas funcionalidades.
Una forma de unir todas estas reglas en una sola, para poder usar Pandora FMS totalmente, sería:
grep -e data_in -e collections -e var_spool_t -e zip -e md5 -e denied /var/log/audit/audit.log | audit2allow -M pandora
Luego se debe repetir el paso descrito arriba para activar la regla. Con se abarcarían todos los posibles conflictos entre Pandora FMS y SELinux. Introduzca en la terminal de comandos con clave de root o derechos equivalentes (anteponga el comando sudo):
sudo semodule -i pandora.pp