Linux上使用SELinux保护网络服务

前言

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”: 这是要输出的字符串内容,包含在双引号内,以确保字符串中的空格被正确处理。
:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值