什么是SELinux?

时间:2020-01-09 10:44:12  来源:igfitidea点击:

什么是SELinux?
为什么我应该在运行于IBM硬件上的CentOS或者Red Hat Enterprise Linux服务器上使用SELInux?

SELinux是安全性增强Linux的首字母缩写。
它是Linux内核的安全功能。
它旨在保护服务器免受错误配置和/或者损坏的守护程序的侵害。
它设置了限制,并通过定义安全策略来指示服务器守护程序或者程序它们可以访问哪些文件以及可以执行哪些操作。

什么是SELinux和DAC?

DAC是自由访问控制(DAC)的缩写。
它是Linux,* BSD,Apple OSX和Unix等操作系统安全性的标准机制。
在DAC下,每个进程都在用户和组下运行。
例如,httpd进程与关联的用户和一个称为apache的组一起运行。

httpd进程有权访问apache可以访问的所有文件和目录。
如果httpd进程被破解,可能会导致许多安全问题。
被入侵的httpd进程可以访问,修改和销毁属于apache用户的所有文件。
它可以访问临时目录(/tmp /或者/var/tmp)和世界可读文件。
/tmp或者/var/tmp或者任何其他合法目录(例如缓存目录)可用于安装后门并完全控制Linux系统。
文件的所有权提供了风险控制。
具有意外访问权限的cgi或者php脚本可以对apache用户拥有的文件执行任何它想执行的操作。
它可以对apache组中的文件执行任何操作。
攻击者可以使用此错误配置的cgi/php脚本或者损坏的Apache服务器来获取根级别的访问权限。
这将使超级用户可以在基于Linux的系统上进行访问。
扎根后,攻击者可以窃取您的私人数据或者访问内部网络(LAN)的其他部分。

具有DAC安全模型的Linux或者Unix服务器

MAC:通过SELinux的安全机制

MAC是强制访问控制(MAC)的首字母缩写。

SELinux是MAC安全机制的实现。
它内置在Linux内核中,并在Fedora,CentOS,RHEL和其他一些Linux发行版中默认启用。

SELinux允许服务器管理员为所有进程定义各种权限。
它定义了所有进程如何与服务器的其他部分进行交互,例如:

  • 管子
  • 档案
  • 网络端口
  • 插座
  • 目录
  • 其他过程

SELinux根据策略对上述每个对象施加了限制。
例如,具有完全权限的apache用户只能访问/var/www/html目录,而不能在未修改策略的情况下接触系统的其他部分,例如/etc目录。
如果攻击者设法获得对sendmail邮件的访问权限或者绑定dns或者apache Web服务器,则只能访问被利用的服务器,并且文件通常具有服务器策略中定义的访问权限。
攻击者无法访问系统或者内部LAN的其他部分。
换句话说,现在可以将损坏限制在特定的服务器和文件上。
由于SELinux提供以下安全功能,因此该破解程序将无法通过诸如Apache/BIND/Sendmail之类的常见守护程序在您的服务器上获取shell程序。

  • 保护用户数据免受未经授权的访问。
  • 保护其他守护程序或者程序免受未经授权的访问。
  • 保护网络端口/套接字/文件免受未经授权的访问。
  • 保护服务器免受攻击。
  • 避免特权升级等等。

请注意,SELinux并不是保护服务器的灵丹妙药。
您必须遵循其他安全惯例,例如

  • 实施防火墙策略。
  • 服务器监控。
  • 按时修补系统。
  • 编写和保护cgi/php/python/perl脚本。