LAMP环境配置 ModSecurity Web 应用防火墙模块
在当今的网络安全环境中,Web应用程序面临着各种威胁,包括SQL注入、跨站脚本攻击(XSS)和分布式拒绝服务(DDoS)攻击。为了保护Web应用程序免受这些威胁,可以使用Web应用程序防火墙(WAF)。ModSecurity是一个开源的WAF,它可以嵌入到Web服务器中,提供实时的请求监控、过滤和学习功能。
ModSecurity模块简介
ModSecurity是一个功能强大的Web应用程序防火墙,它使用一组预定义的安全规则来保护Web应用程序。它支持多种Web服务器,包括Apache和Nginx。ModSecurity的核心规则集(CRS)是由OWASP(开放式Web应用安全项目)提供的,这是一个是致力于Web 应用程序安全的国际非营利组织,它包含了数千条用于防御常见Web攻击的规则。
https://www.cloudflare-cn.com/learning/security/threats/owasp-top-10/
https://github.com/owasp-modsecurity/ModSecurity
在 RHEL 系列操作系统安装 ModSecurity
在 RHEL 操作系统中安装 ModSecurity 模块相对简单,以下是安装步骤
1、启用 EPEL 仓库
1 | dnf install epel-release |
2、安装 ModSecurity
安装 ModSecurity 及其核心规则集
1 | dnf install mod_security mod_security_crs |
3、启用 Apache 服务(如果在安装ModSecurity之前已经启动了Apache服务,请重启以应用更改)
1 | systemctl start httpd # 启动服务 |
4、检查模块
检查模块是否正确加载
1 | httpd -M | grep security |
测试 ModSecurity 配置
测试是比配置任何设置都重要的部分,可以通过手动添加一个简单的规则进行测试
1、创建或编辑一个规则文件,例如/etc/httpd/modsecurity.d/local_rules.conf
,并添加以下内容
1 | SecRuleEngine On |
一定要确保 Apache 配置中启用了 ModSecurity 模块,你一般可以在 /etc/httpd/conf.modules.d/10-mod_security.conf
找到启用模块的指令
2、保存你的配置文件并重启Apache服务以应用更改
1 | systemctl restart httpd |
3、在浏览器或使用 curl 命令行工具测试你的规则,例如
1 | curl -l https://www.wanghaoyu.com.cn/?args=test |
效果如下图所示,可以看到直接返回了 403,证明规则配置正确,已被触发
查看日志
1 | tail -f /var/log/httpd/modsec_audit.log |
如下图所示
如果测试失败,检查你的规则文件是否正确配置,并确保SecRuleEngine
设置为On
。此外,检查是否有其他规则可能与你的测试规则冲突
禁用 ModSecurity 或列入白名单
在某些情况下,你可能需要禁用特定虚拟主机的ModSecurity
需要在虚拟主机部分中添加以下内容
1 | <IfModule security2_module> |
扩展内容
将特定目录或URL的 ModSecurity 列入白名单
1 | <Directory "/var/www/html/wp-admin"> |
禁用特定的 ModSecurity 的规则 ID
这里简单说一下,例如规则 ID 666 触发误报,被拦截,用户可以在配置中利用规则 ID 禁用特定规则
1 | <LocationMatch "/wp-admin/update.php"> |
这篇文章只是一个基本快速部署使用指南,在使用之前一定要制定好相关的规则防止误报保持最佳功能,
Enjoy it ~