6.6.6、查察 SELinux 安全上下文
[*]SELinux 管理过程中,进程是否可以精确地访问文件资源取决于它们的安全上下文。进程和文件都有本身的安全上下文,SELinux 会为进程和文件添加安全信息标签(比如 SELinux 用户、脚色、范例、种别等),当运行 SELinux 后全部这些信息都将作为访问控制的依据。
[*]查察文件和目次的安全上下文:
# jy: 使用选项 -Z 查看文件和目录的安全上下文
ls -Z
:<<!
-rw-------.root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
-rw-r--r--.root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--.root root system_u:object_r:admin_home_t:s0 install.log.syslog
!
[*]查察目次的安全上下文需添加-d选项(代表目次本身,而非目次下的子文件):
ls -Zd /var/www/html/
:<<!
drwxr-xr-x.root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
!
[*]查察进程的安全上下文:
# 启动 apache 服务
service httpd start
ps auxZ | grep httpd
:<<!
unconfined_u:system_r:httpd_t:s0 root 25620 0.0 0.5 11188 3304 ? Ss
03:44 0:02 /usr/sbin/httpd
…省略部分输出…
!
[*]只要进程和文件的安全上下文匹配,该进程就可以访问该文件资源。
[*]安全上下文使用:分隔为 4 个字段,实在共有 5 个字段,末了一个“种别”字段是可选的:
#身份字段:角色:类型:灵敏度:[类别]
system_u:object_r:httpd_sys_content_t:s0:[类别]
[*]以下对这 5 个字段的作用举行分析。
1、身份字段(user)
[*]用于标识该数据被哪个身份所拥有,相称于权限中的用户身份。这个字段并没有特殊的作用。常见的身份范例有 3 种:
[*]
[*]root:表现安全上下文的身份是 root
[*]system_u:表现体系用户身份,此中_u代表 user
[*]user_u:表现与一样寻常用户账号干系的身份,此中_u代表 user
[*]user 字段只用于标识数据或进程被哪个身份所拥有,一样寻常体系数据的 user 字段是system_u,而用户数据的 user 字段是user_u。
[*]SELinux 中到底可以辨认多少用户身份字段?可以使用 seinfo 下令查询(SELinux 的干系下令一样寻常都以se开头):
[*]
[*]seinfo [选项]
[*]
[*]
[*]选项:
[*]
[*]
[*]
[*]-u: 列出 SELinux 中全部的身份(user)
[*]-r: 列出 SELinux 中全部的脚色(role)
[*]-t: 列出 SELinux 中全部的范例(type)
[*]-b: 列出全部的布尔值(也就是战略中的具体规则名称)
[*]-x: 表现更多的信息
[*]SELinux 中可以大概辨认的 user 身份共有 9 种:
seinfo -u
:<<!
Users:9
sysadm_u
system_u
xguest_u
root
guest_u
staff_u
user_u
unconfined_u
git_shell_u
!2、脚色(role)
[*]紧张用来表现此数据是进程还是文件或目次。该字段在实际使用中也不必要修改。
[*]常见的脚色有(_r代表 role):
[*]
[*]object_r:代表该数据是文件或目次
[*]system_r:代表该数据是进程
[*]使用 seinfo 下令也可以查询 SELinux 中的脚色:
seinfo -r
:<<!
Roles:12
guest_r
staff_r
user_r
git_shell_r
logadm_r
object_r
sysadm_r
system_r
webadm_r
xguest_r
nx_server_r
unconfined_r
!3、范例(type)
[*]范例字段是安全上下文中最紧张的字段,进程是否可以访问文件紧张就看进程的安全上下文范例字段是否和文件的安全上下文范例字段相匹配,如果匹配则可以访问。
[*]留意:范例字段在文件或目次的安全上下文中被称作范例(type),但在进程的安全上下文中被称作域(domain)。即:在主体(Subject)的安全上下文中这个字段被称为域;在目的(Object)的安全上下文中这个字段被称为范例。域和范例必要匹配(进程的范例要和文件的范例相匹配)才气精确访问。
[*]SELinux 中有多少范例也是通过 seinfo 下令查询:
seinfo -t | more
:<<!
Types:3488
#共有3488个类型
bluetooth_conf_t
cmirrord_exec_t
foghorn_exec_t
jacorb_port_t
sosreport_t
etc_runtime_t
…省略部分输出…
!
[*]已知 apache 进程可以访问/var/www/html/(此目次为 RPM 包安装的 apache 的默认网页主目次)目次中的网页文件,以是 apache 进程的域和/var/www/html/目次的范例是匹配的,我们查询一下:
ps auxZ | grep httpd
:<<!
unconfined_u:system_r:httpd_t:s0 root 25620 0.0 0.5 11188 3304 ? Ss
03:44 0:02 /usr/sbin/httpd
#apache进程的域是httpd_t
!
# ls -dZ /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
[*]apache 进程的域是httpd_t,/var/www/html/目次的范例是httpd_sys_content_t,这个主体的安全上下文范例颠末战略规则的比对,是和目的的安全上下文范例匹配的,以是 apache 进程可以访问/var/www/html/目次。
[*]在 SELinux 中最常遇到的标题就是进程的域和文件的范例不匹配,以是肯定要把握怎样修改范例字段。
4、敏捷度
[*]敏捷度一样寻常用 s0、s1、s2 来定名,数字代表敏捷度的分级。数值越大代表敏捷度越高。
5、种别
[*]种别字段不是必须有的,以是使用ls和ps下令查询时并没有看到种别字段。
[*]可以通过 seinfo 下令来查询:
# 查询所有的user字段,并查看详细信息
seinfo -u -x
:<<!
system_u
#user字段名
default level:s0
#默认灵敏度
range:s0 - s0:c0.c1023
#灵敏度可以识别的类别
roles:
#该user能够匹配的role(角色)
object_r
system_r
unconfined_r
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页:
[1]