安全上下文存在于进程与文件中,context随进程一起存入内存中,文件的context存放在其对应的inode中,因此进程在访问文件时,要先读取inode,再判断是否能够访问该文件。
ls -Z # 显示文件的安全上下文
ps -eZ # 显示所有进程的安全上下文
context可以有5个字段,以:为分割符,分别代表的含义如下
user role type sensitivity category身份识别
unconfined_u不受限的用户或文件
system_u受限的进程或文件
文件、进程、用户
object_r文件
system_r进程和用户
数据类型,重要
何种类型进程���问何种文件
安全级别
s0最低
只要在msl下才有意义
划分的不同分类,当它不存在了
context查询工具seinfo、sesearch
seinfo -u # 查询所有的user字段的种类
seinfo -r # 查询所有的role字段的种类
seinfo -t # 查询所有的type字段的种类
sesearch -A 可以查询什么类型进程可以读取什么type类型的文件
sesearch -A -s 进程type # 查询type类型的进程能够读取的文件type
sesearch -A -b 规则(规则的boolean值,所以为-b选项,理解为bool规则)
# 查询指定规则下放行的进程能够读取的文件type
3.2 当前context和期望context
系统中的每个文件都会有context,我们使用ls -Z查询出来的我们看到的context就是当前context;那期望context又是什么呢,系统会把每个文件的默认context记录下来并保存,这样系统记录下来的就是期望context。semanage命令可以管理每个文件的期望context,也叫期望标签。
semanage fcontext -l # 查看所有的期望SELinux标签
semanage fcontext -a -t type 目标目录 # 添加期望SELinux标签
semanage fcontext -m -t type 目标目录 # 修改期望SELinux标签
semanage fcontext -d -t type 目标目录 # 删除期望SELinux标签
修改规范:
~]# semanage fcontext -a -t type 目录(/.*)?
3.3 修改当前context
使用chcon命令手动修改security context,格式chcon 选项 目标文件
chcon # 手动修改文件的context,-R选项可以递归修改目录,-v选项可以显示context的修改前后的结果
chcon -t # 修改文件的context的type字段
chcon -u # 修改文件的context的user字段
chcon -r # 修改role字段
chcon -l # 修改安全级别
chcon -h # 针对软链接文件的修改,不加-h则会修改软链接对应的原文件
chcon --reference=file # 以file的context为模板修改
使用restorecon命令修改context为期望context,格式restorecon 选项 目标文件,
restorecon -R # 递归修改目录
restorecon -v # 显示修改的过程
3.3 semanage修改进程访问的端口号
虽然听起来是修改端口号的,但是到底还是修改安全上下文的,我们用semanage工具,命令为semanage port
查询某个服务的context type字段
语法:semanage port -l |grep 服务名
添加某个端口为指定服务的访问端口
语法:semanage port -a -t type -p 协议 端口号(不要与常用端口重复)
例如添加ssh服务的端口号,默认为22
四、SELinux日志管理