Este modulo de seguridad de Linux que provee varias políticas de seguridad, incluyendo controles de acceso puede ser aplicado a sistemas tipo Unix como Linux y BSD.
Viene activado en CentOS y en la mayoría de las distros modernas, en los servidores generalmente esta activado.
Vamos a verlo no como aplicación de escritorio sino, como un sistema de seguridad en el servidor, lo que hace Selinux es comprobar en todo momento si el archivo al que se intenta acceder es valido y tiene permiso para ser utilizado por la aplicación que lo quiere ejecutar.
Aparte de controlar archivos, también controla puertos. Un caso de control es si intentamos arrancar un servidor de FTP, debemos antes darle los permisos correspondientes para que el servidor pueda escuchar en el puerto, sino no funcionara, normalmente esta configuración se hace durante la instalación.
Suponemos que ya esta instalado y vamos a configurarlo
SELinux tiene su propia base de datos de usuarios que esta asociada a la base de datos normal de usuarios de Linux. Las identidades son usadas en ambos,sujetos y objetos. Solamente unos cuantos usuarios de SELinux son definidos: (pueden ser listados por el comando 'semanage user -l'):
El directorio /etc/selinux es la ubicación principal para todos los archivos de políticas así como también para el archivo de configuración principal.
Utilidades y programas de SELinux
Vamos a ver cuales son algunos de los programas de utilidades usados más a menudo por selinux
/usr/bin/setenforce: modifica en tiempo real el modo en que se ejecuta selinux. al ejecutar el comando setenforce 1, se coloca selinux en modo impositivo es decir las reglas de seguridad estaran activas. si ejecutamos setenforce 0, selinux se coloca en modo permisivo.
para desactivar selinux, se necesita que configurar el parámetro en /etc/sysconfig/selinux o que pase el parámetro
selinux=0 al kernel, o bien si lo queremos desde el arranque del sistema operativo añadimos el comando al archivo /etc/grub.conf.
/usr/bin/sestatus -v: obtiene el estado detallado de un sistema ejecutando selinux. ejemplo siguiente muestra un extracto de la salida sestatus
# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted
Selinux tiene interfaz gráfica pero como puede administrase remotamente con ssh explicamos los comandos.
Un comando importante es getsebool y permite listar las políticas definidas en SELinux y determinar quye reglas estan están activas o inactivas. Desde la terminal escribimos el siguiente comando
getsebool -a |grep texto
El texto puede ser un servicio o programa que deseeemos por ejemplo
getsebool -a |grep ftp
Por ejemplo de este comando podemos obtener un estado de ftp
allow_ftpd_anon_write --> on //Permite acceso a usuarios anónimos por ftp en el servidor allow_ftpd_full_access --> on //Permitir lectura y escritura de archivos ftp_home_dir --> on //Permite a usuario acceder a sus directorios home
Debemos conocer cada servicio de nuestro servidor para poder verificar que es cada regla que controla Selinux y como esta configurada.