WordPress开发团队非常重视WordPress的安全性。他们经常发布安全补丁和升级,以确保 WordPress 与日益严峻的网络环境保持同步。作为这些努力的一部分,WordPress 实施了负责任的漏洞披露计划,因此这些问题不会得不到解决。
除了 WordPress 开发团队的努力之外,个人用户也应该采取措施将安全风险降到最低,这通常被称为 "加固 WordPress"。我们在最近的一篇文章《如何保证 WordPress 的安全》中介绍了这些易于实施的步骤:基础知识。
除了基本步骤外,还可以采用更高级的安全技术来进一步确保 WordPress 网站的安全,以及在管理 WordPress 网站时重要的安全注意事项。
让我们深入了解其中的几种。
SFTP - 连接到服务器
首先,必须确保在连接网络服务器时使用 SFTP,它与 FTP 相似,但密码和其他数据在您和服务器之间传输时是加密的。FileZilla 是一款出色的文件传输应用程序,支持多种文件传输协议,包括 SFTP。您可以在此处了解如何使用 FileZilla 安装和传输文件到 Linode。
防止暴力攻击
当攻击者反复系统地提交不同的用户名和密码以尝试访问网站时,就会发生暴力攻击。值得注意的是,暴力破解攻击并非 WordPress 独有的问题。每个网络应用程序都可能受到攻击。
抵御此类攻击的第一道防线就是确保密码安全。暴力攻击的最终目的是进入您的网站。 我们在上一篇关于保护 WordPress 安全的文章中讨论过如何选择一个难以破解的密码,所以我们就不再详细讨论了。只要确保您的密码是一个好密码就足够了。此外,在 WordPress 实例中启用两步验证也很有必要。
接下来,使用插件限制网站的连续登录尝试次数。Limit Login Attempts Reloaded 是一个广受欢迎的插件,下载量已超过 100 万次。它可以限制通过正常登录、XMLRPC、WooCommerce 和自定义登录页面尝试登录的次数。
另一种方法是更改 wp-admin 登录位置。默认情况下,所有 WordPress 网站的登录页面都位于/wp-admin(如 www.examplesite.com/wp-admin)。实施暴力攻击的僵尸通常会立即将目标锁定在这个页面上。使用WPS 隐藏登录来提供帮助。
与往常一样,在安装新的和未经测试的插件之前,最好 先对网站进行备份。虽然大多数流行插件不会对你的网站造成损害,但总有不兼容的可能。备份可以让您高枕无忧,因为错误插件造成的任何损害都可以快速轻松地恢复。
WordPress 管理员 HTTP 身份验证
您可以通过添加基本 HTTP 身份验证进一步锁定您的 WP 管理。这一过程要求用户在进入 WP 登录页面前输入用户名和密码,这有助于阻止暴力机器人的入侵。
为此,您需要创建一个.htpasswd文件。请尝试使用Hosting Canada提供的免费资源。你需要输入用户名和密码,从下拉框中选择加密方法,然后点击 "生成密码"。这时会生成一个长文本字符串。将其复制并粘贴到一个新的文本文件中。将该文件保存为".htpasswd"。
接下来,登录服务器,进入 WordPress wp-admin 文件夹。打开并在 wp-admin 中新建一个名为 "htpasswd "的文件夹。然后将我们之前创建的 .htpasswd 文件上传到该文件夹。您必须仅使用 "ASCII "模式而非 "二进制 "模式传输文件。
最后阶段是创建一个包含以下内容的新文件:
AuthName "Admins Only"
AuthUserFile /home/public_html/wp-admin/htpasswd/.htpasswd
AuthType basic
Require user yourusername
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
您需要用 .htpasswd 文件的完整目录 URL 以及您在 .htpasswd 文件中使用的用户名更新AuthUserFile位置。将此文件保存为 .htaccess,然后将此 .htaccess 文件上传到服务器上的 wp-admin 文件夹,就这样。下次登录网站 www.examplesite.com/wp-admin 时,WordPress 管理员登录界面会提示您输入用户名和密码。
实用提示:如果您不知道 .htpasswd 文件的完整目录网址,可以使用一个小的 PHP 脚本:
<?php
echo "Absolute path: ", getcwd();
?>
创建一个包含该脚本的文件,名为 testpath.php,并将其上传到 htpasswd 文件,然后访问该网址(如 www.example.com/wp-admin/htpasswd/testpath.php),获取 .passwd 文件的完整文件路径。
保护 wp-includes
WordPress 安装程序中包含一些特定的脚本,这些脚本是不允许访问的。不过,它们确实为黑客进入您的网站提供了可能的途径。因此,值得对它们进行锁定。您可以在 .htaccess 文件中使用 mod_rewrite 阻止访问这些文件。为此,请在 .htaccess 文件(通常位于 WordPress 网站的文档根目录)的 # BEGIN WordPress 和 # END WordPress 标记之外添加以下代码;否则,WordPress 可能会覆盖这些代码:
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress
禁用文件编辑
确保 WordPress 网站安全的很多方面都是为了给潜在的黑客增加难度。就像小偷会在没有警铃或安全灯的街道上寻找房子一样,黑客更喜欢攻击缺乏基本安全功能的网站,而不是那些门窗紧闭的网站。
默认情况下,WordPress 允许管理员在控制面板中编辑主题和插件等 PHP 文件。由于这一功能允许执行代码,因此很容易成为黑客攻击的目标。对于大多数网络开发人员来说,修改代码都是通过Sublime等文本编辑器而不是控制面板来完成的。因此,"闩锁 "这个特殊的 WordPress 窗口是很有意义的,这样做还可以消除黑客的另一个潜在访问点。
为此,请在 wp-config.php 文件中加入这行代码。这行代码将删除所有用户的 "编辑主题"、"编辑插件 "和 "编辑文件 "功能:
define(‘DISALLOW_FILE_EDIT’, true);
虽然这无法阻止黑客将恶意文件上传到你的网站,但它有助于阻止一些攻击。
使用防火墙
防火墙是防止攻击者进入 WordPress 网站的绝佳方法。有几种选择:
防火墙插件
一些优秀的防火墙插件可以在 WordPress 处理之前在Apache 服务器级别限制访问。All In One WP Security & Firewall或 WordFence 就是一个很好的例子。这两个插件都可以过滤传入的请求,确保没有恶意流量访问您的 WordPress。
中间防火墙
WordFence 等插件可在服务器级别过滤流量。另一种方法是在流量到达服务器的途中进行拦截,然后使用Cloudflare 等产品将请求发送到服务器。这种方法很受欢迎,因为您只需修改 DNS 记录,通过中介发送流量,无需更改服务器。
下一步工作
WordPress 安全仍然是一个热门话题。如果所有这些看起来都很辛苦,那么可以考虑使用像Pressidium 这样的 WordPress 托管服务,它可以为您完成很多繁重的工作。最后,定期备份您的网站,这样您就可以在晚上睡个好觉,因为您知道您可以随时恢复您的网站。
评论 (2)
Excellent tips. Strong password and using limit login attempts are the quick fix for any WP blog. Being in the same industry I would like to add one more tip – use only trusted and highly rated themes and plugins.
A good password is great. Also, hiding or changing the wp-admin slug is really helps.