安装 ModSecurity 并将其应用于 Apache (Ubuntu 24.04 LTS) 的注意事项
您好,
我
是 EOL 系统解决方案部门的 Kawa。
前段时间,6月份,我参加了Micro Hardening 这是Hardening Project的小型版本,是一项安全强化的团队竞赛
训练是在淡路岛进行的,虽然很辛苦,但是天气很好,而且能够在依山傍海的自然环境中进行训练,所以我们度过了一段非常充实的时光。
(夕阳很美)
每组练习持续45分钟(共6组),在保护电商网站免受攻击的同时,即使宕机的SLA也被计算出来,团队争夺最终的销售额+分数。
总会有某种类型的攻击,但这次我的团队SQL 注入的困扰
▼ 更多信息请参考我司Ichiki的文章▼
当我在考虑如何预防时,我决定尝试使用ModSecurity,最终成功了,并且能够获得高分。
这次,如何安装ModSecurity的备忘录
首先,什么是ModSecurity?
(如果您已经知道,请跳过!)
ModSecurity 是拥有的 OSS WAF(Web 应用程序防火墙)引擎,可保护使用各种 CMS 提供的网站免受攻击。
它与称为 CRS 规则的规则集(如定义文件)结合使用,并与 WordPress 和 Drupal 等主要 CMS 以及 Apache、Nginx 和 IIS 等中间件兼容。安装后,您可以通过一些设置来使用它,因此可以轻松地将其引入到独立环境中。
不过,由于误报的调优有点困难,我认为在生产环境中引入和运行它还需要时间。
此外,在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-推荐 modsecurity.conf sudo nano /etc/modsecurity/modsecurity.conf SecRuleEngineDetectionOnly #默认仅检测,所以启用它 ↓ SecRuleEngine On SecAuditLogParts ABIJDEFHZ #D is "intermediate" "响应头”,不过好像是保留字,没有实现。 ↓ SecAuditLogParts ABCEFHJKZ # 删除I,将D改为C(请求体) sudo systemctl restart apache2
临时设置现已完成。
接下来,下载 CRS 规则。
下载规则集(v4.3.0)
*在撰写本文时,似乎 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-设置文件
包括识别核心规则集。
/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规则有错误,所以删除3个对应的地方或者重命名922来避免。
关于后一个错误,它的发生似乎取决于 ModSecurity 的版本。
正如此已关闭问题中所报告的,
https://github.com/coreruleset/coreruleset/issues/3129
,如果增加 ModSecurity 版本,似乎不会出现此问题,但由于它似乎是非官方存储库,所以文章中没有涉及。
在开始生产之前...
如上所述,IPS 和端点安全产品(包括 WAF)可能会产生误报。
我认为第一步是
在IDS模式下运行它(仅检测)并在安装前对于 ModSecurity,error.log,找出检测到的内容类型,并考虑设置排除规则和阈值的缓解措施。
概括
WAF(包括基于云的WAF)很方便,但在投入生产之前需要进行调整,因为它们可能会影响实际环境。
虽然操作起来有点困难,但如果能清楚这一点,即使作为独立系统运行也能增强安全性,所以如果添加端点产品,就会有多层防御,进一步增加稳健性。
完全的