前言:WordPress的安全是每个站长都非常关心的话题。搜索引擎(如谷歌)每天都会将大约10000多个网站列入恶意软件的黑名单,每周都会将大约50000个网站列入网络钓鱼的黑名单。
在本文中,我将介绍我在工作中使用的各类WordPress安全防护策略,以帮助大家保护自己的网站免受黑客和恶意软件的侵害。
虽然WordPress的核心代码是非常安全的,而且它由数百名开发人员定期审核,但我们还是有很多其他措施来进一步保证WordPress网站安全。因为安全不仅仅意味着消除风险,它也意味着降低风险。
1. WordPress安全基础配置
1.1. 保持WordPress的更新
WordPress是一个开源软件,会定期维护和更新。默认情况下,WordPress会自动安装次要更新。对于主要版本,我们需要手动启动更新。同时,WordPress也有成千上万的插件和主题。这些插件和主题由第三方开发者维护,他们也会定期发布更新。
WordPress更新对网站的安全性和稳定性至关重要。因为无论是WordPress开发团队还是第三方插件和主题的开发者,他们都会在新版本中修复bugs以及安全漏洞。所以我们需要确保WordPress本身、插件和主题是最新的。
1.2. 设置强密码和用户权限
最常见的WordPress黑客攻击方式就是黑客试图破解网站密码。不仅仅是WordPress管理员账户,还包括FTP账户、数据库、WordPress托管账户,以及使用网站域名的自定义电子邮件地址。
我自己作为一个WordPress开发者,我在开发过程中常常会使用admin/admin或者admin/123这样的用户密码组合。这样做的原因很简单,因为我们在开发过程中需要频繁的登录WordPress后台来编辑网站,但是在我们上线网站之前,一定需要设置强密码,甚至避免使用admin这样的用户名,以防止被黑客破解。
另一种降低风险的方法是,尽量减少WordPress管理账户的数量。如果我们有一个庞大的管理团队或作者团队,那么尽量使用WordPress的账户角色来给与团队成员相应的权限,而非将他们都设成管理员。
1.3. WordPress服务器
WordPress托管服务在WordPress网站的安全性中扮演着最重要的角色。一个好的共享主机提供商,会采取额外的措施来保护他们的服务器免受常见的威胁。
以下是一个好的虚拟主机公司如何在后台工作以保护您的网站和数据。
提供商会持续监控网络中的可疑活动。
提供商会有防止大规模DDOS攻击策略。
他们保持他们的服务器软件,php版本,和硬件更新,以防止黑客利用已知的安全漏洞。
他们有灾难恢复计划,使他们能够在重大事故的情况下保护你的数据。
在共享主机这种模式中,我们的网站会与许多其他客户共享服务器资源。这会造成跨站点污染的风险,黑客可以通过入侵相同服务器上其他的网站来攻击我们的网站。
因此在使用WordPress托管服务时。我们需要选择一个优秀的管理型WordPress托管服务商,他们往往会提供自动备份、自动更新WordPress,以及更先进的安全配置来保护我们的网站。
2. WordPress安全策略 -- 站长篇
2.1. 安装WordPress备份插件
备份是抵御任何WordPress攻击的第一道防线。请记住,没有什么是100%安全的。如果政府网站可以被黑客攻击,那么我们的网站也可以。
备份可以让我们在网站受到入侵的情况下,迅速恢复WordPress网站。
在插件商店里,有很多免费或者付费的备份插件。其中最重要的是,我们必须定期将全站备份保存到其他位置,我们可以下载备份文件到我们的存储设备上,或者其他服务器上。但请不要将备份文件与网站本身放在一起。
根据网站的更新频率,我们可以设置不同的备份频率,来最大程度减少丢失数据的可能。
2.2. 安装WordPress安全插件
安全插件可以帮助我们抵御未授权的登录以及修改文件操作。同时,它们可以扫描WordPress可执行文件(如php文件),检查这些文件是否被黑客加入其它可疑代码。
此外,大部分安全插件提供登录提醒功能。当有人登录我们的网站时,安全插件会记录下它们的登录时间以及IP地址等信息,以邮件的形式发给我们。
2.3. 使用SSL/HTTPS协议
SSL协议可以加密网站和用户浏览器之间的数据传输。这种加密方式使人更难窃取网站信息。
一个名为Let's Encrypt的非营利组织为网站所有者提供免费的SSL证书。他们的项目得到了Google Chrome、Facebook、Mozilla以及更多公司的支持。我们可以登陆Let's Encrypt官网来获取免费SSL证书。
此外许多服务托管公司都为我们的WordPress网站提供免费的SSL证书。
3. WordPress安全策略 -- 开发者篇
3.1. 禁用文件编辑功能
WordPress自带一个内置的代码编辑器,允许我们WordPress管理区编辑您的主题和插件文件。在错误的人手中,这个功能可能是一个安全风险,这就是为什么我们建议关闭它。
您可以在您的wp-config.php文件中任何位置添加以下代码来轻松实现。
define( 'DISALLOW_FILE_EDIT', true );
3.2. 在特定的WordPress目录中禁用PHP文件的执行
另一个加强WordPress安全的方法是禁止在不需要的目录中执行PHP文件,比如/wp-content/uploads/。
我们可以通过打开像记事本这样的文本编辑器并粘贴以下代码来实现。
<Files *.php>
deny from all
</Files>
接下来,我们需要将这个文件保存为.htaccess,并使用FTP将其上传到您网站上的/wp-content/uploads/文件夹。
我会在后续文章中详细讲解WordPress的.htaccess配置策略。
3.3. 限制登录尝试次数
默认情况下,WordPress允许用户尝试登录,次数不限。这使我们的WordPress网站容易受到攻击。黑客可以通过尝试用不同的组合登录来破解密码。
通过限制用户可以进行的失败登录尝试,可以很容易地解决这个问题。如果你使用的是前面提到的安全插件,那么这一点会自动得到解决。因为大部分插件都会限制用户失败登录的次数。
但是,如果你没有设置安全插件,那么我们需要安装并激活Login LockDown插件。它可以为我们限制用户登录失败次数。
3.4. 更改WordPress数据库前缀
默认情况下,WordPress使用wp_作为您WordPress数据库中所有表的前缀。如果您的WordPress网站使用的是默认的数据库前缀,那么就会让黑客更容易猜到您的表名是什么。这就是为什么我们建议更改它。
我们可以在wp-config.php文件中添加或修改如下变量的值来给数据库设置一个不同的前缀。
$table_prefix = 'wp_myprefix_';
此外,我会在今后的文章中详细介绍其他修改方式。
3.5. 用密码保护WordPress管理和登录页面
通常情况下,黑客可以无限制地请求你的wp-admin文件夹和登录页面。这使得他们可以尝试他们的黑客技巧或运行DDoS攻击。
您可以在服务器端添加额外的密码保护,这将有效阻止这些请求。
首先创建一个.htpasswds文件。把这个文件上传到你的/public_html/目录外。例如
home/user/.htpasswds/public_html/wp-admin/passwd/
然后,创建一个.htaccess文件并上传到/wp-admin/目录下。然后在其中添加以下代码。
AuthName "Admins Only"
AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/passwd
AuthGroupFile /dev/null
AuthType basic
require user putyourusernamehere
这里,请更新你的用户名。另外,别忘了更新AuthUserFile的路径。此外,我会在今后文章中详细介绍如何配置管理页面密码保护功能。
3.6. 禁用目录索引和浏览
目录浏览可以被黑客利用,找出你是否有已知漏洞的文件,这样他们就可以利用这些文件获得访问权。
目录浏览也可以被其他人用来查看你的文件,复制图片,找出你的目录结构和其他信息。这就是为什么强烈建议你关闭目录索引和浏览的原因。
你需要使用FTP或cPanel的文件管理器连接到你的网站。接下来,在你的网站的根目录中找到.htaccess文件。之后,您需要在.htaccess文件的最后添加以下一行。
Options -Indexes
不要忘记保存并上传.htaccess文件到我们的网站。关于这个主题的更多信息,请看我们关于如何在WordPress中禁用目录浏览的文章。
3.7. 在WordPress中禁用XML-RPC
XML-RPC在WordPress 3.5以上版本中被默认启用,因为它有助于将您的WordPress网站与Web和移动应用程序连接起来。
由于其强大的特性,XML-RPC可以显著放大蛮力攻击。
例如,如果一个黑客想在你的网站上尝试500个不同的密码,他们将不得不进行500次单独的登录尝试,而这些尝试将被登录锁定插件捕获和阻止。
但是使用XML-RPC,黑客可以使用system.multicall函数来尝试成千上万个密码,比如说20或50个请求。
这就是为什么如果你没有使用XML-RPC,那么我们建议你禁用它。
我们可以在网站public_html目录下的.htaccess文件添加如下代码来禁用此功能。
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from 123.123.123.123
</Files>
3.8. 自动注销WordPress中的闲置用户
已登录的用户有时会离开屏幕,这就带来了安全风险。有人可以劫持他们的会话,更改密码,或者对他们的账户进行修改。
这就是为什么许多银行和金融网站会自动注销不活跃的用户。您也可以在您的WordPress网站上实现类似的功能。
您需要安装并激活Inactive Logout插件。激活后,访问设置 " 非活跃登出页面配置插件设置。
只需设置时间长短和添加注销信息即可。不要忘记点击保存更改按钮来保存您的设置。
这些就是目前常用的WordPress安全配置策略。我会在今后的文章中针对其中具体问题分别进行讲解。
开发者可以根据网站类型,以及实际需求有选择性的采用其中一种或多种方案来保护我们的网站。
--阅读更多文章,请关注我的公众号:未定义变量