关于安装 ModSecurity 并将其应用于 Apache 的备忘录(Ubuntu 24.04 LTS)

您好,
我是来自 EOL
系统解决方案部门的 Kawa。

不久前,在六月份,我参加了微型加固项目加固项目,这是一个安全加固团队竞赛

这次演习在淡路岛举行,虽然很艰苦,但天气很好,我们可以在大自然中工作,被大海和群山环绕,所以我们度过了一段非常充实的时光。

(日落很美)

这项练习每组持续45分钟(共6组),参与者需要保护一个电子商务网站免受攻击。如果网站宕机,系统还会计算服务水平协议(SLA)得分,最终各队将根据销售额和得分进行排名。

总会有各种各样的攻击,但这次我们的团队尤其受到了SQL 注入的

▼更多详情请参阅我公司Ikki的文章▼ 

【微加固 v2】一个简单的安全事件经验

在思考如何防止这种情况发生时,我决定尝试使用 ModSecurity,结果非常成功,帮助我获得了高分。

这次,我将留下一份关于如何安装 ModSecurity 的备忘录,并介绍相关的 CRS 规则

ModSecurity到底是什么?

(如果您已经了解,可以跳过这部分!)
ModSecurity 是OWASP 拥有的开源 WAF(Web 应用程序防火墙)引擎,可保护使用各种 CMS 提供的网站免受攻击。

它与名为 CRS 规则的规则集(类似于定义文件)配合使用,并兼容 WordPress 和 Drupal 等主流 CMS 以及 Apache、Nginx 和 IIS 等中间件。安装后,只需少量配置即可使用,因此可以轻松部署到独立环境中。

然而,针对误报进行调整有些困难,因此可能需要一些时间才能在生产环境中实施和运行。

此外,在云 WAF(例如 AWS WAF 或 WAFCharm)部署在 WAF 前面的环境中,覆盖范围会重叠,因此引入它几乎没有任何好处。

环境

Ubuntu 24.04 LTS Apache/2.4.58

安装和初始设置

sudo apt update sudo apt install libapache2-mod-security2 sudo a2enmod security2 # 启用模块

以下是安装后的基本设置。系统
会创建一个示例配置文件,请更改文件名并进行编辑。

cd /etc/modsecurity/ sudo mv modsecurity.conf-recommended modsecurity.conf sudo nano /etc/modsecurity/modsecurity.conf SecRuleEngine DetectionOnly # 默认值为仅检测,因此启用它 ↓ SecRuleEngine On SecAuditLogParts ABIJDEFHZ # D 表示“中间响应头”,但它似乎是一个保留字,尚未实现 ↓ SecAuditLogParts ABCEFHJKZ # 删除 I,将 D 更改为 C(请求体) sudo systemctl restart apache2

至此,初始设置完成。
接下来,下载CRS规则。

下载规则集(v4.3.0)

* 本文撰写期间,coreruleset v4.4.0 版本已发布,但操作步骤基本相同,与版本无关。最新版本请参考以下链接:
https://github.com/coreruleset/coreruleset/releases

从 GitHub 下载文件,解压缩,然后将其移动到 Apache 目录。

cd /tmp/ sudo wget -p /tmp/ https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.3.0.tar.gz tar xvf v4.3.0.tar.gz sudo mkdir /etc/apache2/modsecurity-crs/ sudo mv coreruleset-4.3.0/ /etc/apache2/modsecurity-crs/ cd /etc/apache2/modsecurity-crs/coreruleset-4.3.0/ sudo mv crs-setup.conf.example crs-setup.conf

包含以识别核心规则集。

/etc/apache2/mods-enabled/security2.conf … # 如果已安装,则包含 OWASP ModSecurity CRS 规则 #IncludeOptional /usr/share/modsecurity-crs/*.load IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-4.3.0/crs-setup.conf IncludeOptional /etc/apache2/modsecurity-crs/coreruleset-4.3.0/rules/*.conf … sudo apache2ctl -t # 语法检查可能会导致错误。 AH00526:/etc/apache2/modsecurity-crs/coreruleset-4.3.0/crs-setup.conf 文件第 818 行存在语法错误:ModSecurity:找到另一个具有相同 ID 的规则 /etc/apache2/modsecurity-crs/coreruleset-4.3.0/rules # → 错误发生在规则 REQUEST-922-MULTIPART-ATTACK.conf 中,因此请删除三个相关条目或重命名 922 以避免此问题。

关于后一个错误,它似乎与 ModSecurity 版本有关。
正如这个已关闭的问题(
https://github.com/coreruleset/coreruleset/issues/3129
,升级 ModSecurity 版本似乎可以解决该错误,但由于这似乎是一个非官方的仓库,因此本文不予讨论。

上线之前…….

如上所述,WAF、IPS 和终端安全产品可能会产生误报。

第一步是
在入侵检测系统(IDS)模式下运行(仅检测),并在实施前对于 ModSecurity,您需要检查 error.log 文件,找出检测到的内容,并考虑放宽任何已设置的排除规则或阈值。

概括

WAF(包括基于云的 WAF)很有用,但它们可能会影响实际环境,因此在投入生产之前需要进行调整。

虽然操作起来有点困难,但如果能够克服这个问题,即使在独立模式下运行也能加强安全性,因此如果再添加终端产品,就能形成多重防御,进一步提高鲁棒性。

完全的

如果您觉得这篇文章有用,请点击【点赞】!
9
加载中...
9票,平均分:1.00/19
3,171
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

川健

来自系统解决方案部门的
一只奇特的宝可梦