SElinux
由于传统linuxDiscretionary Access Control自主访问控制缺陷,导致服务器的不安全,一旦不怀好意的网络***获得root用户权限,就可以以root的权限“为所欲为“后果也就不可想象。正是为了防止这类问题的发生linux引入了MACMandatory Access Control)强制访问控制的机制,即诞生了现在的SElinux<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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标签最重要的是domaintype

 

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]    

1on表示对文件ppp-for-user临时启用策略任选一个。

0off表示对文件ppp-for-user临时关闭策略任选其一。

如果想要永久生效,需要加-P选项即可

#setsebool –P  ppp-for-user [1|0] [on|off]