WordPress是一个功能强大的内容发布平台,但它始终无法完全避免黑客、垃圾信息等恶意攻击对WordPress文件的威胁。

WordPress的开源性决定了WordPress遭到恶意攻击的可能性较大,黑客们能够轻易获取该项目的源代码并寻找安全漏洞。 幸好我们还可以通过各种方式来为自己的WordPress网站添加安全防护层。 本文向大家介绍了一些用来保护WordPress网站的小技巧和修改方法,避免网站遭到恶意攻击。

 

1. 定期备份MySQL数据库

备份网站资料和数据库非常重要。 我们可以定期以.sql文件格式导出MySQL数据,进行备份,把导出的文件保存到安全的地方。

推荐每天备份一次数据库。即使我们不常更新网站,但也可能随时收到用户评论和引用通告。 但手动备份实在有些无聊,而且有时我们还可能忘记备份, 这时就可以利用插件进行自动备份了。

这里介绍一款 WordPress Database Backup自动备份插件, 用户可以选择 WordPress Database Backup提供的备份周期(包括每小时、每天、每星期、每月等周期)进行资料备份。 备份过后即使数据库被破坏,我们也可以用备份资料来还原数据库。 目前市面上有很多数据库自动备份工具,我们要根据自己的需求选择合适的工具。

 

2. 为wp-admin文件添加多重保护

wp-admin文件是WordPress中非常重要的文件,所有关于管理页面的文件都存放在wp-admin文件中。 如果wp-admin文件安全受到威胁,后果会很严重,不仅WordPress安装文件会被破坏,域名上的其它信息也会受到影响。

我们可以用几种方法来锁定wp-admin文件,以免wp-admin文件遭到攻击。 其中一个方法是通过.htaccess文件(供Apache网络服务器)限制可以访问wp-admin的IP地址,降低遭到攻击的风险。 使用其它类型web服务器(比如IIS,IIS配有一个即开即用的GUI)的用户也需要为wp-admin文件设置相同的访问权限。

首先要在我们常用的文本编辑器或源代码编辑器中新建一个空白文件(Windows Notepad这样简单的文本编辑器同样奏效)。 以.htaccess为扩展名保存新建文件。
我们可以在.htaccess文件中放入以下代码:

order deny, allow
allow from 123.456.78 #Your IP Address
deny from all

然后把文件保存到wp-admin文件夹中。

这种方法相对简单,的确也加强了wp-admin文件的安全性,但如果我们在不同地方操作(于是IP地址也会不同),这种方法就不太方便了。

我们还可以用AskApachePasswordProtect插件来保护WordPress的管理文件。 这款插件能够提供多种安全防护措施,比如访问任何管理页面都需要用户名和密码, 自动编写.htaccess文件(对不熟悉Apache服务器访问权限的用户来说,这的确非常有用)等。

查看Apache上关于使用身份验证、许可验证以及访问权限的文件,了解如何锁定各种文件。

 

3. 不要公开所用的WordPress版本号

很多WordPress开发人员会在源代码里显示当前WordPress版本。 恶意攻击者可以根据公布的版本号对已知的安全漏洞发起攻击。 因此我们最好从源代码中删除WordPress版本信息。 首先在主题的header.php文件中查找关于类似以下代码段的代码,找到后将代码删除:

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
<!-– leave this for stats please -->

如果我们找不到类似的代码,并且仍然在查看网站源码的meta生成器标签,可以试着在<head>标签中查找一个PHP函数调用:

<?php wp_head(); ?>

将这个函数的输出结果进行硬编码,因为输出结果不会再改变,我们可以把输出结果存入主题文件。 默认情况下,这个函数会在HTML源代码中输出以下代码:

<link rel="EditURI" type="application/rsd+xml" title="RSD"
    href="http://example.com/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml"
    href="http://example.com/wp-includes/wlwmanifest.xml" />
<meta name="generator" content="WordPress #versionnumber" />

只要对前面两行代码进行硬编码(如果必要的话)。 这种方法还减少了服务器的系统开销。

 

4. 及时更新WordPress版本

WordPress是个开源平台,所以从源代码中寻找安全漏洞是件很容易的事。 为了保证我们使用的WordPress是最安全的,一旦有稳定的WordPress版本发布,我们就应该及时更新。

 

5. 用户名不要使用默认的“admin”(如果可以,最好删除”admin”用户)

安装WordPress时会自动生成一个名为admin、具有管理权限的用户

黑客会使用暴力破解法尝试破解我们的用户名和密码,如果不以admin为用户名,密码被破解的机率会降低很多。 相对于降低admin的许可权限,修改或删除admin是一个更好的方法。

要删除admin用户,首先要在WordPress控制板中创建一个具有管理权限的新用户。为新用户命名时最好选用不易被猜到的名称。 创建新用户后就可以删除admin用户了。

为了防止遭到暴力破解攻击,我们最好安装一款Login Lockdown Plugin插件。这款插件可以记录WordPress网站尝试登陆失败的所有IP地址和时间。 如果短期内某个IP地址登陆失败超过一定次数,该插件会封锁这个IP地址并不再允许来自这个IP地址的登录尝试。 用户可以自行设定尝试登陆的次数。

 

6. 加密WordPress相关cookies

加密存储在WordPress cookies中的信息也可以巩固WordPress的安全性。我们可以用WordPress密钥生成工具来进行加密。 从密钥生成工具中获取随机生成的代码,将代码复制到wp-config.php文件中。 这样黑客就不能轻易通过cookie劫持访问我们的WordPress管理界面了。

 

7. 使用安全级别较高的密码

使用较为复杂的密码是最有效的保护措施之一。 网络上有很多工具可以测试密码强度。

例如Microsoft网站上有一个叫做Password checker的、基于网络的免费密码强度测试工具。 WordPress也有一个内置的密码强度测试器 。

 

8. 更改WordPress数据库默认表前缀

默认情况下,WordPress用wp_作为MySQL数据库的表前缀。 为了防止SQL遭到攻击,我们最好更改默认的表前缀

可以使用数字或字母作为WordPress的表前缀。

我们可以在 wp-config.php文件中改变表前缀的值来更改表前缀。

$table_prefix = 'wp_';

注意,如果我们之前已经安装了WordPress,这时就需要将数据库的表名改成我们在wp-config.php中指定的前缀,此外还要修改options表里部分值(方法见此),否则我们的网站会停止运行。

 

9. 为WordPress文件规定正确的文件许可权限

我们要确保服务器上所有文件都具有正确的访问权限。 对于那些可以公开访问的文件,不推荐文件具备写入权限。但有些WordPress插件要求某些文件和文件夹是可以被写入的。

尽量为所有安装文件都设定最严格的许可权限。 通常我们可以将文件权限设为644(表示只读文件)

权限是777(任何人都可以阅读、写入、执行该文件)的文件很容易成为攻击目标。

我们可以用WP-Scan插件来监测自己的网站是否有风险。 这款插件可以扫描WordPress博客中的文件权限相关漏洞。

 

10. 限制搜索引擎对网站内容的索引范围

我们不必将整个网站都纳入搜索引擎的索引范围(黑客可以通过高级搜索语句从搜索引擎中找到各个网站的敏感文件)。

为了避免类似情况发生,我们可以规定搜索引擎爬虫只能够索引域名上的相关文件和文件夹。

在下面的例子中,我们告诉搜索引擎,不能引用所有以/wp-为前缀的文件(例如wp-login.php)中的内容。

Disallow: /wp-*

 

11. 访问WordPress管理界面时使用安全连接

我们可以通过加密的SSL连接来登录WordPress控制板, 不过首先要看看虚拟主机商有没有为我们提供SSL证书。 大多数情况下我们需要购买SSL证书,幸好SSL证书价格不算高,而且是物有所值的。

能够进行SSL连接后,我们就可以在相关的管理界面和管理功能中使用SSL连接了,访问管理界面时也可以用https://而不是http://。 不过要达到以上效果,我们首先要在 wp-config.php文件中插入以下代码:

define('FORCE_SSL_ADMIN', true);

 

12. 限制所有人对wp-config.php文件的访问

从上面的介绍中我们不难发现,wp-config.php文件是WordPress安装文件的内部组成部分。 该文件中包含数据库用户名、密码等敏感信息。

在Apache服务器中,我们可以通过.htaccess指令来锁定其他人对wp-config文件的访问权限。

下面的代码可以作为我们的使用范本。

<files wp-config.php>
  Order deny,allow
  deny from all
</files>

另外我们还可以把wp-config.php文件移到默认安装文件的上一级目录中。 这听起来有点奇怪,不过根据WordPress官方手册中“提高WordPress安全性”一文中的说法,这种做法可以降低安全风险。

 

 

参考推荐

WordPress 判断用户角色和权限以及管理员

WordPress 安全隐藏 wp-login.php 后台登陆入口

WordPress 修改后台登录地址提高安全性

Centos7 配置 sendmail、postfix 端口号25、465