SElinux
原创
©著作权归作者所有:来自51CTO博客作者huakaihuaxie的原创作品,请联系作者获取转载授权,否则将追究法律责任
SElinux
由于传统linux的Discretionary Access Control自主访问控制缺陷,导致服务器的不安全,一旦不怀好意的网络黑客获得root用户权限,就可以以root的权限“为所欲为“后果也就不可想象。正是为了防止这类问题的发生linux引入了MAC(Mandatory Access Control)强制访问控制的机制,即诞生了现在的SElinux。
SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制 (MAC)系统。对于目前可用的 Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。
SElinux的工作方式:
Enforcing 强制状态,
Permissive 允许状态,警告模式
disable 禁止状态。
可以使用命令查看。
#getenforce
默认情况下,Redhat linux 中的SElinux处于Permissive,即警告模式,例如当root用户超越权限去使用资源等,会记录操作,但不会阻止,Enforcing 强制状态,严格模式,会阻止一切超越SElinux规定的操作。
那怎样修改SElinux呢?使用命令
#setenforce 0 启用Enforcing强制状态。
#setenforce 1 启用Permissive 允许状态,警告模式
这种方式的修改只是临时有效,如果想永久有效,可以编辑/etc/selinux/config或者编辑/etc/sysconfig/selinux文件。这两个是一个文件,只是建立了一个链接。
#vim /etc/selinux/config
SELINUX= [Enforcing | Permissive| disable]
选择其中一个你想要的状态。
如果你不想在开机启用SElinux,还可以在开机启动时,按任意键,编辑Grub选项,在kernel中后边加入enforce=0即可。
SElinux的管理靠label标签 和policy策略两种机制。
label标签最重要的是domain和type
那SElinux到底什是采取什么样的方法来保证系统安全呢?
SElinux把系统中的所有资源进行了分类,进程所属的类叫域(domain),文件或套接字、网卡等所属的类叫type类型。每一个subject进程是否可以访问某个object资源,取决于SElinux的控制机制—policy策略。动作的执行者subject一般是进程,而动作的承担者object可以是文件,也可以是进程或者套接字等。
那些可以操作其他资源的就是subject,那些被其他进程操作资源的就是object。一个subject怎样来操作object呢?使用lobel 标签。
标签的修改:
chcon –t 修改类型
chcon –R 递归修改
#ls –z install.log 查看文件install.log的标签
#chcon –t etc_t install.log 修改文件install.log的标签为etc_t型
#chcon --reference install.log /etc/b.txt 引用install.log的标签来定义/etc/b.txt的标签
#restorecon /etc/b.txt 恢复/etc/b.txt的默认标签
如果要查看进程的标签使用命令
#ps auxz
其中含有unconfined类型的进程表示不受SElinux控制的未定义的类型。
如果要查看用户redhat的标签使用命令
#id redhat
policy策略都是二进制类型的
可以使用命令查看:
#getsebool
也可以使用命令修改
#setsebool ppp-for-user [1|0] [on|off]
1和on表示对文件ppp-for-user临时启用策略任选一个。
0和off表示对文件ppp-for-user临时关闭策略任选其一。
如果想要永久生效,需要加-P选项即可
#setsebool –P ppp-for-user [1|0] [on|off]
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章