1. 为什么提出SELinux
之前学习的权限,都是基于用户的(所有者、所有组、其它用户),只有当该用户针对某个文件或者目录具备相应的rws权限之后,才可以做相应的操作
此时系统管理员无法通过基于用户的标准访问策略(DAC)生成全面、精细的安全策略
此时就需要通过SELinux来实现
2. SELinux简介
SELinux实施强制访问控制(MAC),SELinux对每个文件、进程、目录、端口都有专门的安全标签,此标签被称为安全上下文;
SELinux就是基于进程安全上下文和文件/目录的安全上下文来实现策略控制
即:只有当文件/目录的安全上下文类型和进程的安全上下文类型符合时,该进程才可以对文件/目录做相应的操作
Subject是要管理的程序,Object是要操作的目标文件或其他资源。
Policy为基本的存取安全性策略,控制subject是否有权限操作object。Policy分为下面会讲到的三种类型,target mini mls.
3. SELinux作用
SELinux主要目标是防止已遭泄露的系统服务(进程)访问用户数据(文件/目录)
增强现有的安全解决方案
使用SELinux策略来确定某个进程能够访问文件、目录、端口
4. 注意事项
SELinux并不是防病毒软件、并不能够用来替代密码、防火墙和安全系统
SELinux的访问策略可以基于所有的可用信息(SELinux用户、角色、类型、安全级别等)
5. SELinux配置文件
SELinux的主配置文件:/etc/selinux/config
SELINUX 工作模式
ebforcing 强制模式(默认模式)
启用SELinux,并强制执行所有的安全策略规则
permissive 宽容模式
启用SELinux,但是安全策略规则并没有强制执行(即;当策略拒绝访问时,访问仍然可以被允许,但是会发送相关日志信息)
disabled 关闭模式
关闭SELinux,使用DAC访问控制方式(用于不需要增强安全性的环境)
注意事项
当从强制或者宽容模式切换到关闭模式,或从关闭模式切换到其它两种模式,需要重启系统
强制和宽容模式之间的切换不需要重启系统
修改工作模式
可以直接在配置文件修改,也可以使用命令修改
命令修改为临时切换,配置文件修改为永久切换
setenforce 0 切换到宽容模式
1 切换到强制模式
getenforce 查看selinux工作模式
6. SELINUX TYPE策略类型
策略类型决定了使用那种策略规则来执行进程(主体)可以访问的文件或目录资源(目标)
target
主要对系统中的服务进程进行访问控制
可以限制其它进程和用户
minumum
与Target类似,只不过此策略允许SELinux在不消耗过多资源的情况下运行
一般在低内存设备上使用(相比于target可以选择部分进程进行访问控制)
mls
自定义级别,对进程做访问控制
可以对所有进程做控制
修改策略类型
直接在配置文件修改
sestatus 查看selinux状态(包含策略类型)
7. 配置安全上下文
ls -Z 文件 查看文件的安全上下文
ls -dZ 目录 查看目录的安全上下文
ps auxZ | grep 进程 查看进程的安全上下文
安全上下文字段通过:分隔,分为4个字段
用户字段:角色字段:类型:灵敏度
SELinux用户
seinfo -u 列出SELinux中所有的身份
用于标识该数据被哪个身份所拥有(相当于权限中的用户身份)
unconfined_u :不受限的用户,不受SELinux限制的进程所产生的文件大部分就是此用户
system_u: 系统用户,大部分就是系统自己产生的文件
角色字段
seinfo -r 列出SELinux所有的角色
用于表示此数据是进程还是文件/目录
object_r: 代表的时文件/目录资源
system_r:代表的就是进程
类型
seinfo -t 列出SELinux所有的类型
安全上下文最重要的字段,决定着进程是否可以访问文件
在文件/目录的安全上下文中被称为类型,在进程的安全上下文中被称为域
只有主体(进程)的域与目标(文件/目录)的类型匹配时,才可以正常访问
chcon命令
chcon -t 文件/目录 修改文件/目录的类型字段
-u 修改安全上下文的身份字段
-r 修改安全上下文的角色字段
-R 对当前目录和目录下的所有文件同时设置
restorecon命令
restorecon -Rv 文件/目录 恢复文件默认的安全上下文
-R 对当前目录和目录下的所有文件同时设置
-v 显示恢复过程
8. 配置策略规则
sestatus
seinfo -b 查看当前策略下的具体规则名称
查看具体规则内容
sesearch --allow -b 规则名 查看此规则名下的允许规则具体内容
sesearch –allow -s 主体的域 查看和指定主体的类型相关的规则(允许的)
sesearch –allow -t 目标的类型 查看和目标的的类型相关的规则(允许的)
--allow 显示允许的规则
--neverallow 显示从不允许的规则
修改策略规则状态
getsebool 规则名 查看此规则是否开启
getsebool -a 查看所有规则是否开启
setsebool -P 规则名=0 将此规则关闭(1表示开启)
-P 表示永久生效
9. log
/var/log/audit/audit.log
sealert -a avc_file