ModSecurity 是一个帮助保护网站免受攻击的免费工具。它与 Apache Web 服务器一起工作,检查传入的流量是否有有害。ModSecurity 可以阻止许多常见的攻击,如 SQL 注入、跨站点脚本和文件包含。它是可调整的,以适应您的网站的具体需要,并广泛用于网络服务器保护。
更新系统
更新系统,确保软件包最新
sudo apt update
sudo apt upgrade
安装 Apache 和 ModSecurity
首先,我们需要在我们的 Ubuntu 或 Debian 系统上安装 Apache web 服务器。
sudo apt install apache2
接下来,安装 ModSecurity 模块
sudo apt install libapache2-mod-security2
启用 ModSecurity
sudo a2enmod security2
配置 ModSecurity
ModSecurity 预先配置了一组基本规则,ModSecurity 主配置文件位于 /etc/ModSecurity/ModSecurity.conf。
您可以修改此文件以启用/禁用特定规则或修改其严重程度。例如:启用阻止 SQL 注入的规则。
#SecRuleEngine DetectionOnly
SecRuleEngine On
更改配置文件后,重新启动 Apache 服务器。
sudo systemctl restart apache2
启用最新规则
ModSecurity 规则集是一组规则的集合,用于确定 ModSecurity 如何对各种类型的攻击做出反应。启用最新的规则集以获得 ModSecurity 的最大保护是很重要的。
要启用最新的规则集,首先要删除默认规则集
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
然后,下载最新的规则集
sudo git clone https://github.com/coreruleset/coreruleset.git /etc/modsecurity.d/owasp-crs
最后,在主 ModSecurity 配置文件中包含规则集
sudo nano /etc/modsecurity/modsecurity.conf
在文件末尾添加以下行
IncludeOptional /etc/modsecurity.d/owasp-crs/crs-setup.conf
IncludeOptional /etc/modsecurity.d/owasp-crs/rules/*.conf
保存并关闭该文件,然后重新启动 Apache 以应用更改
sudo systemctl restart apache2
微调规则
虽然最新的规则集提供了良好的保护级别,但它并不完美。在某些情况下,可能需要对某些规则进行微调或完全禁用。例如,如果规则导致误报,则可能需要禁用它。
要微调 ModSecurity 规则,您需要修改主 ModSecurity 配置文件。
每个规则由唯一的 ID 号标识,您可以使用该 ID 号修改或禁用规则。以禁用 ID 为 123456 的规则为例,在配置文件中添加如下一行。
SecRuleRemoveById 123456
保存并关闭该文件,然后重新启动 Apache 以应用更改。
sudo systemctl restart apache2
测试验证
为了验证 ModSecurity 是否正常工作,在 web 服务器上创建一个测试 PHP 文件。
sudo nano /var/www/html/test.php
将以下 PHP 代码添加到文件中
<?php
$name = $_GET['name'];
echo "Hello, $name!";
?>
保存并关闭文件。
接下来,尝试使用包含 SQL 注入攻击的 URL 访问测试文件
http://your_server_ip/test.php?name=Robert’); DROP TABLE students;-!
如果 ModSecurity 工作正常,它应该阻止请求并返回一个 403 Forbidden 错误。
启用日志
ModSecurity 日志是监视服务器安全性的重要工具。通过定期查看日志,可以识别攻击企图和其他安全事件。
要启用 ModSecurity 日志记录,请将以下几行添加到主配置文件中。
SecAuditEngine On
SecAuditLog /var/log/modsec_audit.log
保存并关闭该文件,然后重新启动 Apache 以应用更改。
sudo systemctl restart apache2