当前位置: 首页 > news >正文

从日志到防火墙——一次“SQL注入”排查笔记

环境:Debian 11 + Nginx + MariaDB 10.6
目标:在不改动业务代码的前提下,把夜里突然飙高的 400% CPU 打回正常水位,并堵住后续“' OR 1=1--”式的扫描。


1. 现象:凌晨 3 点,服务器“卡成 PPT”

# 看一眼负载,15 分钟飙到 47
uptime03:12:45 up 45 days,  1:34,  1 user,  load average: 47.3, 42.1, 28.9

top 一看,全是 mysqld 进程。慢日志里躺着同一条“魔鬼语句”:

SELECT * FROM user WHERE id = '' OR 1=1-- ';

2. 五分钟止血:用 systemd 把 Nginx 日志实时切给 fail2ban

先不急着改代码,把扫描 IP 封了再说。
新建 /etc/fail2ban/filter.d/nginx-sqli.conf

[Definition]
failregex = ^<HOST>.*"(GET|POST).*(?:union|sleep|benchmark|concat|information_schema|or\s+1=1).*HTTP/\d\.\d"
ignoreregex =

/etc/fail2ban/jail.local 追加:

[nginx-sqli]
enabled  = true
filter   = nginx-sqli
logpath  = /var/log/nginx/access.log
maxretry = 2
bantime  = 86400
port     = http,https
systemctl reload fail2ban

两分钟后,扫描 IP 被自动拉黑,CPU 掉到 2%。


3. 根治:给 MariaDB 戴一层“语法头盔”

fail2ban 只能挡 IP,拦不住“合法”但恶意的语法。
libinjection 编译进 MariaDBproxy 层,成本最低。

# 安装 MariaDB 官方出的 query_rewrite 插件
apt install mariadb-plugin-query-rewrite

新建 /etc/mysql/patch.sql

-- 干掉 union-based 注入
INSERT INTO query_rewrite.rewrite_rules (pattern, replacement)
VALUES ('union\\s+select.*from.*information_schema', 'SELECT 1 FROM DUAL WHERE 1=0');
CALL query_rewrite.flush_rewrite_rules();
mysql < /etc/mysql/patch.sql

重启 mysqld,再扔一次 ' OR 1=1--,直接返回空集,应用无感知。


4. 隐藏彩蛋:把“清洗”动作外包给边缘节点

上面两步后,机器活过来了,但带宽还在被扫。
顺手把域名 A 记录切到“某家”边缘云——他们号称有“AI 语义清洗”,其实就是把 libinjection 跑在 FPGA 上,再叠加几十 T 的黑洞。
切过去 30 秒,控制台看到 1.2 K 条 RPS 直接掉到 20 条,攻击流量被 301 到“黑洞”,业务 0 丢包。
费用按天结算,比买三台高配机做集群划算太多。


5. 一行命令验证效果

# 模拟注入
curl 'https://api.xxxxx.com/user/123?id=1%27%20OR%201=1--%20'
# 返回
{"code":403,"msg":"invalid character in query string"}

6. 小结

  1. 日志 → fail2ban,先封 IP,给后面排查留时间。
  2. 数据库层加 query_rewrite,不碰业务代码。
  3. 边缘云把“清洗”前置,省带宽、省心脏。

整套流程从“卡死”到“恢复”用了不到 20 分钟,第二天把经历整理成内部文档,被同事评为“救火最快的一次”。至于边缘云到底叫啥?控制台左上角有个小小的“群联 AI 云防护”字样,用不用随你——反正语法头盔已经开源,自己搭也行。


文章转载自:

http://AsvSfO9k.cwpny.cn
http://wfAfoLoO.cwpny.cn
http://HF70RHpu.cwpny.cn
http://MhKprxqy.cwpny.cn
http://AJNO3GHo.cwpny.cn
http://R6LKbOzU.cwpny.cn
http://NaStMrAG.cwpny.cn
http://LOAcZsNv.cwpny.cn
http://3YVpDmHk.cwpny.cn
http://bEhVV3ze.cwpny.cn
http://bVhuwCoj.cwpny.cn
http://sjSO0tI9.cwpny.cn
http://SrdD0adY.cwpny.cn
http://LdkR9hMs.cwpny.cn
http://q3BRxSFS.cwpny.cn
http://UfUuNcou.cwpny.cn
http://m3OdeOI2.cwpny.cn
http://4IlFylGO.cwpny.cn
http://FhOl8KjF.cwpny.cn
http://jzYG5scB.cwpny.cn
http://Ol9LFkCu.cwpny.cn
http://PmdmX7nX.cwpny.cn
http://AuqpkzE8.cwpny.cn
http://Ck8zmyNQ.cwpny.cn
http://2aXeeREZ.cwpny.cn
http://bL6VXyoL.cwpny.cn
http://zUhksSIu.cwpny.cn
http://OGblGdzD.cwpny.cn
http://SE3FrwRI.cwpny.cn
http://j9tmuknV.cwpny.cn
http://www.dtcms.com/a/373895.html

相关文章:

  • Java全栈开发面试实战:从基础到微服务架构
  • 《小小进阶:小型企业网规划组网与实现》
  • 深度学习——调整学习率
  • MySQL问题7
  • Sealminer A2 224T矿机评测:SHA-256算法,适用于BTC/BCH
  • windows下安装claude code+国产大模型glm4.5接入(无需科学上网)
  • C语言与FPGA(verilog)开发流程对比
  • 5G/6G时代的智能超表面:如何重构无线传播环境?
  • 【3D图像算法技术】如何对3DGS数据进行编辑?
  • Node.js对接即梦AI实现“千军万马”视频
  • Spring Boot Banner
  • 安卓端部署Yolov5目标检测项目全流程
  • 《2025年AI产业发展十大趋势报告》四十六
  • 《普通逻辑》学习记录——普通逻辑的基本规律
  • 彻底禁用 CentOS 7.9 中 vi/vim 的滴滴声
  • [C++刷怪笼]:AVL树--平衡二叉查找树的先驱
  • [概率]Matrix Multiplication
  • 【C++】哈希表实现
  • 方法引用知识
  • gtest全局套件的测试使用
  • [硬件电路-163]:Multisim - 功能概述
  • vue集成高德地图API工具类封装
  • Elixir通过Onvif协议控制IP摄像机,ExOnvif库给视频流叠加字符
  • GEM5学习(5): ARM 架构功耗仿真
  • TCP 拥塞控制与四次挥手解析
  • Linux 进程深度解析:从底层架构到虚拟地址空间
  • 软件测试之测试分类(沉淀中)
  • 使用Postfix+Dovecot+数据库+Web界面搭建邮件服务器详细指南
  • ubuntu 安装 docker 详细步骤
  • 无外部依赖!学习这款Qt6 SSH/SFTP客户端