简介
SElinux 是Linux内核的安全增强模块,通过强制访问控制(MAC)机制提升系统安全性
MAC:强制访问控制
SELinux:引入第三方的权限限制,使用规则库中的规则对主体(动作发起者)和客体(被访问对象)都进行限制
SElinux 的运行状态和策略模式
selinux的三种运行状态:
getenforce #查看当前selinux 的运行状态:
disabled #关闭
enforcing #开启
permissive #开启警告但不限制宽容模式
setenforce 0 #临时关闭
selinux有三种策略模式:
targeted #普通模式
minimum #低限制模式
mls – Multi #高限制模式
安全上下文
所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在 SELinux 中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文:
用户:角色:类型
linux中一切皆文件,对于每个文件都有属于自己的权限。
ls -l wenjian.txt
可以看到文件的权限
在selinux开启状态下,在文件的权限位的末尾有一个.
文件上权限结尾位置的.
作用:属于SELinux的安全上下文
ls -Z # 查看文件的安全上下文 ps auxZ # 查看进程的安全上下文
文件的安全上下文
u :用户
r : 角色
t :类型(核心)
查看命令:
ls -lZ #filename(查看文件)
ls -ldZ #dirname(查看目录)
ps auxZ #进程(查看进程)
chcon -R -t httpd_sys_content_t /www #修改文件/目录的安全上下文、\#递归式修该/www目录和目录下的子文件的安全上下文为httpd_sys_content_t #selinux开启后创建的文件默认继承目录的安全上下文
*SElinux修改
有些特殊文件/目录的安全上下文类型不能修改;则使用以下操作:
bool值查看命令: getsebool命令: getsebool -a #列出所有bool值开关 getsebool -a | wc -l #统计有多少bool值kaig getsebool -a | grep #过滤与……相关的bool值 bool值设置命令: setsebool -P bool值 on setsebool -P bool值=1 #修改bool值开关: 1和on都是开启的意思;0和off都是关闭的意思
有一些不是文件/目录;也不是进程的内容;也被selinux限制;则执行下面操作
修改selinux的规则库的规则:
安装selinux的规则控制软件:
yum -y install policycoreutils-python # semanage命令: semanage port -l #-l=--list (列出);列出所有和端口相关的规则 semanage port -l | grep http #列出和http的端口相关的规则 # 当httpd服务的端口改为不是上面的端口时;httpd 服务则无法启动 semanage port -a -t http_port_t -p tcp 端口 -a #追加 -t #指定加入那条规则 -p #指定协议和端口【先协议后端口】
开启selinux后能正常使用操作系统的三种解决方案:
1、修改客体的安全上下文使其符合selinux规则;达到不被限制的要求。
2、通过修改bool值开关,控制用户的操作行为(修改规则)
3、修改selinux的规则库的规则;来放行用户行为