rocky10+lnmp2.3安装naxsi防护
1. 装编译依赖(Rocky 10)
dnf -y install gcc gcc-c++ make pcre-devel pcre2-devel zlib-devel openssl-devel wget
2. 下载 Naxsi 1.7(含 libinjection 子模块,不用再拉 git submodule)
cd /usr/local/src wget "https://github.com/wargio/naxsi/releases/download/1.7/naxsi-1.7-src-with-deps.tar.gz" mkdir naxsi && tar -C naxsi -xzf naxsi-1.7-src-with-deps.tar.gz
3. 校验关键文件(必须有 config,否则 configure 不认)
ls /usr/local/src/naxsi/naxsi_src/config # 有输出 = 路径正确
4. 下载同版本 Nginx 1.30.0 源码(LNMP upgrade 脚本要用)
wget https://nginx.org/download/nginx-1.30.0.tar.gz tar xzf nginx-1.30.0.tar.gz
lnmp.conf 配置
编辑 LNMP 解压目录下的 lnmp.conf:
Nginx_Modules_Options='--add-module=/usr/local/src/naxsi/naxsi_src' cd /root/lnmp2.3 # 你的 LNMP 解压目录 ./upgrade.sh nginx
提示输入版本时,填写当前安装的nginx版本,我的系统是1.30.0(和当前运行版本完全一致,等于"重编译不升级")。
编译后验证
# 1. 看编译参数里有没有 naxsi /usr/local/nginx/sbin/nginx -V 2>&1 | grep naxsi # 出现 --add-module=/usr/local/src/naxsi/naxsi_src 即成功 # 2. 配置语法检查 /usr/local/nginx/sbin/nginx -t # 3. 平滑重载 lnmp nginx reload
三个必须记住的点
Naxsi 1.7版本不用跟着 Nginx 走, 通吃;要严丝合缝对齐的是 Nginx 源码版本 = 1.30.0。
src-with-deps 已内置 libinjection,configure 时看到 No package 'libinjection' found 是正常提示,忽略即可。
以后 LNMP 再升级 Nginx(比如升到 1.31.x),只要改 lnmp.conf 里的模块路径不变,upgrade.sh nginx 会按原参数重编,Naxsi 自动跟着编进去——前提是 /usr/local/src/naxsi/naxsi_src 目录别删。
站点 location / 里加(先 LearningMode 跑几天再看误报):
SecRulesEnabled; LearningMode; LibInjectionSql; LibInjectionXss; DeniedUrl "/RequestDenied"; CheckRule "$SQL >= 8" BLOCK; CheckRule "$XSS >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK;
观察日志:
grep NAXSI_FMT /usr/local/nginx/logs/error.log | tail -20
无误报后删掉 LearningMode; 切拦截模式。
LNMP + Naxsi 场景下的最小配置
要让 fail2ban 自动封 Naxsi 拦下的攻击 IP,需要手写一个 filter + 一个 jail。
1)创建 Naxsi filter
/etc/fail2ban/filter.d/naxsi.conf: [Definition] # 匹配 Naxsi 在 error.log 里的拦截记录 # 格式示例:2024/01/01 12:00:00 [error] 1234#0: *56 NAXSI_FMT: ip=1.2.3.4&server=xxx&uri=/&learning=0&total_processed=1&total_blocked=1&... failregex = NAXSI_FMT.*ip=<HOST> NAXSI_FMT.*&ip=<HOST>& \[error\].*NAXSI_FMT.*<HOST> ignoreregex =
2)创建 jail 配置
/etc/fail2ban/jail.d/naxsi.local: ini [naxsi] enabled = true filter = naxsi # LNMP 默认错误日志路径 logpath = /usr/local/nginx/logs/error.log # 5 分钟内触发 10 次 Naxsi 拦截就封 maxretry = 10 findtime = 300 bantime = 3600 # 可选:封禁后发送告警邮件 # action = %(action_mwl)s
3)如果要防 Nginx 暴力扫描(404 爬虫)
/etc/fail2ban/jail.d/nginx-botsearch.local: ini [nginx-botsearch] enabled = true filter = nginx-botsearch logpath = /usr/local/nginx/logs/access.log maxretry = 20 findtime = 300 bantime = 1800
4)启动并验证
# 装 fail2ban(Rocky 10) dnf -y install epel-release dnf -y install fail2ban # 启动 systemctl enable --now fail2ban # 确认 jail 已加载 fail2ban-client status # 应该看到 naxsi、nginx-botsearch、sshd # 看 naxsi jail 详情 fail2ban-client status naxsi
# 测试 filter 正则是否匹配日志
fail2ban-regex /usr/local/nginx/logs/error.log /etc/fail2ban/filter.d/naxsi.conf
相关文章
- rocky10+lnmp2.3安装naxsi防护
- suncae安装记录
- Ubuntu24 LNMP Nginx 启动失败 & PHP 页面 502 错误完整排查
- Ubuntu 24.04 LNMP+Redis自动安装脚本
- JAVA大整数传递给前端丢失精度问题解决指南
- JDK21实现高性能 Snowflake ID生成器
- Rocky Linux 10 tmux安装使用教程
- 新版 Ollama 中导入外部模型 GGUF 模型
- 当 Web 开发绕回 “一体化”,PHP 玩家的底气在哪?
- 重磅:LFM2.5-1.2B-Thinking发布 1GB内存即可实现端侧高效推理
- MyBatis-Plus升级踩坑记录:一个依赖缺失引发的“惨案”
- spring+netty实现一个最小可运行的im server
- windows修改ollama程序和模型保存位置
- UE5中使用蓝图实现对象池功能
- UE5开发2D/3D混合平台跳跃游戏优化操作体验
- UE5敌人直接放置场景ok,代码生成不执行AI
- UE5中开发HD-2D游戏的优化设置与2D角色导入技巧
- nginxSpringboot项目常见配置
- 在MacOS上部署ComfyUI的指南
- 解决UE5开发Topdown2D动作游戏的旋转问题