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。