Wie kann ich alle Selinux-Regeln / Standarddateikontexte / usw. abfragen, die einen Typ betreffen?

10

Ich muss alles wissen, was mit einem Selinux-Typ in den aktuellen Regeln eines laufenden Systems zu tun hat :

  • erlauben, erlauben, prüfen, nicht prüfen Regeln.
  • Dateien, die mit einem Kontext gekennzeichnet sind, der den Typ verwendet.
  • Übergänge.

... und andere Infos.

Gibt es Befehle, mit denen ich diese Informationen abfragen kann, oder sollte ich alle selinux-bezogenen "src" -Pakete herunterladen, die nicht verwendeten Module herausfiltern und jede Datei nach diesen Informationen durchsuchen? Es muss einen einfacheren Weg geben, dies zu tun.

Yanko Hernández Álvarez
quelle

Antworten:

10

Einige der Befehle zum Abrufen dieser Informationen sind (Beispiele verwenden 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
    

Referenzen: RHEL6 SELinux Handbuch

dawud
quelle
Gibt es eine Möglichkeit zu wissen, welche Module einen bestimmten Typ verwenden? dh wie man diese Informationen mit dem geladenen Selinux-Richtlinienmodul (Semodule -l) verbindet?
Yanko Hernández Álvarez
OK, ich werde den Umfang der Frage reduzieren, um diese Antwort als akzeptiert zu markieren und den ersten Aspekt von einer anderen Frage zu trennen.
Yanko Hernández Álvarez
@ YankoHernándezÁlvarez ob Sie es glauben oder nicht, ich habe versucht, das herauszufinden. Ich habe meine Ergebnisse in Ihrer anderen Frage veröffentlicht.
Dawud
Für diejenigen, die suchen, ist diese andere Frage hier .
Michael Mol