跳转到主要内容

遭遇勒索病毒攻击?请立即断网隔离,切勿重启或格式化。

舍末无勒SheMo Noransom

应急问答 · 系统与软件

Linux 服务器、宝塔面板中了勒索病毒怎么办?

简短回答

Linux 服务器或宝塔面板中招,先分清是哪一类:网站目录和数据库文件被真正加密(后缀改变、目录里出现勒索信),还是数据库被删、只留下一张勒索表——后者没有加密,付款前也无法证明对方手里有数据,付款不是恢复路径。两类都要先切断公网访问但保持运行,不重装、不反复启动数据库,对数据分区做快照或只读镜像,再从备份、binlog 或磁盘残留中找数据,清掉后门后才能上线。

要点速览

  • 「文件被加密」和「删库勒索」是两类事件:前者看家族与备份,后者看备份、binlog 与磁盘残留。
  • 删库勒索付款前无法验证对方是否真的保存了数据,公开案例中有团伙根本不下载、只删除。
  • 入口多在对外暴露的一侧:Web 应用漏洞、主机管理面板、数据库与 Redis 端口、SSH 弱口令。
  • 宝塔面板披露过数据库管理未授权访问漏洞,也出现过用户大量报告 Nginx 被篡改的事件,面板不宜直接暴露在公网。
  • 上线前逐项清查 authorized_keys、crontab、systemd 服务与 webshell,改密码挡不住这些后门。

按顺序执行

现在就该做的事

  1. 切断公网访问,保持运行

    在云安全组或主机防火墙上封掉公网入站,只放行应急人员的固定 IP。保持主机运行,不要重启、重装系统,也不要在原目录重装 MySQL 或 PHP 环境。SSH 已经登不上时,用云控制台的 VNC 管理终端或机房带外管理登录排查。

  2. 停止一切会覆盖数据的写入

    暂停面板和系统里的计划任务,尤其是按份数轮转的备份任务——它会用空库或已加密的新备份挤掉最后一份好备份。不要往数据所在分区上传、解压或导出大文件,也不要反复启动 mysqld:被删除的数据文件所占的磁盘块随时可能被新写入覆盖。

  3. 给数据分区做快照或只读镜像

    云服务器为系统盘和数据盘各做一次快照,物理机做只读磁盘镜像。之后的数据抽取、binlog 回放和磁盘层恢复都在副本上进行,原盘不再写入。

  4. 保全日志与入侵痕迹

    保存 Nginx / Apache 访问日志(宝塔环境通常在 /www/wwwlogs)、/var/log/secure 或 auth.log、各用户的 crontab 与 bash 历史、systemd 单元、authorized_keys、MySQL 错误日志与 binlog、面板操作日志;勒索信原样保留,勒索表原样导出,现存的 binlog 文件尽快复制到别处。

  5. 判断事件类型与家族

    文件后缀改变、目录里有勒索信,按加密事件处理,用 在线识别 确认家族;文件完好但库或表不见了、多出一张勒索表或一个勒索库,按删库勒索处理,重点转向备份与 binlog。两种情况也可能同时出现。

  6. 清点所有恢复来源

    面板本地备份目录、异机或对象存储上的备份、云盘快照、主从复制的从库、binlog 文件、开发测试环境里的旧导出,逐项记下时间点。和数据库放在同一台机器上的本地备份,往往会被一起删除或加密,不能默认它还在。

  7. 在新主机上恢复,清掉后门再上线

    被入侵过的主机原则上重建。新主机打齐补丁,面板、数据库与缓存端口不对公网开放,全部口令与密钥更换后,再导入恢复出的数据;旧网站代码要先做 webshell 清查与完整性比对,确认干净再部署。

避免二次损坏

切勿操作

  • 不要重装系统,也不要在原数据目录重装 MySQL 或用面板的修复、重装功能覆盖环境——被删除的数据文件残留和入侵证据会一起被覆盖。
  • 不要在原数据目录上反复启动 mysqld 或逐级加 innodb_force_recovery 试探,所有尝试都放到镜像副本上做。
  • 不要向勒索表或勒索信里的地址付款:删库勒索在付款前无法验证对方是否真的保存了数据,公开案例中既有团伙只删除不下载,也有多个团伙互相覆盖勒索信。
  • 不要往数据所在分区继续写入大文件,也不要让按份数轮转的自动备份继续运行。
  • 不要只改 SSH 密码和面板密码就恢复上线——authorized_keys 里的公钥、crontab、systemd 服务和 webshell 都不受改密影响。
  • 不要把网站备份直接覆盖回原目录:备份里可能已经带着 webshell,覆盖还会冲掉入口证据。
  • 不要下载运行网上的「.locked 解密工具」:.locked 是多个家族共用的后缀,工具不匹配只会造成二次损坏。

文件被加密和删库勒索,有什么区别?

Linux Web 服务器上的「勒索」其实有两种,处置方向完全不同,第一步就要分清。

文件被加密删库勒索
现象网站文件、.ibd 数据文件、备份包被追加后缀,目录里有勒索信文件本身完好,数据库或表不见了,多出一张勒索表或一个勒索库
数据在哪里还在本机,只是被加密已从本机删除,攻击者可能拷走了,也可能没有
付款换来什么一把不保证可用的密钥一份无法事先验证是否存在的数据
主要恢复路径家族判断、备份与快照、文件结构级修复备份、binlog 回放、磁盘层找回被删除的数据文件

删库勒索通常不需要任何恶意程序,能登录数据库就够了。Guardicore(现属 Akamai)披露的 PLEASE_READ_ME 行动从 2020 年 1 月开始,爆破公网 MySQL 的口令,把数据打包传走后从库中删除,留下名为 WARNING 的勒索表;其后台列出了来自 8.3 万台服务器的 25 万个数据库,并以泄露站施压。2017 年初的 MongoDB 删库潮则暴露了另一面:据 BleepingComputer 报道,多个团伙互相覆盖对方的勒索信,有的团伙根本不下载数据、只是删除,也有受害者付款后收不到任何回复。

所以删库勒索的问题不只是该不该付,而是付款前根本无法确认对方手里有没有数据、在哪一伙人手里。即使对方真的保存了,外泄已经发生,合规上的影响也不会因为付款而消失。我们的立场与 要不要交赎金 一致:不支付、不代谈判,把时间用在找数据上。两种手法也可能同时出现——JadePuffer 在公开事件中既就地加密了配置字段,又删除了业务库并留下 README_RANSOM 勒索表。

MySQL 被删库之后,数据还能从哪里找回来?

按可靠程度从高到低,依次看这几条路。

1. 备份与快照。 面板或脚本做的 mysqldump 导出、物理备份、云盘快照、从库。要特别核对备份放在哪:和数据库在同一台机器、同一块盘上的备份经常被一起删除;异机、对象存储或离线介质上的副本才是重点。

2. binlog 回放。 MySQL 官方文档说明,binlog 是时间点恢复的数据来源:先恢复一份全量备份,再用 mysqlbinlog 把备份之后的变更重新执行一遍,截止到删库语句之前。MySQL 8.0 默认开启 binlog,更早的版本和手工初始化的实例要逐台确认。它的局限也要清楚:binlog 记录的是变更,没有全量备份作起点时,只有保留下来的 binlog 覆盖了表从创建起的全部历史,才能单靠它重建;攻击者拿到高权限后也可能清理 binlog,所以要尽快把现存文件复制出来。

3. 磁盘层找回被删除的数据文件。 这条路取决于表空间布局。MySQL 文档写明,InnoDB 默认为每张表建立独立的表空间文件(.ibd),删除这类表后磁盘空间归还给操作系统——也就是说 .ibd 在文件系统层面被删掉了,但数据块在被新写入覆盖之前仍可能留在盘上,可以在镜像上找回文件,或按 InnoDB 页结构扫描抽取记录。表若建在共享表空间里,删除后空间只在 InnoDB 内部标记为可复用,尚未被复用的页同样可以扫描。两种情况的共同前提是:立刻停止对该分区的写入,所有操作在镜像上做。能恢复多少,取决于删库后写入了多少数据,我们不事先承诺比例。

4. 业务侧重建。 支付平台流水、第三方平台订单、缓存、日志与通知记录,可以补齐订单、会员等关键数据。

如果 ibdata1、.ibd 是被真正加密(改了后缀),页级修复与加密覆盖范围的判断见 MySQL 被勒索病毒加密。MongoDB、Elasticsearch、Redis 被清空时思路相同:先保住磁盘上的持久化文件、快照与副本节点,在副本上分析,不要急着重启服务或重建实例。

网站目录被加密,攻击者通常从哪里进来?

Linux Web 服务器的入口大多在对外暴露的那一侧,排查时按这几类逐一核对:

  • Web 应用与组件漏洞。 框架、中间件、CMS 插件与业务系统的高危漏洞会被批量扫描利用,攻击者先写入 webshell,再加密网站目录和数据库目录。TellYouThePass 是这条路线的代表:2021 年 12 月它借 Log4j 漏洞投放,其 Linux 版本会收集 SSH 密钥在内网横向移动。
  • 主机管理面板。 宝塔面板在 2020 年 8 月披露过数据库管理未授权访问漏洞,影响 Linux 版 7.4.2 与测试版 7.5.14、Windows 版 6.8,访问特定地址即可进入数据库管理页面,修复版本为 7.4.3、7.5.15 与 6.9.0。2022 年 12 月,不少宝塔用户报告 Nginx 主程序被替换、页面被注入恶意 JS、日志被清空;宝塔官方公告称暂未发现面板与 Nginx 的安全漏洞,并建议升级面板、修改安全入口与密码、开启双因素认证和防篡改,这次事件的入口至今没有公开定论。2026 年 2 月,Datadog 安全实验室记录到攻击者借 React2Shell 漏洞入侵后,用专门针对宝塔的脚本改写其管理的 Nginx 配置来劫持流量。cPanel/WHM 同样是目标,Sorry 勒索病毒就是借它的认证绕过漏洞批量入侵的。
  • 数据库与缓存端口。 3306、27017、6379、9200 直接暴露公网,配合弱口令或未开认证,就是删库勒索的入口。Redis 官方文档明确不建议把它直接暴露在公网,并指出客户端可以用 CONFIG 命令把文件写到任意路径,进而可能控制整台主机。
  • SSH 弱口令与口令复用。 一台主机失陷后,攻击者会用同样的口令或收集到的密钥登录内网其他 Linux 主机。

判断入口的依据主要在 Web 访问日志、面板日志与 SSH 认证日志里,这也是为什么不能先重装。

恢复上线前,要清掉哪些后门?

Linux 主机上的后门大多不受改密码影响,这正是很多服务器恢复后又被加密或又被删库的原因。被入侵过的主机原则上重建;确实需要在原机上核查时,至少逐项检查:

  • 账号与密钥:/etc/passwd 中新增或 UID 为 0 的账号,所有用户(包括 root)authorized_keys 里的陌生公钥,sudoers 的改动。
  • 定时任务:每个用户的 crontab、/etc/crontab、/etc/cron.d 与 cron.hourly 等目录,以及面板计划任务里不认识的条目。
  • 服务与启动项:新增或被修改的 systemd 服务与 timer、/etc/rc.local、/etc/profile.d 与各用户 shell 配置里的启动命令。
  • Web 目录:上传目录与网站根目录下新出现的 php、jsp 文件,时间戳异常的文件,与代码仓库比对不一致的文件。
  • 程序完整性:Nginx、sshd 等常驻程序是否被替换——2022 年 12 月宝塔相关事件中被替换的正是 Nginx 主程序;/tmp、/dev/shm 下的可执行文件与异常进程。
  • 面板本身:面板账号、安全入口、授权 IP 是否被改动,面板版本是否为最新。

清查之后还要把全部口令与密钥换掉:系统账号、SSH 密钥、面板账号、数据库账号,以及应用配置里的数据库连接串与云 AccessKey。更多根因分析见 为什么反复中勒索病毒

ESXi、NAS 和 Windows 服务器,也照这个办吗?

不完全一样,下面几种情况请看对应的页面:

  • VMware ESXi 宿主机被加密。 这类加密器常被称作 Linux 版本,但它们打的是数据存储里的虚拟磁盘,关机、删快照、加密 vmdk 的行为和恢复路径都不同于 Web 服务器,见 虚拟化平台被加密
  • 群晖、威联通等 NAS 被加密。 NAS 系统同样基于 Linux,但处置重点在存储卷与快照,见 服务器与 NAS 被加密
  • 同一网络里的 Windows 服务器与云服务器。 远程桌面、SQL Server 入口与卷影副本的处理方式见 服务器中了勒索病毒怎么办

混合环境很常见:Web 服务器被打穿后,攻击者可能继续登录同网段的数据库服务器、备份服务器甚至虚拟化管理口。排查范围要按实际的网络互通与凭据复用来划定,而不是按操作系统划定。

紧急响应

数据已被加密?先别动,让工程师看一眼

我们不支付赎金、不代为谈判。工程师会先做免费评估,判断可恢复范围后再给出处置方案与报价。

相关问答

相关勒索家族

相关解决方案

常见问题

追问

  • 宝塔面板还能继续用吗?

    关键不在用不用面板,而在怎么暴露。建议不要把面板直接开放在公网:限制授权 IP、修改安全入口、开启双因素认证并及时升级——宝塔官方在 2022 年 12 月的公告里也给出了升级面板、开启双因素认证与防篡改等建议。phpMyAdmin、数据库与 Redis 端口同样不要对公网开放。如果这台主机已经被入侵,就不要在原机上「加固后继续用」,而是在新主机上重新部署面板与环境,再导入核查过的数据与代码。

  • 数据库被删了,勒索表里要比特币,付了能拿回数据吗?

    不建议付。删库勒索在付款前没有办法确认对方真的保存了数据:2017 年的 MongoDB 删库潮中,多个团伙互相覆盖勒索信,有的团伙只删除不下载,有受害者付款后收不到回复。即使像 PLEASE_READ_ME 那样真的把数据传走了,付款也只是向犯罪团伙买回一份早已外泄的数据,外泄带来的合规义务不会因此消失。更有效的做法是立刻停止写入、镜像数据分区,按备份、binlog、磁盘层恢复的顺序去找数据。我们不支付赎金、不代为谈判。

  • 没有备份、也没开 binlog,还有希望吗?

    有机会,但要看磁盘写入情况,而且越快越好。InnoDB 默认每张表一个 .ibd 文件,删库后文件在文件系统层面被删除,数据块在被覆盖前可能仍在盘上;共享表空间里被删表的页也可能尚未复用。能恢复多少,取决于删库后这块盘又写入了多少数据、文件系统类型、是否启用了 TRIM,以及是否已经重装或重建过数据库。现在最重要的是停止对该分区的写入、做只读镜像,然后在镜像上评估;结论我们会如实告知,不承诺比例。

  • 攻击者说已经下载了我们的数据,会被公开吗?

    有这种可能,应按数据可能已外泄来处理。PLEASE_READ_ME 行动就把盗取的数据库挂在自建站点上出售施压。判断是否真的外泄,要看 Web 与数据库日志里的大批量查询和导出、出站流量的体量与方向、主机上的打包文件与传输工具痕迹。评估方法、泄露站核查与通知义务见 勒索团伙威胁公开数据怎么办

  • 服务器 SSH 突然连不上、数据库进程全停了,是中了勒索病毒吗?

    有可能。部分 Linux 勒索病毒在加密前会主动停止 SSH 服务并结束数据库进程,Sorry 就是典型例子。这时不要急着重启:先用云控制台的 VNC 管理终端或机房带外管理登录,看网站与数据目录里有没有新后缀和勒索信、/tmp 下有没有陌生可执行文件,同时在安全组上收紧入站,再按本页的步骤保全现场。