Comando Semanage con ejemplos
SELinux agrega mejoras de seguridad adicionales a través de un conjunto de cambios en el kernel y herramientas de espacio de usuario. Esto suele ser útil para servidores web y sistemas que están más expuestos.
¿Cómo modifica y cambia la configuración de SELinux en su sistema? En este tutorial, aprendemos sobre el comando semanage en Linux con ejemplos útiles.
orden de semana
Semanage es una herramienta utilizada para configurar ciertos elementos de la política de SELinux sin modificar o recompilar las fuentes de la política. Puede ayudar a ajustar contextos de puertos, valores booleanos y contextos de archivos, etc.
Las configuraciones comúnmente utilizadas incluyen la asignación de usuarios de Linux a identidades de usuario de SELinux y asignaciones de contexto de seguridad para puertos de red, interfaces, hosts y asignación de contexto de archivos.
Sintaxis
semanage {user|port|fcontext|boolean|permissive...} -l [-n]
Dónde,
port: administra las definiciones de tipo de interfaz de red.
fcontext – Administre las definiciones de mapeo de contexto de archivo.
booleano: maneje booleanos para habilitar selectivamente la funcionalidad.
permisivo – Para saber cómo aplicar el tipo de proceso
Usuario: administre roles y niveles para los usuarios.
Instalar Semanage
Semanage no está preinstalado en la mayoría de las distribuciones de Linux y debe instalar esta herramienta manualmente. Es parte de policycoreutils-python (en distribuciones de Linux anteriores) y policycoreutils-python-utils (distribuciones posteriores). Estos paquetes contienen utilidades básicas de políticas de SELinux.
Si semanage aún no está instalado en su computadora con Linux, es posible que reciba el siguiente error de semanage: comando no encontrado.
RHEL 7 y versiones anteriores, escriba:
yum install policycoreutils-python
RHEL 8 y posterior, escriba:
yum install policycoreutils-python-utils
sombrero de fieltro
dnf install policycoreutils-python-utils
Ubuntu/Debian
sudo apt install policycoreutils-python-utils
Para confirmar si semanage está instalado, escriba:
semanage -h
Puerto de Semenaje
De manera predeterminada, SELinux solo permite que los servicios conocidos se vinculen a puertos conocidos. Si queremos cambiar un servicio para usar un puerto no predeterminado, necesitaremos cambiar el tipo de puerto con el comando semanage port.
Puede usar estos comandos para enumerar los puertos existentes, agregar un puerto nuevo, un rango de puertos y eliminar puertos existentes.
Lista de puertos
Para enumerar todos los puertos en su computadora Linux, escriba:
sudo semanage port -l
SELinux Port Type Proto Port Number
afs3_callback_port_t tcp 7001
afs3_callback_port_t udp 7001
afs_bos_port_t udp 7007
afs_fs_port_t tcp 2040
afs_fs_port_t udp 7000, 7005
afs_ka_port_t udp 7004
…
Crear/Agregar puerto
Para crear un nuevo puerto, especifique el protocolo y el número de puerto:
sudo semanage port -a -t http_port_t -p udp 7956
Para asignar un rango de puertos a un puerto de red específico, escriba:
sudo semanage port -a -t http_port_t -p tcp 7957-7959
Output
sudo semanage port -lC
SELinux Port Type Proto Port Number
http_port_t tcp 7956, 7957-7959
Personalizar lista
Utilice la opción -lC para enumerar solo las personalizaciones y verificar que el puerto se haya creado correctamente:
sudo semanage port -lC
SELinux Port Type Proto Port Number
http_port_t udp 7956
Ignorar el puerto
Use la opción -m para reemplazar un puerto existente; de lo contrario, no es posible usar el mismo número de puerto:
sudo semanage port -m -t unreserved_port_t -p tcp 7956
Eliminar el puerto
Utilice la opción -d para eliminar un registro de puerto:
sudo semanage port -d -t unreserved_port_t -p tcp 7956
También puede usar el mismo comando para eliminar un rango de puertos:
sudo semanage port -d -t unreserved_port_t -p tcp 7957-7959
Contexto de Semanage
El comando Semanage Fcontext se usa para ajustar el contexto de los archivos de SELinux. Los cambios se escriben en los archivos bajo /etc/selinux/targeted/contexts/files/
director. Comúnmente utilizado para actualizar y eliminar el contexto del archivo. Los campos de contenido de SELinux (etiqueta SELinux) son usuario, rol, tipo y nivel de seguridad.
tienes que correr restorecon -v file-name|directory-name
para activar los cambios.
Ejemplos:
1. Para enumerar todas las definiciones de asignación de contexto de archivo sshd, escriba:
sudo semanage fcontext -l | grep sshd
/etc/ssh/primes regular file system_u:object_r:sshd_key_t:s0
/etc/ssh/ssh_host.*_key regular file system_u:object_r:sshd_key_t:s0
/run/sshd(/.*)? all files system_u:object_r:sshd_runtime_t:s0
/run/sshd.init.pid regular file system_u:object_r:sshd_runtime_t:s0
2. Agregue una nueva definición de mapeo de contexto de archivo para un archivo existente, escriba:
sudo semanage fcontext -a -t samba_share_t /tmp/docs.txt
Donde la opción -a agrega un nuevo registro y la opción -t define el tipo.
Esto agrega una nueva entrada al archivo /etc/selinux/targeted/contexts/files/file_contexts.local.
Para cambiar el tipo, escriba
restorecon -v /tmp/docs.txt
Para listar la información, ejecute:
ls -Z /tmp/docs.txt
3. Para cambiar el directorio y sus archivos, escriba el contexto:
sudo semanage fcontext -a -t httpd_sys_content_t "/site(/.*)?"
Aquí cambiamos el directorio /sitio y los archivos a httpd_sys_content_t.
4. Para eliminar el contexto, use la opción -d.
Ejemplo
semanage fcontext -d "/site(/.*)?"
Para restaurar el valor predeterminado de SELinux, ejecute el comando restorecon como usuario raíz de Linux.
Siembra permisiva
El comando permisivo de Semanage se utiliza para colocar un solo dominio en modo permisivo. Le permite agregar o eliminar módulos permisivos de la política SELinux.
Ejemplos
1. Use la opción -l para enumerar todos los módulos permisivos existentes:
sudo semanage permissive -l
Builtin Permissive Types
Customized Permissive Types
httpd_t
sshd_t
2. Use la opción -a para mover un dominio específico al modo permisivo:
sudo semanage permissive -a sshd_t
3. Use la opción -d para eliminar el modo permisivo que acabamos de crear:
sudo semanage permissive -d sshd_t
libsemanage.semanage_direct_remove_key: Removing last permissive_sshd_t module (no other permissive_sshd_t module exists at another priority).
secuencia booleana
El comando booleano semanage se usa para ajustar elementos específicos de las políticas de SELinux. Comúnmente utilizado para cambiar partes de la política de SELinux en tiempo de ejecución.
Ejemplos
1. Use la opción -l para listar todos los valores booleanos en la política actual de SELinux:
sudo semanage boolean -l | grep httpd
allow_httpd_anon_write (off , off) Determine whether httpd can
modify public files used for public file transfer services. Directories/Files must be labeled public_content_rw_t.
allow_httpd_apcupsd_cgi_script_anon_write (off , off) Determine whether the script domain can modify public files used for public file transfer services. Directories/Files must be labeled public_content_rw_t.
allow_httpd_awstats_script_anon_write (off , off) Determine whether the script domain can modify public files used for public file transfer services. Directories/Files must be labeled public_content_rw_t.
2. Utilice la opción -m para modificar el valor booleano:
sudo semanage boolean -m --off sshd
3. Utilice la opción -lC para enumerar todos los valores booleanos personalizados localmente:
sudo semanage boolean -lC
Conclusión
En este tutorial, aprendimos a usar el comando semanage en distribuciones de Linux basadas en RPM. El valor predeterminado de SELinux es denegar. Por lo tanto, debe administrar las políticas de seguridad para un uso refinado del software.
Gracias por leer, deje sus sugerencias y comentarios en la sección de comentarios a continuación.
Explore el sitio todo en uno de comandos de linux para más aprendizaje.