目录
4.3.3、将文件或目录恢复成默认的安全上下文(拉取规则库中配置)
-
一、SELinux 服务介绍
selinux服务对root用户权限进行控制,很多企业中:selinux服务默认关闭
1.1、临时关闭服务
这三个命令只是临时生效,系统重启后恢复
- 临时关闭SELinux
#setenforce 0
- 临时打开SELinux
#setenforce 1
- 查看SELinux的状态
#getenforce
1.2、永久关闭
vi /etc/selinux/config
SELINUX=disabled
PS: 如果想让selinux配置文件生效,重启系统
SELinux 服务有三种配置模式,具体如下。
➢ enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
➢ permissive:遇到服务越权访问时,只发出警告而不强制拦截。
➢ disabled:对于越权的行为不警告也不拦截。
Selinux,默认情况下,就已经将已知的一些网络服务默认要访问的路径添加到规则库,并打上相应的context。
# ps axZ
二、端口上下文
注意:
- 不能修改默认已存在的规则,只能新增规则(只能追加,只能删除追加的内容)
添加端口号的规则的规则库
修改httpd的默认端口,且不是http_port_t 中定义的端口
1、以下命令为查看端口安全上下文信息
# semanage port -l | grep http_port_t
2、将/etc/httpd/conf/httpd.conf的Listen 端口修改为499,重启服务后提示失败
- 添加端口上下文信息
# semanage port -a -t http_port_t 499 -p tcp
三、使用布尔值调整selinux策略
控制服务的相关安全功能
打开:-1
关闭:-0
修改安全上下文信息可访问
四、文件或目录安全上下文 (标签)
4.1、安全上下文介绍
SELinux 管理过程中,进程是否可以正确地访问文件资源,取决于它们的安全上下文。进程和文件都有自己的安全上下文,SELinux 会为进程和文件添加安全信息标签,比如 SELinux 用户、角色、类型、类别等,当运行 SELinux 后,所有这些信息都将作为访问控制的依据。
system_u:object_r:httpd_sys_content_t:s0:[类别]
#身份字段:角色:类型:灵敏度:[类别]
seinfo命令:
- -u: 列出SELinux中所有的身份(user);
- -r: 列出SELinux中所有的角色(role);
- -t: 列出SELinux中所有的类型(type);
- -b: 列出所有的布尔值(也就是策略中的具体规则名称);
- -x: 显示更多的信息;
4.1.1、身份字段
用于标识该数据被哪个身份所拥有,相当于权限中的用户身份。这个字段并没有特别的作用。常见的身份类型有以下 3 种:
- - root:表示安全上下文的身份是 root。
- - system_u:表示系统用户身份,其中“_u”代表 user。
- - user_u:表示与一般用户账号相关的身份,其中“_u”代表 user。
4.1.2、角色字段
主要用来表示此数据是进程还是文件或目录。这个字段在实际使用中也不需要修改,所以了解就好。
常见的角色有以下两种:
- - object_r:代表该数据是文件或目录,这里的“_r”代表 role。
- - system_r:代表该数据是进程,这里的“_r”代表 role。
4.1.3、类型字段
类型字段是安全上下文中最重要的字段,进程是否可以访问文件,主要就是看进程的安全上下文类型字段是否和文件的安全上下文类型字段相匹配,如果匹配则可以访问。
注意,类型字段在文件或目录的安全上下文中被称作类型(type),但是在进程的安全上下文中被称作域(domain)。也就是说,在主体(Subject)的安全上下文中,这个字段被称为域;在目标(Object)的安全上下文中,这个字段被称为类型。域和类型需要匹配(进程的类型要和文件的类型相匹配),才能正确访问。
4.1.4、灵敏度
灵敏度一般是用 s0、s1、s2 来命名的,数字代表灵敏度的分级。数值越大,代表灵敏度越高
4.2、查询安全上下文
4.2.1、查询某一进程的安全上下文
# ps auxZ | grep httpd
只要进程和文件的安全上下文匹配,该进程就可以访问该文件资源
4.2.2、查询某一目录或文件的安全上下文
4.2.3、查询默认安全上下文
# semanage fcontext 选项
- -a添加默认安全上下文配置
- -d删除指定的默认安全上下文
- -m修改指定的默认安全上下文
- -t设定默认安全上下文的类型
查看上下文信息
# semanage fcontext -l
4.3、修改目录安全上下文
4.3.1、临时修改
更改了文件的属性,不会更改规则库内容
# chcon -t httpd_sys_content_t /data
4.3.2、永久修改(即更改默认上下文(又名规则库))
修改规则库(两种情况):
- 新增一个文件新规则(-a 参数)
- 修改文件原规则(-m 参数)
# semanage fcontext 选项
- -a添加默认安全上下文配置
- -d删除指定的默认安全上下文
- -m修改指定的默认安全上下文
- -t设定默认安全上下文的类型
httpd进程修改项目存放目录,后无法访问到/www 下文件,需要修改目录安全上下文
这条命令会给/www/目录及目录下的所有内容设定默认安全上下文类型是httpd_sys_content_t
# semanage fcontext -a -t httpd_sys_content_t "/www(/.*)?"
但是查询发现/www/目录的安全上下文并没有进行修改,那是因为我们只修改了默认安全上下文,而没有修改目录的当前安全上下文
4.3.3、将文件或目录恢复成默认的安全上下文(拉取规则库中配置)
# restorecon -Rv /www