CentOS上的安全防护软件Selinux详解

  • Post category:Linux

CentOS 上的安全防护软件 Selinux 详解

什么是 SELinux

SELinux 全称为 Security-Enhanced Linux,是一款重要的 Linux 安全模块。其目的是提供强制访问控制(MAC)安全模型来支持操作系统的安全策略和保护。

SELinux 的使用场景

SELinux 适用于任何需要高度可信度和安全性保证的环境,例如云平台、虚拟化、数据中心、服务器等区域。

SELinux 的工作方式

默认情况下,SELinux 处于被禁用状态,使用者需要做以下操作启用 SELinux:

setenforce 1

启用后,SELinux 可以保护系统中的所有文件、进程、查看等的访问控制。

SELinux 的配置

SELinux 的配置,涉及的文件主要有以下三个:

  • /etc/selinux/config :这个文件调整了 SELinux 的启动参数;

  • /etc/sysconfig/selinux :这个文件指定了 SELinux 的运行状态;

  • /etc/selinux/targeted/semanage
    (或 /usr/sbin/semanage):这个工具可以创建和管理各种 SELinux 策略模块。

SELinux 的策略模块

SELinux 模块分为三种类型:

1、“TE”模块:通用策略模块,即可以应用于所有系统的一个或多个方面;

2、“PP”模块:该模块是个人策略模块,它是根据特定应用程序的需求创建的;

3、“RBAC”模块(基于角色的访问控制):它基于系统级别的用户访问控制。

SELinux 的实际应用

在 CentOS 系统上启用 SELinux 后,可以通过以下命令查看 SELinux 的当前状态:

getenforce

如果输出的值是 Enforce mode,说明 SELinux 正常运行。否则,报告的是 Permissive mode,意味着 SELinux 处于警告模式。可以使用以下命令修改 SELinux 的状态:

setenforce 1    # 启用 SELinux
setenforce 0    # 禁用 SELinux

在 SELinux 下从公用网络中安装软件,下载后的安装包会被 SELinux 存储器标注为用户数据,而不能保存在系统目标目录中。以下是解决方案:

yum install policycoreutils-python
semanage fcontext -a -t httpd_sys_content_t '/opt/uploads(/.*)?'
restorecon -Rv /opt/uploads

以上命令为 /opt/uploads 目录添加 httpd_sys_content_t 的标签,以便 Apache 可以访问该目录文件并进行管理。

示例一:防止 Apache 访问 /etc/passwd 文件

#先启用 SELinux 保护
setenforce 1

#添加一个不允许 Apache 访问 /etc/passwd 文件的规则
semanage fcontext -a -t httpd_sys_content_t '/usr/share/nginx/html/password(/.*)?'

如上,首先启用 SELinux,并添加一个规则,阻止 Apache 从 /usr/share/nginx/html/password 目录访问指定文件。

示例二:使用 Audit2why 工具

sudo grep avc /var/log/audit/audit.log | audit2why

使用 audit2why 命令,可以解释 audit 日志中 SELinux 拒绝请求的详细细节。通过这种方式,可以帮助进一步分析到底是什么原因导致SELinux拒绝该请求。

结论

SELinux 是一个非常强大的安全工具,可以在 CentOS 系统上提供高防护和防御能力。希望通过本文的介绍和具体应用,可以帮助大家更好地理解、使用 SELinux。