• 技术文章 >运维 >linux运维

    SELinux查看策略规则的方法有哪些

    青灯夜游青灯夜游2023-03-03 17:30:33原创217

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

    本教程操作环境: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 [选项] [规则类型] [表达式]

    选项:

    规则类型:

    表达式:

    下面举几个例子。首先我们演示一下,如果我们知道的是规则的名称,则应该如何查询具体的规则内容。命令如下:

    [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核实处理。
    专题推荐:SELinux linux
    上一篇:linux系统中以什么方式访问设备 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • linux可以mbr引导吗• linux中的lib是什么目录• linux怎么查询软件包的信息• linux查看文件权限的命令是什么• suse linux是什么系统• linux bashrc是什么
    1/1

    PHP中文网