109 lines
5.9 KiB
Markdown
109 lines
5.9 KiB
Markdown
# 网络拥塞与请求防护处理记录
|
||
|
||
2026-08-31,北京时间。服务器:47.106.181.28。
|
||
|
||
## 当前结果
|
||
|
||
17:42 的验证中,公网网站首页和宝塔登录页均已恢复访问:
|
||
|
||
| 检查 | 结果 |
|
||
| --- | --- |
|
||
| 公网网站首页,普通路径 | 200,约 0.66 秒 |
|
||
| 公网宝塔登录页,普通路径 | 200,约 0.70 秒,标题为“宝塔Linux面板” |
|
||
| 公网宝塔登录页,代理接口路径 | 200,约 0.58 秒,同样取得完整登录页 |
|
||
| 服务器本机网站首页 | 200,约 0.02 秒 |
|
||
| 服务器本机文章页 | 200,约 0.03 秒 |
|
||
| 服务器本机另一站点首页 | 200,约 0.03 秒 |
|
||
| 服务器本机宝塔 HTTPS | 200,约 0.08 秒 |
|
||
| 已确认的刷请求特征 | Nginx 直接关闭连接,无 HTTP 响应;日志记 444 |
|
||
|
||
这些是当前采样结果,不能视为持续攻击下的长期可用性保证。面板的自签名证书没有更换,浏览器证书信任提示仍可能出现;测试没有通过 HTTPS 提交面板账号密码。
|
||
|
||
## 发现的压力
|
||
|
||
17:35,原首页频率限制已撤回且 Nginx 配置中相关规则计数为 0;此时公网仍有超时。MySQL 活跃查询为 1,CPU 空闲约 62%,但已建立 TCP 连接约 14,338 条。
|
||
|
||
同一时段最近 1,000 次站点访问中有 999 次符合已确认的异常特征:GET/HEAD 首页、带随机 `r` 参数、没有 User-Agent。随后 4,000 条样本跨约 3 秒,3,996 条为该类请求,来自 113 个来源。证据支持持续异常请求和连接压力参与了本轮网络拥塞,不能把所有故障直接归因于数据库或首页频率限制。
|
||
|
||
系统运行时间显示服务器约在 16:34 重启过,重启原因未确认。本轮未执行服务器、MySQL、PHP 或宝塔重启。
|
||
|
||
## 实际修改
|
||
|
||
### 1. 撤回正常首页的频率限制
|
||
|
||
17:18 移除了此前新增的两处 Nginx include,通过配置检查后平滑重载。仅删除本次加入的引用,保留站点配置里的其他内容。原每 IP 5 次/秒、首页总量 50 次/秒等频率限制现已停用。
|
||
|
||
撤回前配置备份:
|
||
|
||
`/www/backup/txiaw-mysql-fix-20260831/www.txiaw.com-before-rate-limit-rollback-20260831-171842.conf`
|
||
|
||
### 2. 仅关闭已确认异常请求的连接
|
||
|
||
17:36 重新加载精简后的两个防护 include,里面不再有 `limit_req`、`limit_req_zone` 或首页总量限制。对上述已确认异常特征执行 Nginx `return 444`,减少 HTTP 429 应答和 PHP 调用开销。正常浏览器首页、文章页和其他站点不适用该条件。
|
||
|
||
当前文件:
|
||
|
||
- `/www/server/panel/vhost/nginx/www.txiaw.com.conf`
|
||
- `/www/server/panel/vhost/nginx/txiaw-home-protection-http.inc`
|
||
- `/www/server/panel/vhost/nginx/txiaw-home-protection-server.inc`
|
||
|
||
已验证配置合法、精确拦截规则已加载、原频率限制未加载。修改前备份位于:
|
||
|
||
`/www/backup/txiaw-mysql-fix-20260831/before-abuse-connection-close-20260831-173658/`
|
||
|
||
PHP 对同一异常特征的 429 拦截仍作为后备保护。数据库新索引和首页缓存保留,没有删除索引或业务数据。
|
||
|
||
### 3. 临时拦截 84 个确认异常来源
|
||
|
||
17:42:02 创建原生 ipset 超时集合 `txiaw_cc_0831`,通过一条独立 iptables INPUT 规则仅拦截集合中来源访问 **TCP 80**。
|
||
|
||
入选条件同时满足:最近且跨度不超过 30 秒的日志样本;同源异常请求不少于 20 次;该站样本异常比例不低于 98%;平均至少 5 次/秒;公网 IPv4;同时出现在当前 80 端口 TCP 对端中。排除了本次 SSH 来源和服务器地址。
|
||
|
||
- 仅限确认的 84 个来源和 HTTP 80 端口,不修改 SSH 22、HTTPS 443、宝塔 8686 的规则。
|
||
- 每个集合成员有效期 **900 秒**,约在 **17:57:01 自动到期**。
|
||
- 没有配置自动续封、后台轮询或定时任务,也没有主动将该规则保存到开机配置。
|
||
- 到期后空集合的匹配规则不拦截地址,Nginx 的异常特征拦截继续存在。
|
||
- 截至 17:42:45,该临时规则已丢弃约 67,556 个包。
|
||
|
||
只应将这一措施视为紧急缓解。15 分钟后若同批来源继续攻击,仍可能重新产生较大的连接压力;长期源站保护需要结合云侧流量、带宽和防护能力进一步处理。
|
||
|
||
## 前后采样
|
||
|
||
| 指标 | 撤回频率限制后、精确断开前 | 精确断开和临时来源拦截后 |
|
||
| --- | --- | --- |
|
||
| 采样时间 | 17:35 | 17:42 |
|
||
| 已建立 TCP 连接 | 全机约 14,338 | 80 端口约 484;443 端口约 31 |
|
||
| CPU 空闲 | 约 62% | 约 54% |
|
||
| 网卡接收 | 约 4.71 Mbps | 约 2.99 Mbps |
|
||
| 网卡发送 | 约 5.11 Mbps | 约 3.55 Mbps |
|
||
| 本机首页 | 约 1.1 秒 | 约 0.02 秒 |
|
||
| 公网宝塔 | 多次超时 | 两条测试路径均成功,约 0.58–0.70 秒 |
|
||
|
||
流量持续变化,采样窗口较短,不能把每个指标的全部变化单独归因于某一项修改。未取得云平台带宽上限或流量清洗事件,不能认定已查明具体云侧瓶颈。
|
||
|
||
## 审计记录与撤回
|
||
|
||
远程记录均位于 `/www/backup/txiaw-mysql-fix-20260831/`:
|
||
|
||
- `rate-limit-rollback.json`、`rate-limit-rollback-verified.json`
|
||
- `abuse-connection-close.json`、`abuse-connection-close-verified.json`
|
||
- `temporary-abuse-source-filter.json`:含入选来源和启用时间,权限 0600
|
||
- `network-mitigation-final.json`
|
||
|
||
如需立即解除本次临时 IP 拦截,只清空这个专用集合即可,不要清空整个防火墙:
|
||
|
||
```sh
|
||
ipset flush txiaw_cc_0831
|
||
```
|
||
|
||
若还需移除空匹配规则和集合,按顺序执行:
|
||
|
||
```sh
|
||
iptables -w 5 -D INPUT -p tcp --dport 80 -m set --match-set txiaw_cc_0831 src -m comment --comment txiaw-confirmed-abuse-expiring -j DROP
|
||
ipset destroy txiaw_cc_0831
|
||
```
|
||
|
||
如需撤回 Nginx 精确断开规则,应移除这两处专用 include 引用,执行 `nginx -t`,通过后平滑重载。不要恢复此前每 IP/全站首页的频率限制,也不需要回滚数据库或导入表备份。
|
||
|
||
[Nginx 官方说明:444 关闭连接且不发送响应头](https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return)。
|