LINUX

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
ayuda semanal

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.

Sobre el Autor

Bobbin Zacharias

Bobbin Zacharias

Bobbin comenzó su carrera de TI en 2000 como instructor de informática y trabajó como ingeniero de sistemas Linux y analista senior. Actualmente trabajando en entornos DevOps para aumentar la eficiencia y mejorar el tiempo de entrega en la infraestructura de la nube de AWS. Está certificado en RHEL, CCNA y MCP y tiene una Maestría en Ciencias de la Computación. En su tiempo libre le gusta jugar al cricket, bloguear y escuchar música.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar