蓝易云CDN:网站被入侵几个月都不知道?
网站被入侵几个月都没发现,这事比你想的普遍 🕵️
很多站长对"被黑"的印象还停留在首页被换成黑底红字。真实情况恰恰相反:成熟的攻击者最怕你发现。他们要的是一个能长期使用的跳板——挂暗链、卖流量、跑挖矿、当代理,任何一项都需要网站保持"看起来一切正常"。所以入侵潜伏三五个月才被察觉,在实际运维中并不罕见。

为什么你一直没看出来
页面只对特定访客变脸。 后门脚本会判断 User-Agent 和 Referer:普通浏览器访问是正常页面,爬虫来访或者从搜索结果点进来,才吐出赌博、医疗类的跳转内容。站长自己怎么刷都看不出问题。
改动藏在你不会看的地方。 常见落点包括上传目录里的图片马、模板缓存文件、主题的 functions 类文件、数据库里某条配置记录。更隐蔽的会把恶意代码插进正常文件的中间部分,只有一两行,而且用 touch 把文件修改时间改回三年前。
痕迹被主动清理。 访问日志里对应那次入侵的记录被删掉,或者攻击者干脆等日志轮转自然覆盖。Java 站点还可能遇到内存马,磁盘上一个多余文件都没有,重启前一直驻留。
CDN 把问题盖住了。 缓存命中率高的站点,源站已经被篡改,边缘节点还在回放旧内容,反而延缓了暴露时间。
自查可以从这几步下手 🔍
- 用搜索引擎的
site:指令翻自己的域名,看有没有从来没写过的页面被收录,这是最快的暗链发现方式。 - 换身份访问。 用命令行工具把 User-Agent 伪装成爬虫,再带上搜索引擎的 Referer 请求首页,对比返回内容是否一致。
- 做文件比对。 有 Git 仓库就
git status,没有就拿干净的安装包和备份做全量 diff。重点看.php、.jsp、.js以及本不该有可执行文件的上传目录。 - 查异常进程和外联。
top看 CPU 长期高占用的进程,netstat/ss看有没有指向陌生 IP 的持续连接,矿池通信很难藏住。 - 翻权限相关的位置。
crontab -l、/etc/cron.*、~/.ssh/authorized_keys、数据库管理员表,后门经常靠这几处实现重启存活。 - 回看访问日志。 静态资源目录出现 POST 请求、同一 IP 对某个冷门路径反复访问、深夜的出站流量尖峰,都值得深挖。
确认被入侵后怎么办 🛠️
先别急着删文件。第一步是打快照保留现场,否则事后连入侵路径都查不清,清理完照样被二次打进来。
接着断开外部访问,把源站从公网收回,只保留跳板机登录。然后重置所有凭据:后台密码、数据库密码、FTP/SSH 密钥、对象存储 AK/SK、CDN 控制台账号,一个都不能漏。
清理环节建议重建而不是逐个文件删。用干净的程序包 + 可信备份重新部署,再把数据库做一次内容审计。手工清理漏掉一个文件,前面的工作全部作废。
最后必须定位入口。绝大多数入侵来自三条路:老版本程序或插件的已知漏洞、弱口令、被泄露的密钥。入口没堵上,重装系统也只是拖延时间。
日常防守要落到实处 🛡️
- 上传目录关闭脚本执行权限,Web 用户对代码目录尽量只读
- 程序、框架、插件保持更新,尤其是公开漏洞出来后的头两周
- 后台入口改路径 + 强制二次验证,别用 admin/123456 这类组合
- 备份异地存放并定期演练恢复,勒索场景下这是唯一的底牌
- 部署文件完整性监控,代码目录一有写入就告警
- 在 CDN 侧启用 WAF 和 CC 防护,拦掉大部分自动化扫描和通用漏洞利用
说到底,"几个月才发现"的根因不是技术不够,而是没有任何一条机制会在异常发生时主动告诉你。把监控和告警补上,这类事情才不会再拖成长期问题。✅