日期:2014-05-16  浏览次数:20604 次

linux 安装中的selinux 学习笔记

SELinux 是「Security-EnhancedLinux」的简称,是美国国家安全局「NSA=The National Security

Agency」 和 SCC(Secure Computing Corporation)开发的 Linux 的一个扩张强制访问控制安

全模块。

 

因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到

个人的隐私问题。特别是政府的网站,作为信息公开的平台,它的安全就更显得重要了。这

些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服

务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法

访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,

入侵检测系统,打补丁等等。因为 Linux 也和其他的商用 UNIX 一样,不断有各类的安全漏

洞被发现。

 

DAC(Discretionary access control,自主访问控制):DAC 机制就是指对象(比如程序、文件

或进程等)的的拥有者可以任意的修改或授予此对象相应的权限。例如传统 Linux,Windows

等。

MAC(Mandatory Access Control,强制访问控制):MAC 机制是指系统不再允许对象(比如

程序、文件或文件夹等)的拥有者随意修改或授予此对象相应的权限,而是透过强制的方式

为每个对象统一授予权限,例如 SELinux。

 

传统的 LinuxOS 的不足之处

虽然 Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的 UNIX

一样,有以下这些不足之处。

1)存在特权用户 root

任何人只要得到 root 的权限,对于整个系统都可以为所欲为。这一点 Windows 也一样。

2)对于文件的访问权的划分不够细

在 linux 系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。

对于「其他」这一类里的用户再细细的划分的话就没有办法了。

3)SUID 程序的权限升级

如果设置了 SUID 权限的程序有了漏洞的话,很容易被攻击者所利用。

4)DAC(DiscretionaryAccess Control)问题

文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。

对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。

 

SELinux 的优点

SELinux 系统比起通常的 Linux 系统来,安全性能要高的多,它通过对于用户,进程权限的最

小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。

在标准 Linux 中,主体的访问控制属性是与进程通过在内核中的进程结构关联的真实有效的

用户和组 ID,这些属性通过内核利用大量工具进行保护,包括登陆进程和 setuid 程序,对

于文件,文件的 inode 包括一套访问模式位、文件用户和组 ID。以前的访问控制基于读/写/

执行这三个控制位,文件所有者、文件所有者所属组、其他人各一套。

 

在 SELinux 中,访问控制属性总是安全上下文三人组形式,所有文件和主体都有一个关联的

安全上下文,标准 Linux 使用进程用户/组 ID,文件的访问模式,文件用户/组 ID 要么可以访

问要么被拒绝,SELinux 使用进程和客体的安全上下文,需要特别指出的是,因为 SELinux

的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权。若要访问文件,

必须同时具有普通访问权限和 SELinux 访问权限。因此即使以超级用户身份 root 运行进程,

根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源。

 

在 Linux 中 , passwd 程 序 是 可 信 任 的 , 修 改 存 储 经 过 加 密 的 密 码 的 影 子 密 码 文 件

(/etc/shadow),passwd 程序执行它自己内部的安全策略,允许普通用户修改属于他们自己

的密码,同时允许 root 修改所有密码。为了执行这个受信任的作业,passwd 程序需要有移

动和重新创建 shadow 文件的能力,在标准 Linux 中,它有这个特权,因为 passwd 程序可执

行文件在执行时被加上了 setuid 位,它作为 root 用户(它能访问所有文件)允许,然而,

许多程序都可以作为 root 允许(实际上,所有程序都有可能作为 root 允许)。这就意味着任

何程序(当以 root 身份运行时)都有可能能够修改 shadow 文件。类型强制使我们能做的事情

是确保只有 passwd 程序(或类似的受信任的程序)可以访问 shadow 文件,不管运行程序

的用户是谁

 

[root@localhost ~]# cat /etc/sysconfig/selinux

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#      enforcing -SELinux security policy is enforced.

#      permissive -SELinux prints warnings instead of enforcing.

#      disabled -No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible valuesare:

#         targeted- Only