您的位置:首页 > 运维架构 > Linux

安全的加强的linux:SELinux

2011-11-23 11:56 295 查看
selinux;全称安全加强的linux

secutity enhanced linux

上个世纪80年代美国国家安全属NSA研发出
MAC:强制访问控制

linux安全模型,每一个用户,他所拥有的文件,他想共享使用。
例如redhat用户,想让gentoo用户对自己的a.txt权限664的文件有写权限。

就需要修改权限664-->666(DAC自主访问控制)

这样一来就有很大的风险,其他用户也有了写权限。

进程的执行取决去用户所拥有的权限,我们只想让gentoo对a.txt具有写权限,进行修改。对其他任何文件都不能修改。

那么我们就需要对他进行一些限制,将他能执行的操作,仅限于a.txt这个文件。

我们就借助sandbox:沙盒 将他的权限限定在某个特定目标

我们定义一个进程类型为t1,在定义一个目标为t2
我们制定一个策略表,t1只能对t2执行什么操作,把活动范围限制在沙盒。

就是提供了一个域,将活动范围限定在这个域之内。
subject:domain(type)

例如:一个web网站,linux系统上需要用户发起httpd进程来访问。这个用户拥有rx权限。我们只需要用户查看网页就行了,不能让他访问我们的系统,那么只要将他限定在一个域内就行了。比如我们建一个目录
/var/www,我们把用户的httpd进程活动范围限制在这个目录。他就算搞破坏,也只是针对这个目录,无法搞坏我们整个系统。

MAC做进了内核,-->SELinux

selinux的模型:

strict模型:安全级别太高,每一个进程都需要严格设定,五角大楼才用 - -!!

target模型:只对可能有风险的进行限定,web,ftp,http等

在/etc/selinux/config定义了类型
SELINUXTYPE=target在最后一行
可以关闭,只要修改SELINUX=enforcing
enforcing-状态为生效
permissive-状态为生效,但不强制,只警告不阻止。发送邮件至日志
disabled-不开启
下次开机生效
getenforce查看当前生效的模型
setenforce 0 或1改变状态,在enforcing与permissive之间切换

/etc/sysconfig/selinux链接/etc/selinux/config

类型强制:selinux为每一个进程分配了一个标签

label:标签
user:用户
role:组
type:类型

#ls -Z 字段user:role:type 查看文件标签
#ps -axZ 查看进程标签
定义规则,策略在/etc/selinux/targeted/policy/policy.21
它是二进制格式,不可直接制定,需要文本文件,在进行转换

改变文件的类型# chcon -t 类型 文件名

我们可以通过修改文件标签来限制进程访问文件

restorecon -vvF 恢复文件类型
如果是目录,只改目录本身。要想对其子目录及其文件生效,使用-R

如果ftp被selinux限制,就不能上传了。
使用getsebool -a | less 查看进程功能的开启与关闭
修改方法:setsebool 功能名 no或off
当前生效,永久有效要加-P选项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息