SeLinux基础
一、基础概念
SELinux的全称为安全加强的linux(Secure Enhanced Linux),工作于Linux内核中,用于实现强制访问控制机制。它实现的方式类似于将一个进程的运行环境限制在一个沙箱中,使得某个进程只能拥有沙箱中限定的权限,从而实现对进程的控制,避免其风险
1. 访问控制机制
- DAC:自主访问控制机制,linux原生的访问控制机制,安全上下文
- MAC:强制访问控制,SELinux引入的访问控制机制
2. SELinux的监控级别
设定selinux的监控严苛程度
- strict级别:严格级别,centos 5上的级别,每个进程都受到selinux的控制
- targeted级别:仅有限个进程受到selinux控制,这里指的有限的进程通常为比较著名的程序,比如httpd、vsftpd
- mls级别:分级别保护
- minimum级别:修改过的targeted级别,只有选定进程才被限制
3.安全标签
selinux为每个文件及进程都提供了安全标签,可以使用命令ll -Z
或ps auxZ
查看,显示为用冒号分割的四个字段,格式为user:role:type:敏感度
,通过第一个字段来限定进程活动范围内,通过第三个字段来限定文件支持的操作,从而形成沙箱
- user:selinux的user,用来标识某个进程或文件属于哪个域
- role:角色,有点类似于系统的组
- type:类型,以文件类型为例,它支持的操作open、read、write、close、chown、chmod
- 敏感度:用来定义进程或文件的重要程度,和监控级别中的mls挂钩
访问模型:假设一个A进程访问B文件
- 第一步:进程会基于安全上下文机制进行权限匹配,这时与没有selinux无异。如果有权限访问,则进行第二步
- 第二步:检查selinux的规则库,查看A进程所属的域是否授权了访问B文件所属的类型,如果有授权,则继续检查A进程发起的操作是否在B类型中被允许,如B文件类型仅允许read,但是A进程发起的操作是write,则被selinux规则所拒绝,在selinux中,只要没有允许的操作,都会被禁止
二、配置selinux
1. 通过配置文件关闭、启用selinux
selinux的配置文件位于/etc/sysconfig/selinux
或/etc/selinux/config
,日志文件位于/var/log/audit/audit.log
enforcing
:强制,每个受限的进程都必然受限permissive
:启用,每个受限的进程违规操作是不会被禁止,但会被记录disabled
:禁用selinux
2. 通过命令配置selinux
通过命令配置selinux只能在permissive和enforcing中切换,并且重启后失效,想永久有效或禁用必须在配置文件中定义,获取当前系统selinux状态可以使用命令getenforce
,而设定selinux需使用命令setenforce #
,#表示数字,取值为0或1
- 0:设置为permissive
- 1:设置为enforcing
3. 设定selinux布尔型标签
selinux在内部为很多常用服务做了布尔型限制,如httpd服务、vsftpd服务、named服务等等,这些服务提供的功能有很多,而selinux对一些不安全的功能都进行了限制,如匿名写、匿名登录、匿名读等等,使用getsebool -a
可以查看selinux布尔型标签是否启用
setsebool
命令
命令格式:setsebool [-P] boolean value
-P
:保存在策略中,永久有效- 命令示例:
setsebool ftp_home_dir 0
4. 修改文件标签
chcon
命令,格式:chcon [OPTION] [-t TYPE] FILE...
-R
:递归打标- 示例:
chcon -t httpd_sys_content_t a.txt
5. 将文件标签还原为默认值
restorecon
命令,格式restorecon [-R] /path/to/somewhere
-R
:递归- 示例:
restorecon a.txt
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Busyops!
评论