首頁  >  文章  >  運維  >  SELinux檢視策略規則的方法有哪些

SELinux檢視策略規則的方法有哪些

青灯夜游
青灯夜游原創
2023-03-02 10:19:102854瀏覽

SELinux查看策略規則的方法:1、使用seinfo指令,查詢SELinux的策略提供多少相關規則,一個主體程序能否讀取到目標檔資源的重點是在於SELinux的策略以及策略內的各項規則,語法「seinfo [選項]」;2、使用sesearch指令,可查詢SELinux策略規則的具體內容,語法「sesearch [選項] [規則類型] [表達式]」。

SELinux檢視策略規則的方法有哪些

本教學操作環境:linux7.3系統、Dell G3電腦。

SELinux策略規則檢視方法有兩個:seinfo和sesearch。

目前 SELinux 的預設策略是 targeted,那麼這個策略中到底包含有多少個規則呢?使用 seinfo 指令即可查詢。

seinfo指令是用來查詢SELinux的策略提供多少相關規則,一個主體程序能否讀取到目標檔案資源的重點在於SELinux的策略以及策略內的各項規則,然後再透過該規則的定義去處理各項目標文件的安全上下文,尤其是「類型」部分。

sesearch 指令格式如下:

seinfo [选项]

常用選項:

#-a 列出SELinux的狀態、規則布林值、身分識別、角色、型別等所有資訊
-t #列出SELinux所有型別(type)的種類
-r 列出SELinux所有角色(role)的種類
#-u 列出SELinux所有識別(user )的種類
-b 列出所有規則的種類(布林值)
##參考實例:

[root@localhost ~]# seinfo -b
#还记得-b选项吗?就是查询布尔值,也就是查询规则名字
Conditional Booleans:187
#当前系统中有187个规则
allow_domain_fd_use
allow_ftpd_full_access
allow_sysadm_exec_content
allow_user_exec_content
allow_zebra_write_config
…省略部分输出…

seinfo 指令只能看到所有規則的名稱,如果想要知道規則的具體內容,就需要使用 sesearch 指令了。

sesearch 指令格式如下:

sesearch [选项] [规则类型] [表达式]

選項:

  • #-h:顯示幫助資訊;

規則類型:

  • --allow:顯示允許的規則;

  • #--neverallow:顯示從不允許的規則;

  • --all:顯示所有的規則;

表達式:

  • -s 主體類型:顯示和指定主體的類型相關的規則(主體是訪問的發起者,這個s 是source 的意思,也就是來源類型);

  • -t 目標類型:顯示和指定目標的類型相關的規則(目標是被訪問者,這個t 是target 的意思,也就是目標類型);

  • -b 規則名稱:顯示規則的具體內容( b 是bool,也就是布林值的意思,這裡是指規則名);

下面舉幾個例子。首先我們示範一下,如果我們知道的是規則的名稱,則應該如何查詢具體的規則內容。指令如下:

[root@localhost ~]# seinfo -b | grep http
httpd_manage_ipa
…省略部分输出…
#查询和apache相关的规则,有httpd_manage_ipa规则
[root@localhost ~]# sesearch --all -b httpd_manage_ipa
# httpd_manage_ipa规则中具体定义了哪些规则内容呢?使用sesearch命令查询一下
Found 4 semantic av rules:
allow httpd_t var_run_t:dir { getattr search open } ;
allow httpd_t memcached_var_run_t:file { ioctl read write create getattr setattr lock append unlink link rename open } ;
allow httpd_t memcached_var_run_t:dir { ioctl read write getattr lock add_name remove_name search open } ;
allow httpd_t var_t:dir { getattr search open } ;
Found 20 role allow rules:
allow system_r sysadm_r;
allow sysadm_r system_r;
…省略部分输出…

每個規則中都定義了大量的具體規則內容,這些內容比較複雜,一般不需要修改,會查詢即可。

可是我們有時知道的是安全上下文的類型,而不是規則的名稱。例如,我們已知 apache 進程的網域是 httpd_t,而 /var/www/html/ 目錄的型別是 httpd_sys_content_t。而 apache 之所以可以存取 /var/www/html/ 目錄,是因為 httpd_t 網域和 httpd_sys_content_t 類型相符。

那麼,該如何查詢這兩個類型相符的規則呢?指令如下:

[root@localhost ~]# ps auxZ | grep httpd
unconfined_u:system_r:httpd_t:s0 root 25620 0.0 0.5 11188 36X6 ? Ss
03:44 0:03 /usr/sbin/httpd
#apache进程的域是httpd_t
[root@localhost ~]# ls -Zd /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
#/var/www/html/ 目录的类型是 httpd_sys_content_t
[root@localhost ~]# sesearch --all -s httpd_t -t httpd_sys_content_t Found 13 semantic av rules:
...省略部分输出...
allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open };
allow httpd_t httpd_sys_content_t : dir { ioctl read getattr lock search open };
allow httpd_t httpd_sys_content_t : lnk_file { read getattr };
allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open };
...省略部分输出...
#可以清楚地看到httpd_t域是允许访间和使用httpd_sys_content_t类型的

相關推薦:《

Linux影片教學

以上是SELinux檢視策略規則的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn