清理并维护网站

为使您的网站保持干净,并防止网站再次遭到黑客入侵,您需要做好以下准备:

  • 拥有您网站服务器(网络、数据库、文件)的 Shell 或终端管理员访问权限
  • 了解 shell 或终端命令
  • 懂代码(如 PHP 或 JavaScript)
  • 存储空间,用于创建网站的备份,包括文件、数据库和图片

后续操作

我们将在此步骤中介绍几项操作:

  • 如果您认为黑客意图获取用户的个人信息(例如通过钓鱼式攻击网页),应在何处查找其他资源。
  • 使用 Search Console 中的移除网址选项,可以更快地移除由黑客创建的全新、有害、用户可见的网址,以避免它们出现在 Google 搜索结果中。
  • Search Console 中的请求 Google 重新抓取您的网址选项,以加快 Google 针对您希望显示在 Google 搜索结果中的正常网页(即新网页或最近更新的网页)的处理速度。
  • 安装最新、最安全的软件版本。
  • 移除可能导致您的网站在日后出现更严重漏洞的不必要或不使用的应用或插件。
  • 恢复正常内容并清除黑客的内容。
  • 修复被黑客利用的根本原因漏洞。
  • 更改所有密码。
  • 制定计划来确保您的网站安全无虞。

1. 查找支持资源

如果从您的网站上获取了机密用户信息(例如,通过钓鱼式攻击的方式进行攻击),在开始清理网站或删除任何文件之前,您可能需要考虑商业、监管或法律方面的责任。对于钓鱼式攻击,antiphishing.org 提供了实用的资源,例如这篇文档:如果您的网站遭到了钓鱼式攻击时应采取什么措施

2. 考虑更快速地移除由黑客创建的新网址

如果黑客创建了全新且用户可见的网址,那么您可以使用 Search Console 中的移除网址功能,更快速地从 Google 搜索结果中移除相应网页。这是可选步骤。如果您直接删除相应网页,然后将您的服务器配置为返回 404 状态代码,那么这些网页在一段时间后便会自然地从 Google 的索引中消失。

  • 是否使用“网址移除”功能可能取决于创建的不受欢迎的新网页的数量(在“移除网址”中添加过多的网页可能会很麻烦),以及这些网页可能会对用户造成的潜在损害。若要使通过网址移除功能提交的网页再也不会出现在搜索结果中,请确保相应网页也已配置为针对垃圾网址和已移除网址返回 404“未找到文件”响应。
  • 请勿使用此工具请求移除任何原本正常但仅遭到黑客破坏的网页。您希望这些网页在清理后出现在搜索结果中。网址移除功能仅适用于您再也不希望出现在搜索结果中的网页

3. 考虑加快 Google 对您的正常网页的处理速度

如果您新建或更新正常网页,则可以在 Search Console 中请求 Google 重新抓取您的网址,将这些网页提交给 Google 的索引。这是可选操作;如果您跳过此步骤,Google 可能会在一段时间后抓取并处理您新建或修改的网页。

4. 开始清理您的服务器

现在,请根据您在评估受破坏程度找出漏洞中所做的记录,开始清理您的网站。您在此步骤中需采取的路径取决于可用的备份类型:

  • 正常且最新的备份
  • 正常但已过期的备份
  • 无备份

首先,检查您的备份是否是在您的网站被黑客入侵之前创建的。

正常且最新的备份

  1. 恢复您的备份。
  2. 安装所有可用的软件升级、更新或补丁。这包括操作系统软件(如果您对服务器拥有控制权)以及所有应用(例如内容管理系统、电子商务平台、插件或模板)。
  3. 考虑从您的服务器中移除相应网站不再使用的软件(例如 widget、插件或应用)。
  4. 修复漏洞。
  5. 确保解决在评估受破坏程度过程中发现的所有问题。
  6. 再次修改该网站的所有关联帐号(例如 FTP 登录帐号、数据库登录帐号、系统管理员帐号和 CMS 帐号)的密码。在基于 Unix 的系统上:
passwd admin1

正常但已过期的备份

  1. 为当前网站制作磁盘映像(即使该网站仍处于受感染状态)。 但为了安全起见应保留此副本。将该副本标记为受感染,以便与其他副本区分开来。在基于 Unix 的系统上,可按如下方式制作磁盘映像:
dd if=/dev/sda bs=1024 conv=noerror,sync | gzip -c -9 \
> /mirror/full-backup-20120125-infected.gz
  1. 为您的服务器(包括图片和媒体文件)制作备份文件系统副本。如果您有数据库,也请同时备份数据库。
tar -pczf full-backup-20120125-infected.tar.gz www/
mysqldump -u root -p --all-databases | gzip -9 \
> fulldb_backup-20120125-infected.sql
  1. 在您的服务器上恢复正常但已过期的备份。
  2. 考虑是否可在服务器上清除网站不再使用的软件(例如微件、插件或应用)。
  3. 升级所有软件(包括操作系统,如果您对服务器拥有控制权)以及所有软件应用(例如内容管理系统、电子商务平台、插件和模板)。请务必检查并安装可用的安全更新和补丁。
  4. 修复漏洞。
  5. 在正常备份和当前受感染副本之间,以手动或自动方式执行网站 diff
diff -qr www/ backups/full-backup-20120124/
  1. 上传您希望从受感染副本中保留到升级后的服务器上的所有正常的新内容。
rsync -avz /backups/full-backup-20120124/www/clean-file.jpg /www/
  1. 检查评估受破坏程度中列出的每个网址是否已更正。
  2. 再次修改该网站的所有关联帐号(例如 FTP 登录帐号、数据库登录帐号、系统管理员帐号和 CMS 帐号)的密码。在基于 Unix 的系统上:
$passwd admin1

无备份

为您的网站制作两个备份(即使该网站仍处于受感染状态)。创建额外的备份有助于恢复意外删除的内容,或者可让您在操作失误时进行还原并重试。我们建议您将这两个备份都标为“infected”,以备日后参考。

其中一个备份应是您网站的磁盘映像(“克隆版本”)。这种格式可进一步简化内容恢复操作。您可以妥善保存该磁盘映像以备急用。在基于 Unix 的系统上,使用以下代码创建磁盘映像:

dd if=/dev/sda bs=1024 conv=noerror,sync | gzip -c -9 \
> /mirror/full-backup-20120125-infected.gz

另一个备份将是您的服务器中的文件系统副本,包括图片和媒体文件。如果您有数据库,还要备份数据库。

tar -pczf full-backup-20120125-infected.tar.gz www/
mysqldump -u root -p --all-databases | gzip -9 \
> fulldb_backup-20120125-infected.sql

如果您没有磁盘映像,请制作两个数据库备份和两个文件系统备份。

如需在新的备份文件系统副本(而非服务器本身)中清理网站内容,请执行以下操作:

  1. 如果您在之前的调查中发现了过于宽松的文件权限,请进行更正。请务必在备份副本(而不是服务器本身)上执行此操作。
  2. 同样在备份副本上,清理与评估受破坏程度中发现的被入侵网址对应的所有文件。这些文件可能是服务器配置文件、JavaScript、HTML 或 PHP。
  3. 此外,请务必针对黑客创建的新文件移除(发送 404 响应),无论您是否已使用 Search Console 中的“网址移除”工具提交此类文件。
  4. 修复存在于您的代码中的漏洞或被破解的密码。 输入验证库或安全审核可能会有所帮助。
  5. 如果您的网站有数据库,请开始在备份中清理被黑客修改过的记录。在您认为已经完成之前,请检查更多记录,确保数据库看起来干净整洁。
  6. 再次修改该网站的所有关联帐号(例如 FTP 登录帐号、数据库登录帐号、系统管理员帐号和 CMS 帐号)的密码。在基于 Unix 的系统上,请使用以下代码:
$passwd admin1

此时,您网站的曾受到感染的备份副本应该只包含干净的数据。请保存好这一正常副本,然后执行第 5 步操作。

5. 移除不必要的软件

考虑您是否可以在服务器上移除网站不再使用的软件,例如微件、插件或应用。这可以提高安全性并简化未来的维护。

6. 清理所有服务器

  1. 请执行全新安装,而不只是升级。升级可以保留之前版本的文件。如果受感染的文件仍保留在服务器上,您的网站再次遭到入侵的可能性会更高。
    • 全新安装应包含操作系统(如果您拥有服务器的控制权)以及所有软件应用(例如内容管理系统、电子商务平台、插件和模板)。请务必检查是否有可用的安全更新和补丁。
  2. 将正常的备份文件系统副本中的正常内容传输到新安装的服务器。仅上传和恢复已知正常的文件或数据库。请务必保持适当的文件权限,并且不要覆盖新安装的系统文件。
  3. 最后一次修改该网站的所有关联帐号(例如 FTP 登录帐号、数据库登录帐号、系统管理员帐号和 CMS 帐号)的密码。在基于 Unix 的系统上,请使用以下代码:
passwd admin1

7. 制定长期维护计划

我们强烈建议您执行以下操作:

  • 定期对您的网站进行自动备份。
  • 注意及时更新软件。
  • 在将所有应用、插件和其他第三方软件安装到您的服务器上之前,请先了解其安全做法。如果某个软件应用中的安全漏洞可能会影响您整个网站的安全性。
  • 强制创建安全系数高的密码。
  • 确保用于登录机器的所有设备都安全无虞(更新了操作系统和浏览器)。

8. 仔细检查以确认已完成清理

请确保您对以下问题都能做出肯定的回答:

  • 如果黑客获得了用户的个人信息,我是否已采取了适当的措施?
  • 我的网站上运行的软件是否为最新、最安全的版本?
  • 我是否已移除所有可能导致我的网站在日后出现更严重漏洞的不必要或未使用的应用或插件?
  • 我是否恢复了自己的内容并清除了黑客的内容?
  • 我是否修复了导致我的网站被黑客入侵的根源漏洞
  • 我是否制定了保障网站安全的计划?

现在,您可以恢复网站了。