SELinux如何查看策略规则

75次阅读
没有评论

共计 2951 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章主要介绍“SELinux 如何查看策略规则”的相关知识,丸趣 TV 小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SELinux 如何查看策略规则”文章能帮助大家解决问题。

SELinux 查看策略规则的方法:1、使用 seinfo 命令,查询 SELinux 的策略提供多少相关规则,一个主体进程能否读取到目标文件资源的重点是在于 SELinux 的策略以及策略内的各项规则,语法“seinfo [选项]”;2、使用 sesearch 命令,可查询 SELinux 策略规则的具体内容,语法“sesearch [选项] [规则类型] [表达式]”。

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 类型的

关于“SELinux 如何查看策略规则”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注丸趣 TV 行业资讯频道,丸趣 TV 小编每天都会为大家更新不同的知识点。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-12发表,共计2951字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)