深入理解SELinux
深入理解SELinux
Security-Enhanced Linux (SELinux)是强制访问控制MAC在Linux内核中的一种实现——在自主访问控制(DAC)检查之后,再次检查允许的操作。SELinux通过定义的策略,强制限定Linux系统中对文件的操作、进程的权限。
MAC:mandatory access control
DAC:discretionary access controls
优点
- 所有文件和进程都加上一个特定类型标签,一个类型标签为进程定义了一个域,而为文件定义了一种类型。SELinux策略中指定,进程访问文件的规则以及进程间通信规则。
- 细化访问控制。SELinux中访问能力取决相关信息,例如用户、角色、类型和等级(可选选项)。
- 策略由管理员设置,全系统范围有效。
- 防止权限升级,如果有进程被挟持了(compromised),攻击者只能访问有限的资源(该进程所能访问的资源)。
- 加强数据的安全性和完整性
注意:
SELinux不是杀毒软件
SELinux不是口令密码、防火墙或者其他安全系统的替代物
SELinux不是一体化的安全解决方案
SELinux是在已有的安全解决方案基础之上,增强安全性,而不是替代原有的安全解决方案。
工作状态
Enforcing(启用状态):SELinux策略是强制使用。SELinux会根据策略拒绝访问
Permissive(自由状态):SELinux策略不是被强制使用的,仅会根据策略提醒用户
Disabled(禁用状态):SELinux不启用
~]# getenforce # 查看启用状态 Enforcing ~]# setenforce 0 # 关闭SELinux ~]# getenforce Permissive 工作模式 strict(严格模式):每个进程都会受到Selinux的控制 targeted (宽松模式):仅对部分进程启用selinux的控制 安全标签 格式: user, role, type, level user, 用户 role, 角色 type, 类型 level, 等级,可选项 使用 ls -Z 可查看文件的标签 [root@node1 tmp]$ls -Z mbr.bak -rw-r--r--. root root system_u:object_r:tmp_t:s0 mbr.bak 第四个字段即为安全标签——“system_u:object_r:tmp_t:s0”
查看进程的安全标签——ps -Z
[root@node1 tmp]$ps aux -Z LABEL USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND system_u:system_r:init_t:s0 root 1 0.0 0.1 17128 1312 ? Ss 03:06 0:01 /sbin/in system_u:system_r:kernel_t:s0 root 2 0.0 0.0 0 0 ? S 03:06 0:00 [kthrea] system_u:system_r:kernel_t:s0 root 3 0.0 0.0 0 0 ? S 03:06 0:00 [migrat] system_u:system_r:kernel_t:s0 root 4 0.0 0.0 0 0 ? S 03:06 0:00 [ksofti] ...
修改安全标签
chcon命令
修改文件的SELinux安全上下文
常用选项
-u 指定用户
-r 指定角色
-t 指定类型或域
-R 递归修改文件或文件夹
修改文件安全上下文类型
[root@node1 tmp]$ls -Z mbr.bak -rw-r--r--. root root system_u:object_r:tmp_t:s0 mbr.bak [root@node1 tmp]$chcon -t tmp_tt_t mbr.bak # 修改文件的安全上下文类型 [root@node1 tmp]$ls -Z mbr.bak -rw-r--r--. root root system_u:object_r:tmp_tt_t:s0 mbr.bak
restorecon命令
还原文件安全上下文
常用选项
-R 递归还原文件或文件夹
getsebool
查看进程或服务本身开启或关闭的功能模块
-a 查看所有布尔值
setsebool
修改指定模块是否使用SELinux
-P 将修改结果保存本地磁盘
相关文件
/etc/selinux/config | /etc/sysconfig/selinux 配置SELinux启用状态和工作模式的文件
/var/log/audit/audit.log SELinux变动日志