Como posso consultar todas as regras do selinux / contextos de arquivo padrão / etc que afetam um tipo

10

Preciso saber tudo relacionado a um tipo selinux nas regras atuais de um sistema em execução :

  • permitir, permitir, auditar, regras de auditoria.
  • arquivos rotulados com um contexto usando o tipo
  • transições.

... e qualquer outra informação.

Existe algum comando que eu possa usar para consultar essas informações ou devo baixar todos os pacotes "src" relacionados ao selinux, filtrar os módulos que não estão em uso e grep todos os arquivos para essas informações? Deve haver uma maneira mais fácil de fazer isso.

Yanko Hernández Álvarez
fonte

Respostas:

10

Alguns dos comandos para obter esta informação são (exemplos usam 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
    

Referências: Manual do RHEL6 SELinux

dawud
fonte
existe alguma maneira de saber quais módulos usam um tipo especificado? ou seja, como conectar essas informações ao módulo de política selinux carregado (semodule -l)?
Yanko Hernández Álvarez
OK, reduzirei o escopo da pergunta para marcar esta resposta como aceita e separarei o primeiro aspecto de outra pergunta.
Yanko Hernández Álvarez
@ YankoHernándezÁlvarez acredite ou não, estou tentando descobrir isso. Postei minhas descobertas em outra pergunta.
dawud
Para quem procura, essa outra pergunta está aqui .
Michael Mol