¿Cómo puedo consultar todas las reglas de selinux / contextos de archivo predeterminados / etc. que afectan a un tipo

10

Necesito saber todo lo relacionado con un tipo de selinux en las reglas actuales de un sistema en ejecución :

  • permitir, permitir auditar, no auditar reglas.
  • archivos etiquetados con un contexto usando el tipo.
  • transiciones

... y cualquier otra información.

¿Hay algún comando que pueda usar para consultar esa información o debo descargar todos los paquetes "src" relacionados con selinux, filtrar los módulos que no están en uso y grep cada archivo para esa información? Debe haber una manera más fácil de hacer eso.

Yanko Hernández Álvarez
fuente

Respuestas:

10

Algunos de los comandos para obtener esta información son (uso de ejemplos httpd_log_t):

  1. seinfo

    # seinfo -x --type=httpd_log_t /etc/selinux/default/policy/policy.26
       httpd_log_t
          file_type
          non_security_file_type
          logfile
    
  2. sesearch

    # sesearch --dontaudit -t httpd_log_t /etc/selinux/default/policy/policy.26 | head
    Found 35 semantic av rules:
        dontaudit run_init_t file_type : dir { getattr search open } ;
        dontaudit staff_t non_security_file_type : file getattr ;
        dontaudit staff_t non_security_file_type : dir { ioctl read getattr lock search open } ;
        dontaudit staff_t non_security_file_type : lnk_file getattr ;
        dontaudit staff_t non_security_file_type : sock_file getattr ;
        dontaudit staff_t non_security_file_type : fifo_file getattr ;
        dontaudit unconfined_t non_security_file_type : file getattr ;
        dontaudit unconfined_t non_security_file_type : dir { ioctl read getattr lock search open } ;
        dontaudit unconfined_t non_security_file_type : lnk_file getattr ;
    
  3. semanage

    # semanage fcontext -l | grep httpd_log_t
    /etc/httpd/logs                                    all files          system_u:object_r:httpd_log_t:s0
    /var/log/apache(2)?(/.*)?                          all files          system_u:object_r:httpd_log_t:s0
    /var/log/apache-ssl(2)?(/.*)?                      all files          system_u:object_r:httpd_log_t:s0
    /var/log/cacti(/.*)?                               all files          system_u:object_r:httpd_log_t:s0
    /var/log/cgiwrap\.log.*                            regular file       system_u:object_r:httpd_log_t:s0
    /var/log/horde2(/.*)?                              all files          system_u:object_r:httpd_log_t:s0
    /var/log/httpd(/.*)?                               all files          system_u:object_r:httpd_log_t:s0
    /var/log/lighttpd(/.*)?                            all files          system_u:object_r:httpd_log_t:s0
    /var/log/piranha(/.*)?                             all files          system_u:object_r:httpd_log_t:s0
    /var/www(/.*)?/logs(/.*)?                          all files          system_u:object_r:httpd_log_t:s0
    

Referencias: manual de RHEL6 SELinux

Dawud
fuente
¿Hay alguna manera de saber qué módulos usan un tipo específico? es decir, ¿cómo conectar esa información al módulo de política de selinux cargado (semodule -l)?
Yanko Hernández Álvarez
OK, reduciré el alcance de la pregunta para marcar esta respuesta como aceptada y separaré el primer aspecto de otra pregunta.
Yanko Hernández Álvarez
@ YankoHernándezÁlvarez lo creas o no, estoy tratando de resolverlo. He publicado mis hallazgos en otra pregunta.
dawud
Para aquellos que buscan, esa otra pregunta está aquí .
Michael Mol