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

大家好,
我的大脑已经到了生命周期结束(EOL)阶段
我是系统解决方案部门的 Kawa,

这件事发生在不久前,但在六月份, 微型加固项目(Micro Hardening) ,这是一个专注于安全加固的团队竞赛 加固项目(Hardening Project) 我参加了

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

(日落很美)

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

我们经常面临各种各样的攻击,但这一次我们的团队 SQL 注入的 尤其受到了

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

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

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

这次,如何安装 ModSecurity 以及如何实施其相关的 CRS 规则我将留下一份备忘录,说明

ModSecurity到底是什么?

(已经了解的人可以跳过这部分!)
ModSecurity 是OWASP 拥有的开源 Web 应用程序防火墙 (WAF) 引擎,可保护使用各种 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)

* 本文撰写期间,4.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 版本有关。
正如这个已关闭的 issue(
https://github.com/coreruleset/coreruleset/issues/3129
,升级 ModSecurity 版本应该可以解决此问题,但由于它来自非官方仓库,因此本文不作赘述。

上线之前…….

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

在部署之前并收集日志第一步是
对于 ModSecurity,检查 error.log 文件以了解检测到的内容,并考虑放宽任何已设置的排除规则或阈值。

概括

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

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

完全的

如果您觉得这篇文章对您有帮助,请点个“赞”!
10
加载中...
10票,平均分:1.00/110
3,542
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

川健

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