返回》

WordPress网站中毒或被黑客挂马清理修复全指南

你的WordPress网站加载缓慢吗?重定向到其他网站?突然弹出窗口?无法登录?陌生的文件夹?文件有奇怪的名字等等这些只是被黑的WordPress网站的一些最常见的症状。不少小伙伴的网站被黑了后都不知所措,怎么办?如果你遇到了这些问题,不要惊慌!在这篇指南中,搬主题将向你介绍如何处理这些问题。在本指南中,搬主题将告诉你如何识别你的WordPress网站是否被入侵,教你需要采取哪些步骤来清理WordPress网站的恶意软件,以及如何在未来更好地保护它。一、备份恢复-网站出问题后的急救措施从备份中恢复网站可以快速解决这个问题,但主要问题是,你不确定网站是什么时候被感染的,从备份中恢复网站是否安全。黑客可能在几个月甚至几年前就感染了网站,并且没有被发现。只是因为你刚开始注意到一些奇怪的行为,并不意味着问题刚刚开始发生。即使是备份也可能包含恶意代码,所以即使你从备份中恢复网站,也要确保事后对所有恢复的文件进行详细分析。现在大多数(像样的)主机供应商都会将你的整个cPanel账户的备份保留到30天后,所以作为最后的手段,你可以随时要求你的主机供应商恢复你的账户。但是不要严重依赖你的主机提供商为你进行备份,使用一个免费的WordPress插件,如UpDraft,自己安排远程备份。提示:检查受感染文件的最后修改日期,恢复比该日期更早的备份。但是在恢复备份后,仍然有必要进一步提高整个WordPress的安全性,以避免在未来出现同样的问题。二、用病毒扫描器扫描文件现在,大多数主机供应商使用网络应用程序防火墙(WAF),如Comodo WAF或ModSecurity,自动阻止知名的漏洞。在任何共享套餐中,或者你可以通过cPanel面板自带的病毒扫描器对你的主机账户进行定期扫描。查看病毒扫描器的日志,如果发现任何受感染的文件,就手动审查每一个文件,看看它们如何与你的WordPress网站互动,然后清理它们的任何恶意内容。例如,大多数被利用的文件包含随机字符串(通常称为混淆代码),这些字符串被用来从你的账户分发垃圾邮件。下面是最常用的WordPress恶意软件的例子。在这个例子中,在文件的开头,注入了另一个PHP代码,加载了额外的恶意代码,每次你的网站被加载时都会执行,所以为了清理代码,你需要删除PHP标签之间的第一部分。这样,就只剩下原始的WordPress代码了。三、清理WordPress网站如果你注意到几天前还不存在的奇怪的文件夹和文件,最聪明的做法是删除所有可以重新安装的数据,从头开始。但是注意保留包含你所有媒体文件的uploads文件夹,其他不保留。你可以重新安装其他的东西,比如WordPress、主题和插件。wp-content/uploads文件夹包含你所有的媒体文件(图片)。wp-config.php 配置文件,你需要连接到数据库。1、清理WordPress数据库如何检查和清理MySQL数据库的SQL注入和WordPress恶意软件?检查你的数据库是否被破坏的最好方法是从PHPMyAdmin中下载整个数据库,在任何文本编辑器中打开它,然后手动浏览它。要从你的cPanel帐户下载你的数据库(创建一个数据库转储),打开PHPMyAdmin,从左边的数据库列表中选择你的数据库。如果你在同一个cPanel账户上有多个WordPress网站,你将有一个以上的数据库。要检查网站使用的是哪个数据库,你可以打开它的wp-config.php文件,在define('DB_NAME', 'database_name')下找到数据库的名称。在左边选择数据库名称后,点击 “导出 “链接,然后点击 “前往 “按钮。整个数据库将被下载为db-name.sql文件,你可以很容易地在任何文本编辑器(如Notepad++)中打开并浏览其内容。如果你有服务器的root权限(SSH),你可以用mysqldump命令导出数据库。mysqldump -u username-here -p db-name > /home/cpanel-username/file-name.sql然后仔细分析一下数据库,任何看起来不像是属于WordPress数据库的东西。最比如常见的是这些功能中的一些:eval()base64_decode()gzinflate()error_reporting(0)shell_exec()str_rot13()同样,如果你有终端访问权限,你可以grep任何这些代码,这里是搬主题的grep代码:grep -l -Ei -e 'eval[ ]?(' -e 'base64_decode[ ]?(' -e 'gzinflate[ ]?(' -e 'error_reporting[ ]?((0|off))' -e 'shell_exec[ ]?(' -e 'str_rot13[ ]?(' $filename对于循环浏览/home/dbdumps中的文件列表,使用以下方法:for filename in $(ls /home/dbdumps); do grep -l -Ei -e 'eval[ ]?(' -e 'base64_decode[ ]?(' -e 'gzinflate[ ]?(' -e 'error_reporting[ ]?((0|off))' -e 'shell_exec[ ]?(' -e 'str_rot13[ ]?(' $filename done如果你在数据库中发现任何可疑的代码,你可以很容易地在Google上找到它或在WordPress论坛上检查它是否属于WordPress。你应该从.sql文件中删除任何可疑的内容,保存它并使用PHPMyAdmin把它重新上传回数据库。要把数据库导入,如果你有root权限(SSH),运行以下命令。mysql -u username-here -p db-name < /PATH and FILENAME.sql或者觉得命令太麻烦,可以直接使用PHPMyAdmin,但在导入数据库.sql文件之前,你需要从数据库中删除所有现有的表。你可以通过选择数据库,然后使用所有表下面的 “Check all”链接选择里面的所有表,在 “With selected: “下选择 “Drop “来完成。点击 “Go “按钮,确认删除,现在你可以导入数据库了。再次在左边选择你的数据库名称,然后点击菜单中的 “导入 “链接,选择选中的.sql文件,并点击 “开始 “按钮。在导入之后,你应该看到一条消息说,表格导入成功了。在删除所有旧的WordPress文件(除了wp-content/uploads文件夹和wp-config.php文件),检查并在必要时清理数据库之后,你现在可以进入下一个步骤,重新安装WordPress。四、重新安装WordPress接下来我们需要重新安装一次WordPress。第1步-下载WordPress从WordPress.org网站下载一个新的WordPress安装。第2步-上传WordPress如果你使用cPanel,你可以使用文件管理器来上传先前下载的.zip文件。只需进入你的WordPress网站安装的文件夹(它的根目录),点击菜单中的上传链接,选择.zip文件并等待上传完成。第3步-解压(UnZip)WordPress回到你上传的文件夹,右键点击.zip文件,然后解压和提取文件。第4步-将Uploads文件夹移至wordpress/wp-content中你可以在根目录(即public_html)下找到上传文件夹,然后在wp-content文件夹下找到它。在上面的文件夹中,上传文件夹和WordPress的安装文件夹。在uploads文件夹上点击右键,选择移动到文件夹,然后在路径中输入/WORDPRESS,例如将public_html/wp-content变成public_html/wordpress/wp-content。第5步-删除现在空的wp-content文件夹将uploads文件夹从旧的wp-content文件夹移到新的wordpress/wp-content文件夹后,有必要删除旧的wp-content文件夹。第6步-将文件从/wordpress文件夹移至域名根目录将旧的uploads文件夹移到新创建的wordpress文件夹后,你需要将wordpress文件夹中的所有内容移到上面的一个文件夹(域名根)。只需进入wordpress文件夹,选择所有文件和fodlers,右键点击其中任何一个,然后移动到文件夹,并从路径中删除/WORDPRESS。就这样,如果你按照上面所有的步骤,你现在已经成功地重新安装了WordPress,并且可以安全地登录到你的wp-admin区域。由于你没有删除wp-config.php文件,网站已经连接到了数据库,由于我们留下了/uploads文件夹,所有的图片仍然在那里。因此一切显示正常。1、重新安装WordPress主题在重新安装WordPress CMS后,你需要重新安装活动的主题和所有插件。登录到你的wp-admin仪表盘,安装你正在使用的主题。确保安装一个新的主题副本,不要重复使用旧的主题文件夹,因为它可能包含有毒的文件。2、重新安装WordPress插件对于WordPress插件也是如此,需要重新安装所有的插件,记住不要再使用旧的文件。如果你不确定你用过哪些插件,在第一次次打开插件页面后,你会看到错误信息,说明所有的插件都被删除了,因为它们的文件夹已经不存在了。你可以使用该列表作为参考,重新安装错误信息中的所有插件。在安装完所有WordPress主题和插件后,你可能需要重新配置一些插件。最后,再次打开你的网站,重新检查是否一切正常。五、如何进一步提高WordPress的安全性在清理和重新安装WordPress之后,有必要进一步提高WordPress的整体安全性,以避免问题在未来再次出现。这些是一些广泛推荐的WordPress网站的安全措施:获得一个安全防御的主机配置一个安全插件限制对仪表板的访问自动更新WordPress安排远程备份1、主机空间一个安全防御的主机是任何网站安全的必备条件。你可以使你的WordPress网站刀枪不入,但如果有人可以访问你的主机账户,上传恶意文件,并以你的名义运行shell脚本,那么这一切都可能是徒劳的。从你的主机面板(cPanel),你可以进一步使用.htaccess和wp-config.php配置文件和权限加强你的WordPress安装。a、修改权限你可以从cPanel的文件管理器中查看文件夹和文件的权限,对于WordPress,建议使用以下权限:/ 0755wp-includes 0755wp-admin 0755  wp-admin/js 0755wp-content 0755wp-content/themes 0755wp-content/plugins 0755wp-content/uploads 0755wp-config.php 0400  .htaccess 0444双击该权限以改变它。而如果你有对服务器(SSH)或cPanel终端的root权限,你可以运行以下命令。find . -type d -exec chmod 0755 {} ; # set all folders to 755 find . -type f -exec chmod 0644 {} ; # set all files to 644b、更改密码考虑在所有被感染的文件被清理后,更改你的主机账户的密码。更改WordPress管理密码删除所有其他管理员用户更改FTP密码(对于cPanel上的主FTP账户,密码与cPanel账户相同)。更改MySQL密码(确保替换wp-config.php文件内的密码)。c、重新生成SaltsWordPress使用 “Salts”–随机生成的哈希值来存储和验证用户的cookies。要注销所有的WordPress用户,你可以在wp-config.php文件中替换当前的salts。你可以在这里生成新的Salts:https://api.wordpress.org/secret-key/1.1/salt/2、设置安全插件WordPress有很多额外的功能需要被阻止,因为它们被广泛用于黑客攻击的目的。这些功能之一是XML-RPC,如今主要用于暴力攻击和字典型攻击。经过多年的使用,我个人推荐iThemes安全插件,除此之外,它还可以做以下事情。限制或完全阻止对xmlrpc.php的访问记录所有的登录尝试和其他用户活动使用.htaccess文件限制访问(基于网站的防火墙)。强制使用强密码和2FA安排远程数据库备份安装iThemes安全插件后,你会看到一个针对你网站的安全建议列表。除了激活这些推荐功能外,我还建议打开以下模块。404检测文件更改检测SSL这些模块不需要任何特殊的配置,只需开箱即用,但以下模块应进行额外配置:系统调整WordPress的调整我建议打开这两个模块的所有功能,但请记住,你所禁用的一些功能可能是其他插件(如JetBackup和ContactForm7)所需要的,所以事后要检查它们的功能,并确保一切都按预期进行。3、限制对wp-admin的访问WordPress最常见的安全建议是完全禁止访问或至少隐藏/wp-admin和wp-login.php页面。WPS隐藏登录是一个简单的WordPress插件,它就是这样做的:重命名登录URL并将所有请求重定向到wp-admin仪表板。4、定时更新始终使用最新版本的WordPress,自动/更新所有的插件,并在新版本推出后立即定期更新主题删除所有你不使用的WordPress主题和插件。这些插件几乎从不更新,这可能导致严重的安全问题。永远不要,我重复,永远不要使用无效的高级WordPress主题和插件–因为它们带有后门和恶意软件。5、定时备份备份是超级重要的,因为它们可以为你节省大量的时间和金钱永远不要把备份放在与你的网站相同的位置上!在清理你的WordPress网站时,重要的是不要跳过任何步骤,不管它看起来多么小和微不足道。跳过任何一个步骤,你就有可能再次给黑客留下一个入口。六、附带说明:如何删除 “前方有欺骗性网站 “的警告如果谷歌在对你的网站进行定期扫描时检测到你的网站上有钓鱼或恶意软件的内容,这肯定会损害你的搜索排名,但也会向所有访问者显示 “前方有欺骗性网站 “的警告。以下是关于如何向谷歌申请审查的指南: https://developers.google.com/web/fundamentals/security/hacked/request_review提交审查请求后,如果谷歌确认您的网站不再包含任何恶意软件或钓鱼网站内容,您将收到一封电子邮件,说明前面的欺骗性网站已被删除。
THE END