Security Enhanced Linux (SELinux) es un módulo de seguridad del kernel de Linux que aplica políticas de control de acceso obligatorio. Esto permite restringir el acceso de un proceso a los archivos, directorios y puertos que su política permite explícitamente. De esta forma, se puede bloquear el acceso incluso cuando los permisos de archivo estándar lo conceden.
Acerca de esta tarea
Plataformas compatibles
MongoDB proporciona una política SELinux para usar con mongod. Esta está disponible para MongoDB Enterprise y MongoDB Community en sistemas que utilizan:
Red Hat Enterprise Linux o distribuciones relacionadas
MongoDB se instaló con el gestor de paquetes.
Configuración compatible
Si su implementación de MongoDB utiliza un valor personalizado para cualquiera de las siguientes configuraciones, no podrá utilizar la política SELinux de MongoDB:
Puertos de conexión: Puerto predeterminado de MongoDB
Directorio de datos:
dbPathDirectorio de registros:
pathRuta de identificación del proceso:
pidFilePath
Cobertura de la póliza
La política SELinux de MongoDB solo cubre mongod. Si desea utilizar SELinux en un sistema que también utilice mongos, mongosh o mongocryptd, deberá configurar una política personalizada.
Compatibilidad con versiones anteriores
Debe ejecutar el siguiente comando desde el directorio en el que se clonó previamente la política SELinux antes de poder volver a una versión anterior de MongoDB:
sudo make uninstall
Personalizar las políticas de SELinux
Puedes personalizar la política SELinux de MongoDB con el comando semanage. Por ejemplo, para agregar el puerto 30000 a mongod_port_t, ejecuta el siguiente comando:
sudo semanage port -at mongod_port_t -p tcp 30000
Esto configura SELinux para permitir conexiones TCP tanto en los puertos estándar de MongoDB como en el puerto 30000.
Antes de comenzar
Asegúrese de tener instalados en su sistema los paquetes necesarios:
sudo dnf install git make checkpolicy policycoreutils \ selinux-policy-devel
Aplicación
SELinux aplica políticas de forma predeterminada, lo que significa que bloquea los procesos que infringen las restricciones configuradas. En entornos de desarrollo, a veces los usuarios desactivan SELinux o lo configuran para que registre la actividad pero permita todas las operaciones. Antes de comenzar, verifique que SELinux esté aplicando sus políticas.
Para comprobar en qué modo se encuentra SELinux, ejecute el siguiente comando:
getenforce
Enforcing
Si el comando devuelve Permissive, puede restablecerlo a modo de aplicación con el comando setenforce:
sudo setenforce 1
Para que el cambio sea permanente, configure la variable SELINUX en el archivo /etc/selinux/config:
SELINUX=enforcing
Pasos
SELinux ahora utiliza la política de MongoDB, lo que le permite ejecutar mongod mientras SELinux está en modo de aplicación.