SELinux: herramienta de línea de comandos para ver el contexto de seguridad (como selabel_lookup (3))

3

La función de biblioteca selabel_lookup(3) brinda una manera de obtener la información de contexto de seguridad de SELinux para un archivo, o más bien qué etiqueta de seguridad se espera que tenga un archivo [1].

¿Existe una utilidad de línea de comandos que busca información de contexto de seguridad para un archivo de las definiciones de políticas, posiblemente una que incluso utilice selabel_lookup(3) debajo de las cubiertas?

Puedo usar una especie de reverse grep(1) para buscar /etc/selinux/targeted/contexts/files/file_contexts . Parece que las entradas usan expresiones regulares extendidas (por lo tanto, egrep en lugar de grep ). Así que tendría que buscar las claves en file_contexts iterando sobre ellas y aplicando la clave a una búsqueda de expresiones regulares en mi nombre de archivo. Eso podría llevar mucho tiempo. Por ejemplo, Fedora 23 tiene 5935 líneas en file_contexts , lo que podría significar 5935 invocaciones de grep. Esperaba una solución más eficiente que esa.

[1] ls -Z o secon proporciona current contexto de seguridad para un archivo, pero puede que no sea el contexto correcto para ese archivo (como se describe en la definición de la política de SELinux para el sistema ).

    
pregunta Juan 01.07.2016 - 01:27
fuente

1 respuesta

2

Parece que matchpathcon(8) (del paquete libselinux-utils ) hace el truco:

% matchpathcon /tmp
/tmp    system_u:object_r:tmp_t:s0
% matchpathcon /tmp/foobar
/tmp/foobar     <<none>>

Creo que eso debería satisfacer mis necesidades [1].

Puede usar matchpathcon para verificar las etiquetas de los archivos existentes:

% matchpathcon -V /tmp
/tmp verified

Aunque -V es un poco confuso para los archivos que no tienen una política definida:

% matchpathcon -V /tmp/foobar; echo $?
/tmp/foobar has context unconfined_u:object_r:user_tmp_t:s0, should be <<none>>
1

Creo que un valor de contexto de <<none>> coincidiría con cualquier contexto con éxito en lugar de marcarlo como un error. La implementación actual que probé (libselinux-utils 2.4.4) marca esos casos con un código de salida distinto de cero (como se muestra arriba).

[1] Mi necesidad real es buscar el contexto de seguridad adecuado de un archivo en una imagen de chroot montada de un disco extraíble y configurarlo en el contexto adecuado según la política definida por el sistema. Esto asegurará que el disco obtenga la debida Etiquetas de seguridad antes de ser desplegadas. Específicamente quería buscar el contexto de seguridad para /tmp para aplicar ese contexto a un directorio personalizado que tiene una semántica similar a /tmp . El directorio personalizado no está (todavía) definido en una lista file_contexts .

    
respondido por el Juan 01.07.2016 - 02:52
fuente

Lea otras preguntas en las etiquetas