SELinux初探

背景

0day攻击:在计算机领域中,0day通常是指还没有补丁的漏洞,而0day攻击则是指利用这种漏洞进行的攻击。

当某个漏洞被曝光,但是,其安全补丁还没有制作出来的时候,我们可以使用SELinux来增强访问控制,一定程度上保护我们的服务器。等安全补丁出来以后,抓紧时间安装补丁。

什么是SELinux?

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

当初设计的目标

通常系统出现问题的原因大部分来自于“内部”员工的资源误用,实际由外部发动的攻击反而没有那么严重。这里“内部”不仅有真正的内部,还有黑客取得内部账号,化身为“内部”员工。举一个例子,如果一个系统管理员,为了自己设置的方便,将/var/www/html/的权限设置为drwxrwxrwx,我们安装过apache的都知道,这个目录是网页所在的目录。大家认为会发生什么可怕的事呢?或者说,如果设置这个目录为777,允许所有程序均可对这个目录访问,那也会发生很可怕的事。

SELinux其实就是解决这个问题的。它是再进行程序,文件等权限设置依据的一个内核模块。由于启动网络服务也是一个程序,因此它刚好也是能够控制网络服务能否访问系统资源的一道关卡。

DAC与MAC

DAC是自主访问控制,一般来说,我们知道,一个系统分为两种账号,一个是root,一个是一般用户。Root账号似乎无所不能,而一般用户账号,对于一些操作,有权限限制,这就是自主访问控制,也就是说,进程的所有者与文件的rwx权限来决定是否有访问的能力。这种情况就是,一旦不小心让黑客获得某个进程的root权限,那么这个程序就可以在系统上进行任何资源的访问

MAC是强制访问控制,它可以针对特定的进程与特定的文件资源来进行权限的控制。也就是说,即使你是root,在使用不同进程的时候,你所能取得的权限并不一定是root,而是要看该进程的设定。与DAC的区别就在于,控制的主体是进程,而不是用户。

SELinux的使用

SELinux有三种模式

  • Enforcing 强制模式,表示正在运行,已经正确开始限制domain/type了。
  • Permissive 宽容模式,表示正在运行,不会实际限制,但会有警告信息。
  • Disabled 关闭

通过命令

getenforce

获取模式状态,一般是关闭状态。

如何开启呢?

通过更改配置文件 /etc/selinux/config 实现。

vim /etc/selinux/config

将disabled改为enforcing

注意当从 Disabled 切换到Permissive 或者 Enforcing 模式后需要重启计算机并为整个文件系统重新创建安全标签

touch /.autorelabel && reboot

如果想关闭的话,还是改这个配置文件,改回disabled就行了。(别忘了重启)

SELinux 运行策略

配置文件 /etc/selinux/config 还包含了 SELinux 运行策略的信息,通过改变变量 SELINUXTYPE 的值实现,该值有两种可能: targeted 代表仅针对预制的几种网络服务和访问请求使用 SELinux 保护,strict 代表所有网络服务和访问请求都要经过 SELinux。可以根据自己的需要去更改。

总结

本文介绍了Linux自带的一个安全工具。在0day攻击上,有一定的左右。可以配合博客中其他安全策略一起使用。一起来从不同方面保证服务器的安全。关于SELinux的更深一步的内容,将在以后的博文中介绍。本文的重点还是想把这么一个工具安利给大家。

发表评论

发表评论

*

沙发空缺中,还不快抢~