SELinux安全性配置

SELinux安全性配置

一.关于selinux

1.简介

  SELinux(Security-Enhanced Linux,中文翻译为增强型Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

  SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。在selinux之前root拥有最大的权限先,可以随意的访问或更改任何文件和服务配置文件,如果某个文件设为777,那么任何用户都可以访问甚至删除。 这种方式称为DAC(主动访问机制),很不安全。DAC自主访问控制: 用户根据自己的文件权限来决定对文件的操作,也就是依据文件的own,group,other/r,w,x 权限进行限制。Root有最高权限无法限制。r,w,x权限划分太粗糙。无法针对不同的进程实现限制,而MAC则可以。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

  SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。

2.工作方式

  在SELinux中,访问控制属性叫做安全上下文,所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户(u)、角色(r)、和类型(t)标识符。但我们最关注的是第三部分

  当程序访问资源时 ,主体程序必须要通过selinux策略内的规则放行后,就可以与目标资源进行安全上下文的比对,若比对失败则无法存取目标,若比对成功则可以开始存取目标,最终能否存取目标还要与文件系统的rwx权限的设定有关

3.SELinux的核心组件

SELinux核心组件执行enforcement 安全策略是的流程如下图。

  • 1.一个请求/获取资源/权限的subject必须存在。
  • 2.一个对象管理器,其知道对特定资源需要的权限,
  • 3.Security Server根据安全规则对请求的访问做安全决策
  • 4.Security Policy描述了使用SELinux的policy语言描述的规则
  • 5.Access Vector Cache(AVC)通过缓存安全策略以提高系统性能。

上图从下到上是:

a)当前security server嵌入在linux kernel空间,policy则由libselinux库提供的若干函数从用户空间取得。

 OM(object manager)和AVC(access vector cache)驻留在内核空间和用户空间。

扫描二维码关注公众号,回复: 11439794 查看本文章

b)SELinux 安全策略(上图右侧),其支持/etc/selinux目录下的配置文件。这个目录包括了SELinux主要配置文件。

c)支持模块策略,

d)Policy source是必须的,可以有三种基本方法提供。

  i)作为SELinux Policy Language所写的源码。

  ii)使用Reference Policy支持高级宏定义安全规则。这是当前SELinux采用的标准方法。

  iii)使用CIL(common Intermediate Language)

e)为了能够编译连接规则源文件,以及加载安全服务需要许多工具(上图上半部分)

f)为了使得管理员可以管理策略,SELinux环境和标签文件系统,工具以及修改的linux 命令被使用。

g)为了确保安全事件被记录,audit 服务用于捕捉违反规则的信息。

h)SELinux支持网络服务。

有SELinux情况时的系统调用

DAC是标准linux的Discretionary Access Control。

关于内核空间和用户空间:

内核空间

OM服务于内核服务如文件,目录,套接字,进程间通信等,由嵌入SELinux子系统的Linux Security Module(LSM)的hook函数提供。内核空间的AVC用于缓存加速基于内核OM的访问速度。

用户空间

应用程序或用户空间服务的MAC控制。

二.使用selinux进行权限设定

1.查看selinux的状态

(1).sestatus查询selinux工作状态

可以看到selinux目前的状态、文件挂载点、root用户目录、当前策略组名称、工作模式等等信息

(2).selinuxenabled检查selinux是否开启,配合echo $?.传回值是0为开启,1为关闭。

$?代表上个命令的返回值,用echo显示出来,0为开启,1为关闭

(3).getenforce

 

permissive  警告模式

enforcing     强制模式

disabled      关闭模式

2.设置selinux的状态

(1).命令的方法更改selinux状态:

setenforce  0|1

0  permissive  警告模式:系统不会受到selinux保护,只是收到警告信息。即使违反了策略的话也可以继续操作,但是会把违反策略的内容记录下来(警告信息)

1  enforcing     强制模式:系统收到selinux保护,开启安全上下文的匹配,任何违反策略的操作都会被拦截

注:该方法会立即生效但只是临时的,重启系统之后设置将不会被保留

可以看到改完后立即生效,从强制模式改为警告模式,但是需要注意的是该方法不能关闭selinux,当selinux关闭时也无法用该方法打开selinux

(2).修改配置文件的方法更改selinux状态:

vim /etc/sysconfig/selinux

disabled      关闭模式

permissive       警告模式

enforcing       强制模式

selinux是内核级别的插件,所以修改完文件后需要重启系统,重新加载内核修改才会生效,该方法不是即时生效,但可以永久生效,而且也可以关闭selinux

(3)图形界面管理

rhel还提供了一个图形界面工具管理selniux的软件,在rhel7中命为policycoreutils-gui,在7之前的版本中可能名为system-config-securitylevel,安装后

使用命令system-config-seliux即可以图形的方式设置selinux的状态、策略等,在此只作简介,不具体介绍,可以自己尝试

如果记不住名字可以用yum搜索,参数用search 或者whatprovides都可以

图形工具的界面如上,左侧有很多选项可以更改文件安全上下文、服务布尔值、网络端口等等

3.查看安全上下文

ls -lZ     ##查看文件的安全上下文

ls -dZ    ##查看目录的安全上下文

ps -Z    ##查看进程的安全上下文

id -Z     ##查看用户的安全上下文

查看文件的布尔值root之后的一串字符就是该文件的布尔值

 

查看目录的布尔值

查看进程的布尔值

查看你用户的布尔值

4.SELinux的布尔值

getsebool  -a        ##查看所有服务的布尔值

getsebool -a | grep 服务名  ##查看制定服务的布尔值

setsebool -P  策略名  on |off   ##设定某项服务的某个策略是否开启,on表示开启,off表示关闭

或者

setsebool -P  策略名  1  |   0  ##1表示开启,0表示关闭

以http服务为例,可以看到当selinux开启时,许多权限默认关闭

查看ftp服务的布尔值并开启匿名用户可写的权限

可以看到权限已经开启

5.查看日志

/var/log/audit/audit.log

猜你喜欢

转载自www.cnblogs.com/Auscoo/p/13377569.html