Linux学习-SElinux基本

来源:互联网 发布:java length()方法 编辑:程序博客网 时间:2024/06/05 05:51

SELinux 

全称 Security Enhanced Linux (安全强化 Linux),是美国国家安全局2000年以 GNU GPL 发布,是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。强制访问控制系统 的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力。所以它不是网络防火墙或 ACL 的替代品,在用途上也 不重复。在目前的大多数发行版中,已经默认在内核集成了SELinux。

  • 控制策略是可查询而非程序不可见的。
  • 可以热更改策略而无需重启或者停止服务。
  • 可以从进程初始化、继承和程序执行三个方面通过策略进行控制。
  • 控制范围覆盖文件系统、目录、文件、文件启动描述符、端口、消息接口和网络接口。

SElinux配置文件

    在CentOS 7系统中部署SELinux非常简单,由于SELinux已经作为模块集成到内核中,默认SELinux已经处于激活状态。对管理员来说,更多的是需要配置与管理SELinux,CentOS 7系统中SELinux全局配置文件为/etc/sysconfig/selinux,内容如下:

[root@centos7 ~]# vim /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= can take one of these two values:

 # targeted - Targeted processes are protected,

 # mls - Multi Level Security protection. SELINUXTYPE=targeted


       SELinux=enforcing为SELinux总开关,有效值可以是enforcing、permissive或disabled。


     其中,disabled代表禁用SELinux功能,由于SELinux是内核模块功能,所以如果设置禁用,需要重启计算机。permissive代表仅警告模式,处于此状态下时,当主题程序试图访问无权限的资源时,SELinux会记录日志但不会拦截该访问,也就是最终访问是成功的,只是在SELinux日志中记录而已。enforcing模式代表强制开启,SELinux会拦截非法的资源访问并记录相关日志。

      使用setenforce可以临时在enforcing模式与permissive模式之间切换,切换会被立刻应用于当前系统,计算机重启后无效,永久修改模式需要修改配置文件。

[root@centos7 ~]# setenforce 0

 #设置SELinux为permissive模式

 [root@centos7 ~]# setenforce 1

 #设置SELinux为enforcing模式

SELinux安全上下文

    SELinux会为进程与文件添加安全信息标签,如:SELinux用户、角色、类型以及可选的级别。当运行SELinux后所有这些信息都是访问控制的依据。下面通过一个实例文件查看SELinux安全上下文,使用ls -Z命令就可以看到文件或目录的这些上下文信息,而ps aux CZ则可以查看进程的安全上下文信息:

[root@centos7 ~]# ls -Z anaconda-ks.cfg -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg 

[root@centos7 ~]# ps aux -Z

SELinux的安全上下文包括     用户:角色:类型:级别