SElinux
由于传统linuxDiscretionary Access Control自主访问控制缺陷,导致服务器的不安全,一旦不怀好意的网络黑客获得root用户权限,就可以以root的权限“为所欲为“后果也就不可想象。正是为了防止这类问题的发生linux引入了MACMandatory 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标签最重要的是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]