SELinux puede ayudarlo a proteger su servidor de procesos o aplicaciones que no funcionen correctamente. Desarrollada por la NSA (Agencia de Seguridad Nacional) para proteger los dispositivos del gobierno de los atacantes, la arquitectura de Linux con seguridad mejorada (SE) utiliza protocolos de seguridad para restringir el acceso a los recursos del sistema. Descubra cómo puede usarlo para su servidor.
Arquitectura SELinux
SELinux es un módulo del kernel que el administrador del sistema puede habilitar o deshabilitar. Como el acceso a archivos y puertos de red está limitado siguiendo una política de seguridad, un programa defectuoso o un demonio mal configurado no pueden tener un gran impacto en la seguridad del sistema.
Cuando una aplicación o proceso solicita acceso a archivos en el sistema SELinux, primero verifica el caché de vector de acceso (AVC). Si el permiso se almacenó previamente en caché, regresa con el archivo para la aplicación solicitada. Si el permiso no se almacena en caché, envía la solicitud al servidor de seguridad. El servidor de seguridad comprueba todas las políticas de seguridad en su base de datos. Dependiendo de la política de seguridad, el permiso se concede o se rechaza.
No existe el concepto de root o superusuario en SELinux. La seguridad de una distribución de Linux no modificada sin SE Linux depende de la corrección del kernel, todas las aplicaciones privilegiadas y sus configuraciones. una falla o error en cualquiera de estos componentes puede crear una superficie de ataque y comprometer el sistema.
Por otro lado, un sistema Linux modificado con SELinux depende principalmente de la corrección del núcleo y de las políticas de seguridad.
Cómo instalar o habilitar SELinux
SELinux significa Security Enhanced Linux. SELinux ha sido parte del kernel de Linux desde 2003. Por lo tanto, no tiene que instalarlo por separado. Sin embargo, en la mayoría de las distribuciones de escritorio de Linux, está deshabilitado de forma predeterminada.
SELinux tiene tres modos principales: Forzado, Permisivo y Deshabilitado. Vamos a discutirlos brevemente:
- Forzado: Esto activa y protege el sistema Linux mediante políticas de seguridad.
- Permisivo: No aplica las políticas de seguridad pero registra todo. Este modo es útil para solucionar problemas.
- Discapacitado: Desactiva SELinux. No se recomienda esta opción y, si vuelve a habilitar SELinux en su sistema, se producirán errores debido a cambios en el etiquetado.
Nota: Ubuntu se envía con AppArmor, una alternativa a SELinux. Si bien SELinux está disponible en Ubuntu, no es compatible con AppArmor y puede dañar su sistema si está habilitado. Si realmente necesita usar SELinux en Ubuntu, asegúrese de desactivar AppArmor y realice pruebas intensivas (primero comience con el modo permisivo) antes de usarlo para producción.
- Para activar SELinux en su sistema, debe editar el archivo “/etc/selinux/config”. Abra este archivo en su editor de texto.
sudo nano /etc/selinux/config
- Dentro del archivo de configuración, establezca
SELINUX=permissive
. Presione Ctrl + O y presione Enter para guardar el archivo y presione Ctrl + X para salir del editor. SELinux ahora está activado en su sistema.
NotaNota: si intenta hacer cumplir SELinux directamente antes de hacerlo permisivo, puede etiquetar incorrectamente los archivos y procesos y evitar que arranque.
- Para volver a etiquetar automáticamente el sistema de archivos, cree un archivo llamado «.autorelabel» en su sistema de archivos raíz. Ahora, cuando inicie su sistema, SELinux volverá a etiquetar automáticamente su sistema de archivos. Para reducir los errores, mantenga la
SELINUX=permissive
opción tal como está en la carpeta de configuración. Después de volver a etiquetar todo, establezca SELinux enSELINUX=enforcing
en “/etc/selinux/config” y reinicie.
SELinux se aplicará con éxito en su sistema.
Cómo configurar SELinux
SELinux es una arquitectura que permite a los administradores del sistema controlar qué puede acceder a los recursos del sistema. SELinux limita el acceso al sistema mediante el uso de políticas de seguridad. Hay muchas formas de configurar SELinux para proteger su sistema, siendo las más populares la «política dirigida» y la «seguridad multinivel» (MLS).
Una política específica es la política de seguridad predeterminada. Cubre una variedad de políticas de seguridad, como acceso a archivos, tareas, servicios, etc. La seguridad multinivel (MLS) es generalmente utilizada por el gobierno y las grandes organizaciones, es muy complicada de configurar y requiere un equipo dedicado para administrarla.
Puede verificar su modo SELinux actual con el comando getenforce
y sestatus
.
Si solo necesita cambiar el modo SELinux en la sesión actual, puede ejecutar los siguientes dos comandos.
sudo setenforce 0
: Configuración de SELinux en el modo permisivo para la sesión actual.sudo setenforce 1
: Configuración de SELinux en modo de aplicación para la sesión actual.
Políticas de SELinux
SELinux funciona como un sistema de etiquetado. Asocia cada archivo, puerto y proceso con una etiqueta. Las etiquetas son una forma lógica de agrupar cosas. El núcleo es responsable de administrar la etiqueta durante el arranque.
Fuente de imagen: MIT
Las políticas de SELinux se pueden administrar mediante booleanos. Por ejemplo, establezcamos booleano en un demonio llamado httpd
. httpd
es un demonio de servidor Apache HTTP que usamos para ejecutar servidores web en Linux.
Para enumerar todos los módulos específicos de httpd
ejecute el siguiente comando en su terminal:
getsebool -a | grep httpd
Aquí el -a
opción enumera todos los valores booleanos, y usamos grep
para filtrar booleanos relacionados solo con httpd
. Lea este artículo para saber más sobre grep en Linux.
El resultado del comando anterior se parece a la imagen de abajo.
httpd_builtin scripting --> on httpd_can_check_spam --> off httpd can connect ftp --> off httpd_can_connect_ldap --> off httpd_can_connect_mythty --> off httpd_can_connect_zabbix --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_memcache --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> off httpd dbus sssd--> off
De la lista anterior, tomamos el httpd_can_connect_ftp
booleano y cambiar su valor. Primero, lea el valor de httpd_can_connect_ftp
ya sea que esté encendido o apagado:
getsebool httpd_can_connect_ftp
Fijemos el valor de httpd_can_connect_ftp
permitir.
setsebool -P httpd_can_connect_ftp 1
Aquí, 1 representa allow
o on
. Él -P
La etiqueta se utiliza para hacer que el cambio sea permanente. Si vuelve a enumerar los valores booleanos relacionados con httpd, podemos ver el cambio en el httpd_can_connect_ftp
valor a on
.
httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd can connect ftp --> on httpd_can_connect_ldap --> off httpd_can_connect_mythty --> off httpd_can_connect_zabbix --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_memcache --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> off httpd dbus sssd--> off
Cómo manejar los errores de SELinux
SELinux tiene 4 tipos de errores en general:
- El sistema se ha roto: SELinux protege su sistema restringiendo el acceso, pero a veces esto no es suficiente. Si obtiene estos errores, entonces su sistema puede estar comprometido. Tome las medidas necesarias lo más rápido posible.
- Error en la política: si hay un error en la política que debe corregirse, aparece este error.
- las etiquetas estan mal: Este mensaje de error aparece durante la personalización del etiquetado por parte del usuario o cuando el etiquetado automático de SELinux falla. Hay muchas herramientas en el mercado para corregir estos errores de etiqueta.
- Hay que fijar una política: Estos errores se originan cuando realiza algunos cambios en el sistema y no informa a SELinux al respecto. Puede corregir este error utilizando módulos booleanos o de políticas.
Cómo deshabilitar SELinux
Deshabilitar SELinux nunca es una buena opción para servidores empresariales y gubernamentales y dispositivos públicos que son muy propensos a sufrir ataques. Pero si desea deshabilitar SELinux en su sistema, siga estas instrucciones.
- Vaya al archivo de configuración de SE Linux en “/etc/selinux” y cambie el modo de configuración de SE Linux de
enforcing
apermissive
luego reinicie su sistema. - Cambiar el modo SELinux de
permissive
adisabled
.
Después del próximo reinicio, SELinux en su sistema se desactiva y se convierte en una máquina Linux normal.
Preguntas frecuentes
¿Está presente SELinux en Android?
Sí, SELinux está implementado en Android desde la versión 4.3. Mejoró la seguridad de Android para proteger a los usuarios de Android de los ataques cibernéticos.
¿SELinux es un cortafuegos?
SELinux no es un cortafuegos. El firewall controla el tráfico entre la computadora y la red. Mientras que SELinux controla y gobierna el sistema de archivos y el acceso a la red de diferentes programas dentro del sistema, podemos pensar en SELinux como un firewall interno para proteger el sistema de sus programas.
¿SELinux es un sistema operativo?
SELinux no es un sistema operativo. Es un módulo de seguridad del kernel que existe en el kernel de Linux. Proporciona soporte para políticas de seguridad de control de acceso y controles de acceso obligatorios (MAC). Para llamarlo un sistema operativo, necesita más que el propio kernel. En la mayoría de los sistemas operativos basados en Linux, puede usar SELinux.
¿Deberías usar SELinux?
Si es administrador de sistemas y conoce el sistema Unix, debe usar SELinux, ya que mejora la seguridad de su servidor y minimiza la superficie de ataque. Si no está muy familiarizado con los sistemas Unix, también puede usar Apparmour. Esto es relativamente más fácil que SELinux. Si es un usuario doméstico y usa Linux solo en su computadora de escritorio, no es necesario que use SELinux. Solo le dará un dolor de cabeza configurar y reducir su productividad.
Danos tu opinión