location ~* \.(zip|sql|bak|tar\.gz|env)$ {
deny all;
return 404;
}
扫描器请求 /www.zip 返回 200,大小 42MB,解压出来是完整的站点源码和 config.php,数据库账号密码都在里面。同目录还有 .sql 和 .bak 两个文件。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:打包脚本把压缩包输出到了站点根目录,图省事没挪走。Nginx 对静态文件不设限,压缩包和普通图片一样能下。命名又很常规,扫描器第一个就试这个。
「备份文件暴露」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:备份产物统一写到站点根目录之外 用独立磁盘;Nginx 拒绝 zip sql bak env 这类后缀的直接访问;打包脚本加一步 生成后立刻挪到备份目录;全站扫一遍常见备份名 发现就删并改掉相关口令。
确认没问题再收工,再请求 /www.zip 返回 404 正常图片和静态资源访问不受影响。
