前言
SELinux(Security-Enhanced Linux)是一种安全模块,用于增强基于 Linux 的操作系统的安全性。 它通过强制访问控制(MAC)机制来限制进程和用户对系统资源的访问权限,从而防止未经授权的操作。
在 SELinux 中,“上下文”是指与安全有关的信息标签,这些标签被附加到系统中的所有对象上,包括文件、目录和进程等。SELinux 上下文由三部分组成:用户(user)、角色(role)和类型(type)。每个对象都有一个安全上下文(security context),定义了该对象的安全属性。
简单了解SELinux
SELinux的三种运行模式
Enforcing(强制模式)
在强制模式下,SELinux 完全启用并强制执行所有安全策略。任何违反策略的操作都会被阻止,并且会记录到审计日志中。这是 SELinux 最严格的运行模式,适用于需要高安全性的环境。
Permissive(宽容模式)
在宽容模式下,SELinux 启用但不强制执行策略。系统会继续运行,但会记录所有违反策略的行为。管理员可以查看这些日志来调整和优化策略。
Disabled(禁用模式)
在禁用模式下,SELinux 完全关闭,系统不会应用任何 SELinux 策略。这意味着所有的安全增强功能都被禁用了。
工具
sestatus:查看 SELinux 当前状态和模式。
semanage:管理 SELinux 策略和安全上下文。
audit2allow:生成允许特定操作的策略模块。
restorecon:恢复文件和目录的安全上下文。
配置文件
SELinux的配置文件主要位于/etc/selinux目录下,其中主配置文件是/etc/selinux/config。
安全上下文
在本次实验中会多次查看修改安全上下文
类型部分指定了数据类型,即进程可以访问的文件类型。例如,httpd_sys_content_t 是用于 HTTPD 服务的文件类型,而 public_content_t 是公共内容类型。策略中定义了何种进程类型可以访问何种文件类型。
示例
假设有一个文件 /var/www/html/index.html,其 SELinux 上下文可能是 system_u:object_r:httpd_sys_content_t:s0:c105(/.*)?。这表示:
用户:system_u
角色:object_r
类型:httpd_sys_content_t
级别:s0
类别:c105
简单了解httpd服务
httpd服务,全称为Apache HTTP Server,是一个广泛使用的开源Web服务器软件。
本次实验需要通过httpd服务搭建供访问测试用的web站点。
配置文件
主配置文件位于/etc/httpd/conf目录下,其中最重要的是httpd.conf文件。常见的配置选项包括ServerName、DocumentRoot、ServerAdmin、ErrorLog、CustomLog等。
一:修改SELinux的安全上下文
在Linux中为保护web服务器的安全,可以通过启用SELinux,使服务器可以正常安全的运行。禁用SELinux可以正常访问web页面,启用SELinux后不能访问。可以通过修改SELinux的安全上下文来保证httpd进程能访问存放网页文件的目录。
1、Linux下安装httpd服务
本次实验采用yum源进行安装,可以先检查下yum中是否又可用的httpd包
安装httpd
2、将SELinux设置为容许状态
setenforce 0
getenforce //查看状态
3、设置永久放行http服务
首先查看当前防火墙现有规则(目前是没有http服务的)
设置防火墙永久放行http服务
firewall-cmd --permanent --add-service=http
注意 firewall-cmd --permanent --add-service=http
命令中的 firewall-cmd中间没有空格
//重新加载防火墙
firewall-cmd --reload
再次查看http服务是否被添加到规则中
3、创建站点
//创建站点目录 /www 作为根目录
mkdir /www
//将字符串 "selinux test01" 写入到文件 /www/index.html 中。如果该文件不存在,则会创建这个文件;如果文件已经存在,则会被覆盖。引号中的内容可自行修改
echo "selinux test01" > /www/index.html
echo: 这是一个命令,用于在终端输出指定的字符串。
“selinux test01”: 这是要输出的字符串内容,包含在双引号内,以确保字符串中的空格被正确处理。
: