记一次站点被攻击的情况报告

warning: 这篇文章距离上次修改已过240天,其中的内容可能已经有所变动。

2025/11/13 23:02

笔者最近打算把自己之前写过的小说录入电脑供各位欣赏,但是碰到了回忆创作理念的问题,想着这部分内容在博客有存档,想回来翻翻看的。

结果一翻,发现博客打不开了。

1. 问题定位

『错误网关』是Google机翻的结果,其实表达的就是502 Bad Gateway,出现这个问题说明nginx还在工作,是PHP出了问题——而且这一点很容易得到印证:根域名的个人页是纯静态的,连PHP的配置都没有写,所以依然可以正常打开。

因为站点曾经出现过几次网站打不开的情况,因此连上去服务器SSH之后,第一时间检查的是磁盘是否被写满:

root@us-1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
......
/dev/vda1        29G   14G   14G  52% /

很显然没有,说明问题不在这里,下一步检查机器性能占用情况。当时为了更方便查看机器性能,我往机器上装了htop,来替代top命令,于是在执行htop之后,马上就发现了端倪:

机器的性能已经被MariaDB和PHP和nginx消耗殆尽,说明机器收到了大量的动态页面请求(博客几乎全是动态资源),导致性能被耗尽。

我对于自己站点到底几斤几两,心里还是有点数的,占满资源的肯定不可能是正常访客,肯定是受到了某种类型的攻击。那么下一步,自然就是要把罪魁祸首揪出来。

2. 是谁在打我

nginx的访问日志存储在/var/log/nginx/access.log,一般情况下我习惯使用nano去查看日志,但这次不太行了,因为攻击者让nginx结结实实地打了1.1GB的日志:

执行tail -n 20 access.log,看一眼日志最后出现的访问请求:

root@us-1:/var/log/nginx# tail -n 20 access.log.1
172.68.211.189 - - [13/Nov/2025:23:11:10 +0800] "GET /index.php/archives/769/ HTTP/2.0" 499 19053 "-" "Go-http-client/2.0"
172.68.211.189 - - [13/Nov/2025:23:11:10 +0800] "GET /index.php/archives/769/ HTTP/2.0" 499 19033 "-" "Go-http-client/2.0"
172.68.211.189 - - [13/Nov/2025:23:11:10 +0800] "GET /index.php/archives/769/ HTTP/2.0" 499 19096 "-" "Go-http-client/2.0"

# ........以下大量重复......

172.68.211.189是Cloudflare的回源IP,这个稍后再说;日志表明,有一个不知道哪里来的程序,正在疯狂请求ID为769的那篇博文,而且只请求本体,不请求网页其他资源;然后是错误码499,表示nginx在完成响应之前,客户端就断开了连接;最后的UA,不用说,是某个基于Go网络库的程序(并非绝对,但大概如此)。

既然攻击者并未穿透CF直接打源站,那么下一步就该转移到CF去调查了。

3. 真相与缓解

登录CF后台,进入域名——安全性——分析,里面已经展示出来了这段时间的异常请求:

显然,来自155开头和2a0e开头的两个IP,向站点发送了大量的异常请求,导致性能耗尽。

临时的缓解方法也很简单,在域名——安全性——安全规则下,添加两类规则:

  • 针对特定IP的屏蔽(因为这个并不是分布式攻击)
  • 针对动态内容的请求速率限制

就可以大大缓解目前的情况。

4. 复盘

攻击者为什么要这么做?并未可知(当然要阴谋论一点,可能和博文内容有关)。但至少可以确定,这可以定性为HTTP GET Flood,因为攻击者采用了HTTP/2,本来就带多路复用功能,所以只需要少量连接就可以产生大量请求,危害并不在小。

目前时候不早了,简单做了下缓解措施之后就打算先搁置在一旁,天塌下来让速率限制先顶着,明天早上起来再进一步处理。

受影响最大的应该是站点计数器,凭空从24万打到了32万,还得翻数据库备份去回退,心累。

小说也没录入多少,真是败坏好心情。

(完)


木头箱子脆脆,但是这样正好

如无特殊声明,本站内容遵循 CC BY-NC-SA 4.0 协议

转载请注明出处并保留作者信息,谢谢!

本站由 搬瓦工VPS 强力驱动

none
最后修改于:2025年11月14日 00:43

已有 2 条评论

  1. 曹老板 曹老板

    虽然看不懂,但是博主写的很好,文笔不错

添加新评论

提醒:『评论回复邮件提醒』功能正在测试中
评论后,如果站长有回复,会有邮件通知