linux下selinux介绍及相关命令操作
selinux是什么?
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中。
传统的Linux权限控制采用自主式权限控制(Discretionary Access Control, DAC),依据程序拥有者和资源的rwx权限决定有无存取能力。这样存在root账户盗用可以使用任何资源和目录如果被设为777权限而导致任意存取和操作的问题。SELinux采用MAC(Mandatory Access Control, MAC).在访问资源时,判断程序是否有权限,而不是判断用户。所以,即使不小心httpd被 取得了控制权,他也无权浏览/etc/shadow 等重要的文档。开启SELinux后,访问文件会经过SELinux权限控制和普通的用户资源rwx权限控制。
SELinux 是整合到核心的一个核心功能,不需要启动什么额外的服务来开启SELinux.开机完成后,SELinux也就启动了。
selinux策略模式
targeted:针对网路服务限制较多,针对本机限制较少,默认为这个策略。
strict:完整的SELinux 限制,限制方面较为严格。
selinux三种模式
enforcing:强制模式,代表SELinux运作中,且已经正确的开始限制domain/type了。
permissive:宽容模式,代表SELinux运作中,不过仅会有警告讯息并不会实际限制domain/type的存取.这种模式可以运来作为SELinux的debug之用(看下什么原因导致无法访问)。
disabled:关闭模式
查询当前selinux模式
getenforce
查询SELinux当前policy详细信息
sestatus
SELinux status: enabled <==是否启动 SELinux
SELinuxfs mount: /sys/fs/selinux <==SELinux 的相关文件资料挂载点
SELinux root directory: /etc/selinux <==SELinux所在目录
Current mode: permissive<==目前的模式
Mode from config file: enforcing <==设定档指定的模式
Loaded policy name: targeted <==目前的政策为何
打开关闭
临时关闭 SELinux: setenforce 0 (设置SELinux 成为permissive模式)
临时打开 SELinux: setenforce 1 (设置SELinux 成为enforcing模式)
彻底关闭 SElinux: vi /etc/selinux/config 设置SELINUX=disabled ,重启生效
/etc/selinux/config 文件
这是selinux的配置文件,包含两个参数,selinux的模式和策略设置。
注意的是,如果改变了模式,则需要重新开机;如果由 enforcing 或 permissive 改成 disabled ,或由 disabled 改成其他两个,那也必须要重新开机。这是因为 SELinux 是整合到核心里面去的, 你只可以在 SELinux 运作下切换成为强制 (enforcing) 或宽容 (permissive) 模式,不能够直接关闭 SELinux 的!
同时,由 SELinux 关闭 (disable) 的状态到开启的状态也需要重新开机啦!所以,如果刚刚你发现 getenforce 出现 disabled 时, 请到上述文件修改成为 enforcing 吧!
开启或关闭selinux该如何选择?
说了这么多,那么我们平时在linux维护工作中该如何选择,到底选择那种模式,是要开启还是关闭好呢?
在人们长期实践中,大家一般都是关闭的,原因有以下几个:
- 麻烦
- 我们看到的文章,书里,使用SELinux的真的非常少,没有详细资料
- 不确定性,因为一直没有搞过,然后所有的软件的文档里也没有写SELinux相关的配置,遇到相关问题时不好解决。
开启总会导致许多莫名其妙的问题,限制很多,所以如果你有一台服务器的话,建议刚开始就关闭吧,目前的话,阿里云服务器已经默认是关闭的了。
快速关闭:setenforce 0 (临时的,重启后失效)
永久关闭:vi /etc/selinux/config 设置SELINUX=disabled (重启才能生效)