如何保障WordPress网站的安全系列文章连载(十一)
2018-09-06

走得更远

到目前为止,我们已经介绍了大多数人可以采取的措施来帮助保持WordPress的安全。到目前为止,我们看到的大多数技术几乎不需要修改任何文件或代码。进一步提高安全性通常需要更改您的站点,文件,代码等。

对于需要对您的网站进行更改的安全技术,考虑投资回报率非常重要。一个很好的例子是使用.htaccess保护/ wp-admin /目录的做法。当然这听起来是个好主意,甚至可能提供一些额外的安全性,但插件和主题问题的可能性使它成为你可能想要避免的东西。IMO,头痛不值得。

有许多这样的例子,承诺的安全利益根本不值得冒险。所以我最好的建议是坚持以下技术:

  • 易于实施
  • 不是过度侵入
  • 不承担额外风险

考虑到这些因素,以下是一些额外的安全技术,旨在以最小的风险,最小的工作量和最少的站点更改量提供额外的安全层。

验证密钥

在WordPress wp-config.php文件中,确保在“Authentication Unique Keys and Salts”部分添加一些强大的随机安全密钥。添加这些身份验证密钥有助于提高WordPress登录例程的安全性,强烈建议使用。

请注意,您可以随时添加,更改或编辑这些密钥,除了使任何现有cookie无效外,不会造成任何损害。因此,如果/当您更改密钥时,基本上可能发生的最坏情况是任何已登录的用户都必须再次登录。没什么大不了的。

要生成一组强大的随机盐,请访问https://api.wordpress.org/secret-key/1.1/salt/上的官方页面。然后复制并粘贴到配置文件中,上传到服务器,然后完成。

禁用目录视图

目录视图是目录中不存在索引文件时发生的情况。在这种情况下,可以按通用列表显示的方式查看所有文件。在某些情况下,目录视图可能很有用(例如在共享照片或视频时),但通常应禁用它们。

默认情况下,WordPress在整个WP核心的各个目录中包含空白的index.php文件,并且一些插件和主题也包含它们。这是禁用目录视图的良好开端,但可能有一些插件或主题不包含任何索引文件。这可能会使您的文件暴露并可能容易受到攻击。

在正确配置的服务器上,应该禁用目录视图,但如果没有,或者如果您只想进行双重确认,则可以在站点的根.htaccess文件中包含以下行:

Options -Indexes

有关更多信息,请查看有关在Perishable Press上禁用和自定义目录视图的这篇深入文章。

更改默认数据库前缀

安装WordPress时,它使用默认前缀wp_设置数据库表。此值在wp-config.php文件中设置,并且可以在安装WordPress之前轻松自定义。在安装WordPress之后这样做是可能的,但是需要一些额外的小动作,你可能觉得乏味且不值得努力。

将数据库前缀更改为除默认值之外的任何内容都会增加另一个针对SQL相关攻击的薄层保护,这些攻击通常通过默认前缀wp_来定位数据库。因此,通过将该值更改为其他任何内容,即使是像wp__这样简单的内容(添加另一个下划线),您也可以阻止99.9%的攻击通过默认前缀值进行定位。

因此,对于任何未来的WordPress安装,请打开wp-config.php并找到变量$ table_prefix。然后将它改为不同的,随机的,如sitename_wp_或wp或任何适合你的东西。有关更多信息和一些有用的提示,请查看DigWP.com上的更改数据库前缀以提高安全性。

保护登录页面

开箱即用,WordPress登录页面允许任何有权访问的人输入凭据并尝试登录。这种开放性对于合法用户来说非常好,但它也会引发不可避免的暴力登录攻击4。如前所述,如果您和所有注册用户都选择了强密码,那么没有理由担心任何问题。但是,如果您不是100%确定您网站上使用的所有密码,您可能需要采取一些措施来保护登录页面免受未来的攻击。这样做有很多策略:

  • 使用插件保护登录页面
  • 实施双因素身份验证
  • 实施HTTP身份验证
  • 白名单IP地址(见下文)

这些技术中的任何一种都有助于保护您的WordPress登录页面,因此请进行一些研究并找到满足您需求的最佳解决方案。就个人而言,对于我是唯一作者的网站,我喜欢添加一小段.htaccess来锁定内容:

Order Deny,Allow
Deny from all
Allow from 123.456.789

这个简单的代码片段将允许您访问登录页面,同时拒绝访问其他所有人。您可以根据需要多次重复“允许来自”行,将其他IP地址列入白名单。使用此代码段的关键是必须将其添加到.htaccess文件中,该文件位于与wp-login.php相同的目录中(即根WordPress目录)。这要么位于您网站的根目录中,要么位于包含所有WordPress文件的子目录中。

保护wp-config.php

您的WordPress安装中包含的最敏感文件之一是wp-config.php。这是因为配置文件包含您的数据库连接凭据,这将使攻击者真正拥有和/或销毁您的整个站点。在正确配置的服务器上,任何外部访问都应该无法访问wp-config.php文件。

但是,如果您不确定,或者只是想添加另一层保护以使其更加安全,这里有一个快速的.htaccess片段,可以保护您的配置文件免受所有外部访问:

<Files wp-config.php>
    Order Allow,Deny
    Deny from all
</Files>

作为奖励,我也喜欢锁定xmlrpc.php文件:

<Files xmlrpc.php>
    Order Allow,Deny
    Deny from all
</Files>

这些代码片段中的任何一个都应该放在位于根WordPress目录中的.htaccess文件中(即,包含wp-config.php和xmlrpc.php文件的同一目录)。您可能还想查看我们关于xmlrpc.php和站点安全性的教程,以获取有关保护xmlrpc.php的更多信息。

注意:虽然所有站点都可以保护wp-config.php文件,但是如果您确定不使用它,则应该只保护xmlrpc.php文件。

禁用文件编辑

默认情况下,WordPress允许管理员级用户在WP管理区域内(在“外观”>“编辑器”下)编辑插件和主题文件。我想禁用此功能以帮助包含任何安全漏洞,也因为我从不使用它。要在管理区域内禁用文件编辑,请将此行添加到站点的wp-config.php文件中:

define('DISALLOW_FILE_EDIT',true);

将此行放在wp-config.php中相当于删除所有用户的edit_themes,edit_plugins和edit_files功能。

有关更好的wp-config.php技巧,请查看DigWP.com和WP-Mix.com上的这些精彩文章:

Pimp your wp-config.php
Optimize WordPress Performance with the wp-config.php File
WordPress Configuration Tricks
WordPress wp-config.php tricks

记得在编辑之前备份你的wp-config.php 🙂

添加强防火墙

万一你无法分辨,我的一个激情就是网络安全。我写了一个名为Block Bad Queries(BBQ)的插件,它是100%免费的,超过50,000名用户使用它来帮助保护他们的WordPress网站。免费的BBQ插件功能强大,简单易用,但没有UI可以进行更改和微调。所以我开发了BBQ Pro,它具有先进的保护功能,可完全自定义。BBQ Pro轻巧,灵活,快速。

当然,我有偏见,因为这是我自己的插件,但这里值得一提,因为它完全符合本文所倡导的整体安全策略。

更安全

如果你已经做到这一点,恭喜你。我们已经介绍了许多非常棒的安全技术,以帮助您保持WordPress网站的安全。更进一步,我建议检查一些选择.htaccess技术。.htaccess技术很棒,因为它们在服务器级别运行而不需要PHP或MySQL,因此您可以在保持最佳性能水平的同时添加特定的安全层。

要了解有关使用.htaccess保护和优化您的网站的更多信息,请查看我的书.htaccess变得简单。在那里,你会找到一个完整的.htaccess指南和一个很棒的.htaccess技术的宝库。

有关WordPress安全技术的更深入的教程,请查看我在Lynda.com上关于保护WordPress站点的视频截屏系列。

相关知识