跳至内容

简介

在本系列的第一部分中,我们介绍了如何使用已应用的 RHEL8 DISA STIG 基础来构建我们的 Web 服务器,在第二部分中,我们学习了如何使用 OpenSCAP 工具测试 STIG 合规性。现在,我们将对系统进行一些操作,构建一个简单的 Web 应用程序并应用 DISA Web 服务器 STIG:https://stigviewer.com/stigs/apache_server_2.4_unix_server

首先,让我们比较一下我们将要做的内容,RHEL 8 DISA STIG 针对的是一个非常特定的平台,因此在那个上下文中,这些控件都易于理解、测试和应用。应用程序 STIGs 必须是跨平台的,因此这里的内容是通用的,可以适用于不同的 Linux 发行版(RHEL、Ubuntu、SuSE 等)**。像 OpenSCAP 这样的工具将无助于我们审计/修复配置。我们将不得不手动完成。这些 STIGs 是

  • Apache 2.4 V2R5 - 服务器,适用于 Web 服务器本身
  • Apache 2.4 V2R5 - 站点,适用于 Web 应用程序/网站

在我们的指南中,我们将创建一个简单的 Web 服务器,它除了提供静态内容之外不做任何事情。我们可以使用在这里所做的更改来创建一个基础映像,然后在使用我们以后构建的更复杂的 Web 服务器时使用这个基础映像。

Apache 2.4 V2R5 服务器快速入门

在开始之前,您需要回顾第一部分并应用 DISA STIG 安全配置文件。将此步骤视为第 0 步。

1.) 安装 apachemod_ssl

dnf install httpd mod_ssl

2.) 配置更改

sed -i 's/^\([^#].*\)**/# \1/g' /etc/httpd/conf.d/welcome.conf
dnf -y remove httpd-manual
dnf -y install mod_session

echo "MaxKeepAliveRequests 100" > /etc/httpd/conf.d/disa-apache-stig.conf
echo "SessionCookieName session path=/; HttpOnly; Secure;" >>  /etc/httpd/conf.d/disa-apache-stig.conf
echo "Session On" >>  /etc/httpd/conf.d/disa-apache-stig.conf
echo "SessionMaxAge 600" >>  /etc/httpd/conf.d/disa-apache-stig.conf
echo "SessionCryptoCipher aes256" >>  /etc/httpd/conf.d/disa-apache-stig.conf
echo "Timeout 10" >>  /etc/httpd/conf.d/disa-apache-stig.conf
echo "TraceEnable Off" >>  /etc/httpd/conf.d/disa-apache-stig.conf
echo "RequestReadTimeout 120" >> /etc/httpd/conf.d/disa-apache-stig.conf

sed -i "s/^#LoadModule usertrack_module/LoadModule usertrack_module/g" /etc/httpd/conf.modules.d/00-optional.conf
sed -i "s/proxy_module/#proxy_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_ajp_module/#proxy_ajp_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_balancer_module/#proxy_balancer_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_ftp_module/#proxy_ftp_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_http_module/#proxy_http_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_connect_module/#proxy_connect_module/g" /etc/httpd/conf.modules.d/00-proxy.conf

3.) 更新防火墙策略并启动 httpd

firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-service=https
firewall-cmd --reload
systemctl enable httpd
systemctl start httpd

详细控制概述

如果您已经看到这里,您可能对 STIG 要求我们做什么感兴趣。了解控件的重要性以及它如何应用于应用程序会很有帮助。有时,控件是技术性的(将 X 设置更改为 Y);有时,它是操作性的(您如何使用它)。总的来说,技术控件是您可以通过代码更改的内容,而操作控件可能不是。

级别

  • I 类 - (高) - 5 个控件
  • II 类 - (中) - 41 个控件
  • III 类 - (低) - 1 个控件

类型

  • 技术 - 24 个控件
  • 操作 - 23 个控件

我们将在本文中不介绍这些更改的“原因”;如果是一个技术控件,我们将讨论需要做什么。如果没有任何我们可以更改的内容,例如在操作控件的情况下,**修复:** 字段将为无。在很多情况下,好消息是 Rocky Linux 8 已经默认配置好了,所以您根本不需要更改任何内容。

Apache 2.4 V2R5 - 服务器详细信息

(V-214248) Apache Web 服务器应用程序目录、库和配置文件必须只能由特权用户访问。

严重性: I 类高
类型: 操作
修复: 无,请检查以确保只有特权用户可以访问 Web 服务器文件

(V-214242) Apache Web 服务器必须提供安装选项,以排除文档、示例代码、示例应用程序和教程的安装。

严重性: I 类高
类型: 技术
修复

sed -i 's/^\([^#].*\)/# \1/g' /etc/httpd/conf.d/welcome.conf

(V-214253) Apache Web 服务器必须使用尽可能多的字符集来生成会话 ID,以降低暴力破解的风险。

严重性: I 类高
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214273) Apache Web 服务器软件必须是供应商支持的版本。

严重性: I 类高
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214271) 用于运行 Apache Web 服务器的帐户不得定义有效的登录 shell 和密码。

严重性: I 类高
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214245) Apache Web 服务器必须禁用 Web 分布式创作(WebDAV)。

严重性: II 类中
类型: 技术
修复

sed -i 's/^\([^#].*\)/# \1/g' /etc/httpd/conf.d/welcome.conf

(V-214264) Apache Web 服务器必须配置为与组织的安全性基础设施集成。

严重性: II 类中
类型: 操作
修复: 无,将 Web 服务器日志转发到 SIEM

(V-214243) Apache Web 服务器必须设置资源映射以禁用某些文件类型的提供。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214240) Apache Web 服务器只能包含运行所必需的服务和功能。

严重性: II 类中
类型: 技术
修复

dnf remove httpd-manual

(V-214238) 扩展模块在生产 Apache Web 服务器上存在之前,必须经过全面审查、测试和签名。

严重性: II 类中
类型: 操作
修复: 无,禁用应用程序不需要的所有模块

(V-214268) 在 Apache Web 服务器和客户端之间交换的 Cookie(例如会话 Cookie)必须设置 Cookie 属性,以禁止客户端脚本读取 Cookie 数据。

严重性: II 类中
类型: 技术
修复

dnf install mod_session
echo "SessionCookieName session path=/; HttpOnly; Secure;" >>  /etc/httpd/conf.d/disa-apache-stig.conf

(V-214269) Apache Web 服务器必须移除所有导出密码,以保护传输信息的机密性和完整性。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 DISA STIG 安全配置文件默认已修复

(V-214260) Apache Web 服务器必须配置为立即断开或禁用对托管应用程序的远程访问。

严重性: II 类中
类型: 操作
修复: 无,这是一个停止 Web 服务器的过程

(V-214249) Apache Web 服务器必须将托管应用程序与托管的 Apache Web 服务器管理功能分开。

严重性: II 类中
类型: 操作
修复: 无,这与 Web 应用程序有关,而不是与服务器有关

(V-214246) Apache Web 服务器必须配置为使用指定的 IP 地址和端口。

严重性: II 类中
类型: 操作
修复: 无,Web 服务器应配置为仅侦听特定 IP/端口

(V-214247) 访问目录树、shell 或其他操作系统功能和实用程序的 Apache Web 服务器帐户必须只能是管理员帐户。

严重性: II 类中
类型: 操作
修复: 无,Web 服务器提供的所有文件和目录都需要由管理员用户拥有,而不是由 Web 服务器用户拥有。

(V-214244) Apache Web 服务器必须允许移除对未使用和易受攻击脚本的映射。

严重性: II 类中
类型: 操作
修复: 无,任何未使用的 cgi-bin 或其他 Script/ScriptAlias 映射都必须被移除

(V-214263) Apache Web 服务器不得阻碍将指定的日志记录内容写入审计日志服务器的能力。

严重性: II 类中
类型: 操作
修复: 无,与 SIEM 管理员合作,允许将指定的日志记录内容写入审计日志服务器。

(V-214228) Apache Web 服务器必须限制允许的同时会话请求数量。

严重性: II 类中
类型: 技术
修复

echo "MaxKeepAliveRequests 100" > /etc/httpd/conf.d/disa-apache-stig.conf

(V-214229) Apache Web 服务器必须执行服务器端会话管理。

严重性: II 类中
类型: 技术
修复

sed -i "s/^#LoadModule usertrack_module/LoadModule usertrack_module/g" /etc/httpd/conf.modules.d/00-optional.conf

(V-214266) Apache Web 服务器必须禁止或限制使用不安全或不必要的端口、协议、模块和/或服务。

严重性: II 类中
类型: 操作
修复: 无,确保网站强制使用 IANA 知名端口进行 HTTP 和 HTTPS。

(V-214241) Apache Web 服务器不得作为代理服务器。

严重性: II 类中
类型: 技术
修复

sed -i "s/proxy_module/#proxy_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_ajp_module/#proxy_ajp_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_balancer_module/#proxy_balancer_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_ftp_module/#proxy_ftp_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_http_module/#proxy_http_module/g" /etc/httpd/conf.modules.d/00-proxy.conf
sed -i "s/proxy_connect_module/#proxy_connect_module/g" /etc/httpd/conf.modules.d/00-proxy.conf

(V-214265) Apache Web 服务器必须生成日志记录,这些日志记录可以映射到协调世界时 (UTC)** 或格林威治标准时间 (GMT),并以至少一秒的粒度进行时间戳。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214256) 显示给客户端的警告和错误消息必须经过修改,以最大限度地减少 Apache Web 服务器、补丁、加载的模块和目录路径的身份。

严重性: II 类中
类型: 操作
修复: 使用“ErrorDocument”指令为 4xx 或 5xx HTTP 状态码启用自定义错误页面。

(V-214237) Apache Web 服务器的日志数据和记录必须备份到不同的系统或介质上。

严重性: II 类中
类型: 操作
修复: 无,记录 Web 服务器备份程序

(V-214236) Apache Web 服务器的日志信息必须受到保护,防止未经授权的修改或删除。

严重性: II 类中
类型: 操作
修复: 无,记录 Web 服务器备份程序

(V-214261) 托管系统上的非特权帐户只能通过一个独立的管理帐户访问 Apache Web 服务器安全相关信息和功能。

严重性: II 类中
类型: 操作
修复: 无,将 Web 管理工具的访问权限限制为仅限系统管理员、Web 管理员或 Web 管理员的指定人员。

(V-214235) Apache Web 服务器日志文件必须只能由特权用户访问。

严重性: II 类中
类型: 操作
修复: 无,为保护日志文件中捕获的数据的完整性,请确保只有审计员组、管理员以及分配给运行 Web 服务器软件的用户才有权读取日志文件。

(V-214234) Apache Web 服务器必须使用一个日志机制,该机制配置为在发生处理故障时向信息系统安全官 (ISSO) 和系统管理员 (SA) 发出警报。

严重性: II 类中
类型: 操作
修复: 无,与 SIEM 管理员合作,在没有收到来自 Apache 的审计数据时(基于定义的连接计划)配置警报。

(V-214233) 位于负载均衡器或代理服务器后面的 Apache Web 服务器必须生成包含客户端 IP 信息作为源和目标(而不是负载均衡器或代理 IP 信息)的日志记录,每次事件都如此。

严重性: II 类中
类型: 操作
修复: 无,通过传入 Web 流量的代理服务器访问,并配置设置以透明地将 Web 流量传递给 Apache Web 服务器。

有关基于代理/负载均衡设置的日志记录选项的更多信息,请参阅 https://httpd.apache.ac.cn/docs/2.4/mod/mod_remoteip.html

(V-214231) Apache Web 服务器必须启用系统日志记录。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214232) Apache Web 服务器必须至少生成系统启动和关闭、系统访问以及系统身份验证事件的日志记录。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214251) 在 Apache Web 服务器和客户端之间交换的 Cookie(例如会话 Cookie)必须具有安全设置,以禁止 Cookie 访问超出原始 Apache Web 服务器和托管应用程序的范围。

严重性: II 类中
类型: 技术
修复

echo "Session On" >>  /etc/httpd/conf.d/disa-apache-stig.conf

(V-214250) Apache Web 服务器必须在托管应用程序用户注销或其他会话终止时使会话标识符失效。

严重性: II 类中
类型: 技术
修复

echo "SessionMaxAge 600" >>  /etc/httpd/conf.d/disa-apache-stig.conf

(V-214252) Apache Web 服务器必须生成一个足够长的会话 ID,以使其无法通过暴力破解来猜测。

严重性: II 类中
类型: 技术
修复

echo "SessionCryptoCipher aes256" >>  /etc/httpd/conf.d/disa-apache-stig.conf

(V-214255) Apache Web 服务器必须针对托管应用程序的运行要求进行调整。

严重性: II 类中
类型: 技术
修复

echo "Timeout 10" >>  /etc/httpd/conf.d/disa-apache-stig.conf

(V-214254) 如果系统初始化失败、关闭失败或中止失败,Apache Web 服务器必须构建成故障转移到已知安全状态。

严重性: II 类中
类型: 操作
修复: 无,准备好 Apache 2.4 Web 服务器在需要回滚时进行灾难恢复方法的文档。

(V-214257) 用于诊断 Apache Web 服务器的调试和跟踪信息必须禁用。

严重性: II 类中
类型: 技术
修复

echo "TraceEnable Off" >>  /etc/httpd/conf.d/disa-apache-stig.conf

(V-214230) Apache Web 服务器必须使用加密来保护远程会话的完整性。

严重性: II 类中
类型: 技术
修复

sed -i "s/^#SSLProtocol.*/SSLProtocol -ALL +TLSv1.2/g" /etc/httpd/conf.d/ssl.conf

(V-214258) Apache Web 服务器必须为会话设置不活动超时。

严重性: II 类中
类型: 技术
修复

echo "RequestReadTimeout 120" >> /etc/httpd/conf.d/disa-stig-apache.conf

(V-214270) Apache Web 服务器必须在权威来源(例如 IAVM、CTO、DTM 和 STIG)指示的配置时间范围内安装安全相关软件更新。

严重性: II 类中
类型: 操作
修复: 无,安装 Web 服务器软件的当前版本并维护适当的服务包和补丁。

(V-214239) Apache Web 服务器不得为托管应用程序执行用户管理。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214274) Apache Web 服务器 htpasswd 文件(如果存在)必须反映正确的归属和权限。

严重性: II 类中
类型: 操作
修复: 无,确保 SA 或 Web 管理员帐户拥有“htpasswd”文件。确保权限设置为“550”。

(V-214259) Apache Web 服务器必须限制来自不安全区域的入站连接。

严重性: II 类中
类型: 操作
修复: 无,配置“http.conf”文件以包含限制。

示例

Require not ip 192.168.205
Require not host phishers.example.com

(V-214267) Apache Web 服务器必须受到保护,防止被非特权用户停止。

严重性: II 类中
类型: 技术
修复: 无,Rocky Linux 8 默认已修复

(V-214262) Apache Web 服务器必须使用一个日志机制,该机制配置为分配足够大的日志记录容量,以满足 Apache Web 服务器的日志记录需求。

严重性: II 类中
类型: 操作
修复: 无,与 SIEM 管理员合作,确定 SIEM 是否配置为分配足够的日志记录容量以满足 Apache Web 服务器的日志记录需求。

(V-214272) Apache Web 服务器必须根据 DoD 安全配置或实施指南(包括 STIG、NSA 配置指南、CTO 和 DTM)的安全配置设置进行配置。

严重性: III 类低
类型: 操作
修复:

关于作者

Scott Shinn 是 Atomicorp 的首席技术官,也是 Rocky Linux 安全团队的成员。自 1995 年以来,他一直参与白宫、国防部和情报界的联邦信息系统工作。其中一部分工作是创建 STIG 并强制要求使用它们,对此我深表歉意。

作者:Scott Shinn

贡献者:Steven Spencer, Ganna Zhyrnova