获取报价

529501683@qq.com 微信扣扣同号

联系我帮您解决你的网站安全问题,请点击最左侧获取报价!!!

WordPress安全防护指南:确保登录和会话的安全

继续上一章关于WordPress安全防护指南:防护网站的文件和数据库的相关介绍的后续信息,本章我将诠释关于WordPress安全防护指南的事中防护策略,具体看如下目录结构。

激活并强制使用HTTPS

到目前为止一个对外的普通个人网站一般都是推荐使用HTTPS,现在普及率已经非常高了,而且市场上存在大量免费课申请的证书途径,这样也使得普及率非常高的原因之一。

关于使用HTTPS的一些优点有很多,其中一个重要优点是HTTPS协议在用户和服务器之间创建了一个安全连接,消除了可能发生的中间人攻击。这些攻击发生在中间服务篡改或获取两端之间交换的信息时候。这就是为什么我们对所有敏感信息使用HTTPS加密。

  • 网站使用HTTPS的方式
    • 要在网站上使用HTTPS协议,需要在Web服务器上安装SSL证书,并在WP后台管理面板中更改URL地址,这里说的更改URL就是后台管理设置的位置,在对应位置将原来网站的http改成https。
    • 使用证书,推荐使用免费的:Let’s Encrypt SSL certificates
    • 有一些插件也会提供此类功能,推荐Siteground官方提供的优化插件。
  • 在配置好一个有效的SSL证书之后,可以通过插件强制启用HTTPS,也可以通过代码的形式启用HTTPS,具体配置代码的方式是在WordPress配置文件wp-config.php中添加如下代码:
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

更改登录失败错误信息显示(禁用会话建议)

  • 在当前场景下我直白的告诉你,它的意思就是告诉你在登录WordPress网站的时候,如果登录失败,WordPress网站会提示是用户名错误还是密码错误,或者其他重要的提示,所以如果按照强安全建议标准来衡量,那么这算是个安全风险。
  • 所以要解决这个问题就是禁用此类建议,然后更改为一个通用模糊性的提示建议,目的是为了迷惑攻击者,避免攻击者通过此类提示来挖掘更多的信息。
  • 在WordPress后台找到functions.php文件,添加如下类似配置代码可进行更改:
function no_wordpress_login_errors(){
        return 'Thanks for trying but there were issues with the login.';
}

add_filter( 'login_errors', 'no_wordpress_login_errors' );

更改网站默认后台管理地址

更改网站默认后台管理地址的目的是为了防止互联网上一些程序化的机器流量,它们能够批量识别安装了WordPress网站然后使用默认的后台管理地址,然后通过用户名和密码进行暴力破解尝试,如果此时没有很强的防护措施且用户名通用,密码是弱口令,攻击者就会很容易攻击成功。

所以尝试更改WordPress默认后台管理地址非常重要,如果做了,可以减少非常大的一部分攻击流量,更改的方式可以通过插件Security Optimizer的Custom Login URL功能进行更改。

除了上面提到的Siteground插件之外还可以使用插件WPS Hide Login 对应插件下载的地址:

经过测试插件WPS Hide Login,其功能点很简单,就是在Setting-General下面增加了更改后台管理地址的选项,直接更改设置即可。

更改网站默认后台管理地址

更改为自己定义的后台地址即可,更改之后要记住,然后在浏览器URL地址追加wp-admin或者wp-login发现已经访问不了后台了,那么此时即可确认后台管理地址已经更改。

Tips:如果忘记了自己自定义的网站后台管理地址,可以通过ssh到后台禁用插件WPS Hide Login即可使用默认的后台管理地址登录。

限制登录尝试的次数

当攻击者发现已经安装WordPress的网站之后,如果能顺利的找到网站后台登录地址,那么此时它会尝试暴力破解的方式进行爆破当前网站的账号和密码,如果成功了,那么网站就会易主了 ,所以为了防护这类暴力破解攻击,可以限制登录网站后台的次数。

此类防护措施很多,可以通过插件来实现,比如:Siteground的Security Optimizer插件,它有个Limit Login Attempt功能,启用即可。

除了上述提到的插件,可以根据Limit Login关键词在WordPress官方插件地址的位置搜索,除此之外我再推荐一个插件:WPS Limit Login 和 Limit Login Attempts Reloaded。

限制登录尝试的次数
限制登录尝试的次数

使用网络防火墙封禁恶意流量 通过网络防火墙的方式从网络层面解决掉恶意攻击者访问网站,这样的好处是最优的,但是这有一个性能问题,假如你是使用服务器搭建的网站,防火墙使用服务器自带的,那么一旦开启防火墙,当攻击流量过大就会导致服务器的性能有一定的影响。

当然了,现如今使用的服务提供商,如果你购买VPS,一般服务提供商会自带防火墙功能,而且这个防火墙是使用购买的VPS自身防火墙,这样就有个好处,就是既使用了网络防火墙的功能,也对自身服务器(VPS)没有影响,所以我推荐的是如果要使用防火墙能不使用自身服务器的防火墙就不使用,尽量使用第三方的网络防火墙来解决网络层面的问题。

上述阐述的是除了服务器之外,最常用的就是虚拟主机了,如果是使用虚拟主机,那么对应的服务提供商若提供网络防火墙功能,那么直接使用即可,因为性能的问题不需要站长考虑,如果服务提供商没有提供网络防火墙功能,那么就可以在WordPress插件中使用第三方插件来解决这类问题。

默认情况下Siteground官方托管的主机服务会提供防火墙功能,所以如果使用它们的主机托管服务那就不需要考虑太多防火墙相关的问题,但是如果不是使用Siteground官方托管服务,那么可以使用一些第三方的安全插件。

主要的安全插件这里推荐口碑比较好的两个,分别是:All-In-One Security (AIOS) – Security and Firewall Wordfence Security – Firewall, Malware Scan, and Login Security

仅允许白名单IP访问后台

一般情况下,我个人就是使用这种方式来解决大部分安全相关的问题,原因就是在于操作简单易用,而且不需要侵入式设置网站自身的各种配置就能解决问题。

注意:这里提到的白名单IP是基于应用层视角来设置白名单,结果就是当有人使用非白名单IP地址访问网站的后台登录地址,会被拒绝访问,之所以这么说是因为还有网络层面的白名单IP设置,网络层面的白名单设置比应用层视角设置白名单更优。

配置IP白名单的方式如下:

  1. 一种是使用插件的方式来做,另一种是使用WordPress网站所在的中间件提供的.htaccess文件来限制。
  2. 插件使用我个人推荐使用Siteground官方出品的安全插件。
    • siteground-security
  3. 另一种就是在WordPress文件夹wp-admin下新建.htaccess文件来进行限制,添加如下代码:
order deny, allow 
deny from all 
allow from 111.222.255.255

可以写多个白名单IP地址,allow from 后面自己自身信任的真实IP地址

使用双因素认证

双因素认证,又叫双因子认证,或者再多几次认证就是叫多因素认证,这类认证的方式总体来说,就是为了更安全。

可以简单的理解为做两次认证,目的是防止你的账号密码泄露了,然后再使用动态验证码验证一次,如果是本人登录当前应用,那么可以再次通过动态验证码验证一次成功登录应用,否则即使账号密码泄露了,非本人使用账号和密码登录应用当出现二次验证的时候,非本人不能进行二次验证。

对于开启双因素认证的方式可以手动,也可以是插件,手动方式复杂一点,麻烦一点,而且容易出错,所以为了方便直接使用第三方插件的形式进行启用即可。

这里依旧推荐Siteground官方提供的插件,安装好对应插件启用插件找到开启双因素认证的按钮就可以。

使用安全HTTP Headers

使用安全的HTTP头涉及到OWASP Web安全相关的内容,具体添加代码如下:

Header set X-Frame-Options SAMEORIGIN
Header set X-Frame-Options "ALLOW-FROM https://example.com/"
Header set X-XSS-Protection "1; mode=block"
Header set Content-Security-Policy "default-src 'self';"
Header set Content-Security-Policy "script-src 'self' www.google-analytics.com;"
Header set X-Content-Type-Options "nosniff"    

<IfModule mod_headers.c>
Header always set Strict-Transport-Security 'max-age=31536000'
</IfModule>     

上述代码添加的位置都是在当前网站的.htaccess文件中添加。

预防XML-RPC攻击

关于XML-RPC的攻击会给WP应用带来极大的风险,如果当前业务没有使用到此功能,那么直接禁用它就可以,如果开启来了,那么会给攻击者多一个攻击途径。

可以使用SG官方插件直接禁用XML-RPC功能,对应相关的WP后台代码文件是xmlrpc.php文件。

除了可以通过插件实现禁用XML-RPC功能,还可以通过.htaccess文件来拒绝外部恶意攻击者访问xmlrpc.php文件,当然更绝对简单粗暴的方式就是直接删除这个文件(前提是你确认业务不使用XML-RPC功能),这里说的删除,是可以将xmlrpc.php文件移动到其他非网站目录下,或者是备份到自己的硬盘中,只要确保从网站视角访问不到即可。

通过代码的形式以.htaccess文件实现拒绝访问xmlrpc.php文件。

# deny access to xmlrpc.php Black List
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

# allow access to xmlrpc.php White List
<Files xmlrpc.php>
order deny, allow
deny from all
allow from X.X.X.X
</Files>

禁用 RSS 和 ATOM 订阅

RSS和ATOM功能基本一样,其中ATOM是RSS的升级版,面临的风险如下:攻击者可能会使用XSS攻击的方式将恶意脚本注入到提要中,这就可能会感染您的订阅者的浏览器,并导致存储在浏览器的历史记录和Cookie中的敏感信息的泄漏。

WP默认情况下是集成了这两个功能,为了降低网站被攻击的风险,可以考虑禁用RSS和ATOM订阅。

同样可以使用插件和代码的形式来禁用RSS和ATOM功能,下面是针对激活的主题,找到functions.php文件添加以下代码:

function disable_feed() {
 wp_die( __( 'This site does not have a feed, visit the <a href="'. esc_url( home_url(
 '/' ) ) .'">home page</a>!' ) );
}

add_action('do_feed', 'disable_feed', 1);
add_action('do_feed_rdf', 'disable_feed', 1);
add_action('do_feed_rss', 'disable_feed', 1);
add_action('do_feed_rss2', 'disable_feed', 1);
add_action('do_feed_atom', 'disable_feed', 1);
add_action('do_feed_rss2_comments', 'disable_feed', 1);
add_action('do_feed_atom_comments', 'disable_feed', 1);

上述操作之前需要备份当前业务网站的所有内容,可以使用SG官方自带的功能进行备份;除了上述操作方法之外依然可以使用SG官方插件禁用RSS和ATOM功能,这样更方便省事。

Photo of author

Fenotion Woo

从专业的角度,为你提供最优的安全解决方案,我的安全解决方案充分充分考虑服务器网站的性能问题,做到以最小的操作方式解决安全问题。

Leave a comment