我是基于 deepseek v3 的 AI 助手
本文详细介绍了如何在基于 Ubuntu 22 和宝塔面板的环境下,为 Nginx 站点安装和配置 ModSecurity,一个开源的 Web 应用程序防火墙(WAF)。文章从准备工作开始,指导读者安装必要的前置包,并逐步编译和安装 ModSecurity 及其依赖项。接着,文章介绍了如何将 ModSecurity 集成到 Nginx 中,并配置 OWASP ModSecurity 规则集以增强站点的安全性。 文章还提供了详细的步骤来验证安装是否成功,并确保 ModSecurity 能够有效地保护站点免受常见的 Web 攻击。通过本文,读者可以学习到如何在自己的服务器上部署一个强大的 WAF,从而提高网站的安全性。 如果你对提升网站安全性感兴趣,或者正在寻找一种有效的方式来保护你的 Nginx 站点,那么这篇文章将为你提供宝贵的指导和参考。继续阅读,了解如何一步步实现这一目标。
# 使用 ModSecurity 保护 Nginx 站点
ModSecurity 是一个开源的跨平台 WAF (WEB 应用程序防火墙)
本次给 Nginx 安装 ModSecurity WAF 并使用 OWASP ModSecurity 规则集,基于 Ubuntu 22 (jammy) 和宝塔面板
命令的默认执行位置都为 ~(root目录) ,且均使用 root 用户执行
在执行下列步骤前,请编译安装 nginx 1.23 或更高版本
# 准备工作
执行下列指令安装前置包:
apt install g++ flex bison curl apache2-dev doxygen libyajl-dev ssdeep liblua5.2-dev libgeoip-dev libtool dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev libxml2-dev git liblmdb-dev libpkgconf3 lmdb-doc pkgconf zlib1g-dev libssl-dev libfuzzy-dev -y |
# 编译 ssdeep
此步是因为博主在编译 ModSecurity 时无法识别 apt 安装的 ssdeep,可以先跳过此步,后续配置时出现问题再执行
执行下列指令即可:
wget https://github.com/ssdeep-project/ssdeep/releases/download/release-2.14.1/ssdeep-2.14.1.tar.gz | |
tar zxf ssdeep-2.14.1.tar.gz | |
cd ssdeep-2.14.1 | |
./configure | |
make | |
make install |
# 编译 ModSecurity
wget https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.8/modsecurity-v3.0.8.tar.gz | |
tar xzf modsecurity-v3.0.8.tar.gz | |
cd modsecurity-v3.0.8 | |
./build.sh |
出现 fatal: not a git repository (or any of the parent directories): .git 这条信息是可以忽略的
随后:
./configure |
等到命令执行完成后,请确保 --- 后面的内容冒号后均为 enable 、 disable 和 found
如果出现 ssdeep: not found 请参考前面的步骤执行编译安装 ssdeep
其他 not found 请使用 apt 安装对应包 (一般不会出现)
然后:
make | |
make install |
即可
# 安装 Nginx ModSecurity 支持模块
cd /www/server | |
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git |
编辑 /www/server/panel/install/nginx.sh 文件,在 ./configure 这一行的末端添加:
--add-module=/www/server/ModSecurity-nginx |
随后:
sh /www/server/panel/install/nginx.sh install 1.23 |
# 使用 OWASP 规则集
# 下载并配置规则集
mkdir /www/server/nginx/conf/modsecurity | |
cd ModSecurity | |
cp modsecurity.conf-recommended /www/server/nginx/conf/modsecurity/modsecurity.conf | |
cp unicode.mapping /www/server/nginx/conf/modsecurity |
下载规则:
wget http://www.modsecurity.cn/download/corerule/owasp-modsecurity-crs-3.3-dev.zip | |
unzip owasp-modsecurity-crs-3.3-dev.zip | |
cd owasp-modsecurity-crs-3.3-dev | |
cp crs-setup.conf.example /www/server/nginx/conf/modsecurity/crs-setup.conf | |
cp -r rules/ /www/server/nginx/conf/modsecurity | |
cd /www/server/nginx/conf/modsecurity/rules/ | |
cp REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example.back | |
cp RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example.back | |
cp RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example.back RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf | |
cp REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example.back REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf |
# 修改配置
修改 nginx 配置,在 http 层添加如下配置:
modsecurity on; | |
modsecurity_rules_file /www/server/nginx/conf/modsecurity/modsecurity.conf; |
编辑 modsecurity.conf , 将 SecRuleEngine DetectionOnly 修改为 SecRuleEngine On ,并在后面添加如下内容:
Include /www/server/nginx/conf/modsecurity/crs-setup.conf | |
Include /www/server/nginx/conf/modsecurity/rules/*.conf |
# 验证安装
打开如下地址:
<url>/?param=*><script>alert(1)</script> |
请将 <url> 替换为你的测试地址 (不需要带括号)
如果出现 403 则安装成功
