【转载】SELinux 入门
上一篇 / 下一篇 2008-04-15 11:08:30 / 个人分类:操作系统
1.背景
-mi8z3n&s\S4`)z051Testing软件测试网TIfZH D)S
SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」 和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。51Testing软件测试网!C3_5X2]^Y
现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。
i0n/PAO c#W0r~|/nuOkO02.我们需要安全操作系统的理由
&o2?;F'A^bb'o0
#L#pT~(k }0现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS系统自身的牢固性就显得非常的重要。
_)^a*ZJ#j0l]6D0
WVWi j,u-J-}*E02.1传统的Linux OS的不足之处51Testing软件测试网)v,t~i X
:@r2h/Fe+]O;` f0虽然Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。51Testing软件测试网J6V*X7^g
^6r
1)存在特权用户root
6o6I$dr4l1?0 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。51Testing软件测试网Mo9F sp]o
2)对于文件的访问权的划分不够细
F'SW:E;RK/sl Z0 在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。51Testing软件测试网xZg|Oy1[
对于「其他」这一类里的用户再细细的划分的话就没有办法了。
&l%_n
Nz@5Bl_03)SUID程序的权限升级
O%s5y;W2`%?3_d%z0R0 如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。51Testing软件测试网7wF5Ry(i.L
4)DAC(Discretionary Access Control)问题
l\S;jY5jk I F&_0 文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。
C2m(|#nu@%z7W#x0在这种背景下,对于访问权限大幅强化的OS SELinux来说,它的魅力的无穷的。51Testing软件测试网 uEdq&b1`'Y
51Testing软件测试网;o(aU{-XvE
2.2 SELinux的优点51Testing软件测试网
{$T,zPS#P}
f ]SA1qjbZ1Y0SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。51Testing软件测试网)Wz}*`
KF/b)P%Jzs;D3UI
接下来我来介绍SELinux的一些特点。51Testing软件测试网 N+qp D+YF}
特点1:MAC(Mandatory Access Control)―――对访问的控制彻底化
$|"s#lvP:~^9c0对于所有的文件,目录,端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、一般用户是没有权限更改的。51Testing软件测试网2I'U'_Ea#Zy;s
9QbO"h$S7HR"Z#V'Tn0特点2: TE (Type Enforcement)――― 对于进程只付与最小的权限
%|
W`%^jI`x.wN0Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫 domain的 标签。Domain标签能够执行的操作也是由access vector在策略里定好的。
$KZ
Z3QW!s pw0我们熟悉的apache服务器,httpd进程只能在httpd_t 里运行,这个httpd_t 的domain能执行的操作,比如能读网页内容文件赋予httpd_sys_content_t, 密码文件赋予shadow_t, TCP的80端口赋予 http_port_t等等。如果在access vector里我们不允许 http_t来对http_port_t进行操作的花,Apache启动都启动不了。反过来说,我们只允许80端口,只允许读取被标为 httpd_sys_content_t的文件,httpd_t就不能用别的端口,也不能更改那些被标为httpd_sys_content_t的文件(read only)。
1sy;z-q8z-B B${)p&D051Testing软件测试网7Tf6@h"kH8A
特点3: domain迁移 ―― 防止权限升级