简介¶
在本系列的第一部分中,我们介绍了如何在应用了基础 RHEL8 DISA STIG 的情况下构建我们的 Web 服务器,并在第二部分中,我们学习了如何使用 OpenSCAP 工具测试 STIG 符合性。现在,我们将对系统做一些事情,构建一个简单的 Web 应用程序并应用 DISA Web 服务器 STIG:https://www.stigviewer.com/stig/web_server/
首先让我们比较一下我们将要做什么,RHEL 8 DISA STIG 面向非常具体的平台,因此在该上下文中,控制措施很容易理解、测试和应用。应用程序 STIG 必须可移植到多个平台,因此此处的内容是通用的,可在不同的 Linux 发行版(RHEL、Ubuntu、SuSE 等)上运行**。像 OpenSCAP 这样的工具将无法帮助我们审核/修复配置。我们必须手动执行此操作。这些 STIG 是
- Apache 2.4 V2R5 - 服务器,适用于 Web 服务器本身
- Apache 2.4 V2R5 - 站点,适用于 Web 应用程序/网站
对于我们的指南,我们将创建一个简单的 Web 服务器,它只做一件事:提供静态内容。我们可以使用我们在这里所做的更改来创建一个基本镜像,然后在以后构建更复杂的 Web 服务器时使用这个基本镜像。
Apache 2.4 V2R5 服务器快速入门¶
在开始之前,您需要参考第一部分并应用 DISA STIG 安全配置文件。请将此步骤视为步骤 0。
1.) 安装 apache
和 mod_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);其他时候,它是操作性的(您如何使用它)。一般来说,技术控制措施是可以通过代码更改的,而操作控制措施可能不是。
级别¶
- Cat I - (高) - 5 个控制措施
- Cat II - (中) - 41 个控制措施
- Cat III - (低) - 1 个控制措施
类型¶
- 技术 - 24 个控制措施
- 操作 - 23 个控制措施
我们不会在本文中讨论这些更改的“原因”;如果这是一个技术控制措施,我们将讨论需要做什么。如果我们无法更改任何内容,例如操作控制措施,则修复:字段将为空。好消息是,在许多情况下,这已经是 Rocky Linux 8 中的默认设置,因此您无需更改任何内容。
Apache 2.4 V2R5 - 服务器详细信息¶
(V-214248) Apache Web 服务器应用程序目录、库和配置文件必须只能由特权用户访问。
严重性:Cat I 高
类型:操作
修复:无,请检查以确保只有特权用户可以访问 Web 服务器文件
(V-214242) Apache Web 服务器必须提供安装选项,以排除安装文档、示例代码、示例应用程序和教程。
严重性:Cat I 高
类型:技术
修复
sed -i 's/^\([^#].*\)/# \1/g' /etc/httpd/conf.d/welcome.conf
(V-214253) Apache Web 服务器必须使用尽可能多的字符集生成会话 ID,以降低暴力破解的风险。
严重性:Cat I 高
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214273) Apache Web 服务器软件必须是供应商支持的版本。
严重性:Cat I 高
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214271) 用于运行 Apache Web 服务器的帐户不得定义有效的登录 shell 和密码。
严重性:Cat I 高
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214245) Apache Web 服务器必须禁用 Web 分布式创作 (WebDAV)。
严重程度: Cat II 中等
类型:技术
修复
sed -i 's/^\([^#].*\)/# \1/g' /etc/httpd/conf.d/welcome.conf
(V-214264) Apache Web 服务器必须配置为与组织的安全基础设施集成。
严重程度: Cat II 中等
类型:操作
修复: 无,将 Web 服务器日志转发到 SIEM。
(V-214243) Apache Web 服务器必须设置资源映射以禁用某些文件类型的服务。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214240) Apache Web 服务器必须只包含运行所需的服务和功能。
严重程度: Cat II 中等
类型:技术
修复
dnf remove httpd-manual
(V-214238) 扩展模块必须在生产 Apache Web 服务器上存在之前经过全面审查、测试和签名。
严重程度: Cat II 中等
类型:操作
修复: 无,禁用应用程序不需要的所有模块。
(V-214268) Apache Web 服务器和客户端之间交换的 cookie(如会话 cookie)必须设置 cookie 属性以禁止客户端脚本读取 cookie 数据。
严重程度: Cat II 中等
类型:技术
修复
dnf install mod_session
echo "SessionCookieName session path=/; HttpOnly; Secure;" >> /etc/httpd/conf.d/disa-apache-stig.conf
(V-214269) Apache Web 服务器必须删除所有导出密码,以保护传输信息的机密性和完整性。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 DISA STIG 安全配置文件默认修复。
(V-214260) Apache Web 服务器必须配置为立即断开或禁用对托管应用程序的远程访问。
严重程度: Cat II 中等
类型:操作
修复: 无,这是一个停止 Web 服务器的程序。
(V-214249) Apache Web 服务器必须将托管应用程序与托管的 Apache Web 服务器管理功能分开。
严重程度: Cat II 中等
类型:操作
修复: 无,这与 Web 应用程序有关,而不是服务器。
(V-214246) Apache Web 服务器必须配置为使用指定的 IP 地址和端口。
严重程度: Cat II 中等
类型:操作
修复: 无,Web 服务器应配置为只监听特定 IP/端口。
(V-214247) 访问目录树、shell 或其他操作系统功能和实用程序的 Apache Web 服务器帐户必须只是管理员帐户。
严重程度: Cat II 中等
类型:操作
修复: 无,Web 服务器提供的所有文件和目录都需要由管理员用户拥有,而不是 Web 服务器用户。
(V-214244) Apache Web 服务器必须允许删除对未使用的和易受攻击的脚本的映射。
严重程度: Cat II 中等
类型:操作
修复: 无,必须删除任何未使用的 cgi-bin 或其他 Script/ScriptAlias 映射。
(V-214263) Apache Web 服务器不得妨碍将指定日志记录内容写入审计日志服务器的能力。
严重程度: Cat II 中等
类型:操作
修复: 无,与 SIEM 管理员合作以允许将指定日志记录内容写入审计日志服务器的能力。
(V-214228) Apache Web 服务器必须限制允许的并发会话请求数量。
严重程度: Cat II 中等
类型:技术
修复
echo "MaxKeepAliveRequests 100" > /etc/httpd/conf.d/disa-apache-stig.conf
(V-214229) Apache Web 服务器必须执行服务器端会话管理。
严重程度: Cat II 中等
类型:技术
修复
sed -i "s/^#LoadModule usertrack_module/LoadModule usertrack_module/g" /etc/httpd/conf.modules.d/00-optional.conf
(V-214266) Apache Web 服务器必须禁止或限制使用不安全或不必要的端口、协议、模块和/或服务。
严重程度: Cat II 中等
类型:操作
修复: 无,确保网站强制执行使用 IANA 公共端口用于 HTTP 和 HTTPS。
(V-214241) Apache Web 服务器不得是代理服务器。
严重程度: Cat 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) 的日志记录,这些日志记录的最小粒度为一秒。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214256) 显示给客户端的警告和错误消息必须修改,以尽量减少 Apache Web 服务器、补丁、加载的模块和目录路径的身份。
严重程度: Cat II 中等
类型:操作
修复: 使用 "ErrorDocument" 指令为 4xx 或 5xx HTTP 状态代码启用自定义错误页面。
(V-214237) Apache Web 服务器的日志数据和记录必须备份到不同的系统或介质上。
严重程度: Cat II 中等
类型:操作
修复: 无,记录 Web 服务器备份程序。
(V-214236) Apache Web 服务器的日志信息必须受到保护,防止未经授权的修改或删除。
严重程度: Cat II 中等
类型:操作
修复: 无,记录 Web 服务器备份程序。
(V-214261) 托管系统上的非特权帐户必须仅通过不同的管理员帐户访问 Apache Web 服务器与安全相关的信息和功能。
严重程度: Cat II 中等
类型:操作
修复: 无,限制对 Web 管理工具的访问权限,仅限于系统管理员、Web 管理员或 Web 管理员指定人员。
(V-214235) Apache Web 服务器日志文件必须只能由特权用户访问。
严重程度: Cat II 中等
类型:操作
修复: 无,为了保护捕获在日志文件中的数据的完整性,确保只有审计组成员、管理员和分配给运行 Web 服务器软件的用户被授予读取日志文件的权限。
(V-214234) Apache Web 服务器必须使用配置为在发生处理故障时提醒信息系统安全官 (ISSO) 和系统管理员 (SA) 的日志记录机制。
严重程度: Cat II 中等
类型:操作
修复: 无,与 SIEM 管理员合作,在根据定义的连接计划没有收到来自 Apache 的审计数据时配置警报。
(V-214233) 位于负载均衡器或代理服务器后面的 Apache Web 服务器必须生成包含客户端 IP 信息作为源和目的地的日志记录,而不是每个事件的负载均衡器或代理 IP 信息。
严重程度: Cat II 中等
类型:操作
修复: 无,通过传递入站 Web 流量的代理服务器访问,并配置设置以透明地将 Web 流量传递到 Apache Web 服务器。
有关根据您的代理/负载均衡器设置的日志记录选项的更多信息,请参阅 https://httpd.apache.ac.cn/docs/2.4/mod/mod_remoteip.html。
(V-214231) Apache Web 服务器必须启用系统日志记录。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214232) Apache Web 服务器必须至少生成系统启动和关闭、系统访问和系统身份验证事件的日志记录。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214251) Apache Web 服务器和客户端之间交换的 cookie(如会话 cookie)必须具有安全设置,以禁止在源 Apache Web 服务器和托管应用程序之外访问 cookie。
严重程度: Cat II 中等
类型:技术
修复
echo "Session On" >> /etc/httpd/conf.d/disa-apache-stig.conf
(V-214250) Apache Web 服务器必须在托管应用程序用户注销或其他会话终止时使会话标识符失效。
严重程度: Cat II 中等
类型:技术
修复
echo "SessionMaxAge 600" >> /etc/httpd/conf.d/disa-apache-stig.conf
(V-214252) Apache Web 服务器必须生成足够长的会话 ID,以使其无法通过暴力破解猜测。
严重程度: Cat II 中等
类型:技术
修复
echo "SessionCryptoCipher aes256" >> /etc/httpd/conf.d/disa-apache-stig.conf
(V-214255) Apache Web 服务器必须进行调整以处理托管应用程序的操作要求。
严重程度: Cat II 中等
类型:技术
修复
echo "Timeout 10" >> /etc/httpd/conf.d/disa-apache-stig.conf
(V-214254) Apache Web 服务器必须构建为在系统初始化失败、关闭失败或中止失败时失败到已知的安全状态。
严重程度: Cat II 中等
类型:操作
修复: 无,准备 Apache 2.4 Web 服务器在需要回滚时进行灾难恢复方法的文档。
(V-214257) 用于诊断 Apache Web 服务器的调试和跟踪信息必须禁用。
严重程度: Cat II 中等
类型:技术
修复
echo "TraceEnable Off" >> /etc/httpd/conf.d/disa-apache-stig.conf
(V-214230) Apache Web 服务器必须使用密码术来保护远程会话的完整性。
严重程度: Cat II 中等
类型:技术
修复
sed -i "s/^#SSLProtocol.*/SSLProtocol -ALL +TLSv1.2/g" /etc/httpd/conf.d/ssl.conf
(V-214258) Apache Web 服务器必须为会话设置一个非活动超时。
严重程度: Cat II 中等
类型:技术
修复
echo "RequestReadTimeout 120" >> /etc/httpd/conf.d/disa-stig-apache.conf
(V-214270) Apache Web 服务器必须在权威来源(例如 IAVM、CTO、DTM 和 STIG)指示的配置时间段内安装与安全相关的软件更新。
严重程度: Cat II 中等
类型:操作
修复: 无,安装当前版本的 Web 服务器软件,并维护适当的服务包和补丁。
(V-214239) Apache Web 服务器不得执行托管应用程序的用户管理。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214274) Apache Web 服务器 htpasswd 文件(如果存在)必须反映适当的拥有权和权限。
严重程度: Cat II 中等
类型:操作
修复: 无,确保 SA 或 Web 管理员帐户拥有 "htpasswd" 文件。确保权限设置为 "550"。
(V-214259) Apache Web 服务器必须限制来自不安全区域的入站连接。
严重程度: Cat II 中等
类型:操作
修复: 无,配置 "http.conf" 文件以包含限制。
示例
Require not ip 192.168.205
Require not host phishers.example.com
(V-214267) Apache Web 服务器必须受到保护,防止非特权用户停止它。
严重程度: Cat II 中等
类型:技术
修复: 无,Rocky Linux 8 默认修复。
(V-214262) Apache Web 服务器必须使用配置为分配足够大的日志记录存储容量以满足 Apache Web 服务器的日志记录要求的日志记录机制。
严重程度: Cat II 中等
类型:操作
修复: 无,与 SIEM 管理员合作,确定 SIEM 是否配置为分配足够大的日志记录存储容量以满足 Apache Web 服务器的日志记录要求。
(V-214272) Apache Web 服务器必须根据基于 DoD 安全配置或实施指南的安全配置设置进行配置,包括 STIG、NSA 配置指南、CTO 和 DTM。
严重程度: Cat III 低
类型:操作
修复: 无
关于作者¶
Scott Shinn 是 Atomicorp 的 CTO,也是 Rocky Linux 安全团队的成员。自 1995 年以来,他一直参与白宫、国防部和情报界的联邦信息系统。其中包括创建 STIG 以及使用它们的必要性,对此我深感抱歉。
作者:Scott Shinn
贡献者:Steven Spencer、Ganna Zhyrnova