基于宝塔面板的WordPress站点安全防护要点

由于互联网的开放性,在我们搭建完自己的网站之后,来自世界上任何地方的人(即IP)都可以访问我们的网站。但是,在正常的流量之外也不乏恶意的流量,这些恶意的流量有些利用了Wordpress中一些特有的链接来获取我们的管理员用户名,有些则利用wordpress中一个特殊的文件实现对我们管理员用户名及密码的暴力破解,为我们的服务器带来了大量的性能消耗,也产生了网站运维上的安全隐患。接下来我将结合自己网站的实际运维经历,分“宝塔面板”和“Wordpress后台两类来分享目前我常用的安全配置。

一、宝塔面板

在宝塔面板中,点击左侧的“网站”,再点开需要设置安全防护的网站右侧的“设置”

在弹出的界面中,点击左侧的“配置文件”

①禁止访问xmlrpc.php

xmlrpc.php文件是什么?

为开发者提供远程发布端口,通过该文件开发者可以在多个渠道远程发布、编辑Wordpress网站中的文章

xmlrpc.php文件潜在的安全隐患?

恶意攻击者可以利用该文件暴力破解Wordpress管理员密码,不受错误次数限制

将上图的“配置文件”编辑窗口拉到底,复制粘贴以下代码:

# 禁止xmlrpc
location = /xmlrpc.php 
{
deny all;
}

②禁止访问获取所有用户的用户名

为什么要禁止?

通过获取所有用户的用户名,恶意攻击者可以轻而易举地获取你的管理员用户名,极大地减小进入管理后台的难度

# 防止获取管理员用户名
location ~ ^/wp-json/wp/v2/users 
{
deny all;
}

③获取用户真实IP(如果使用了CDN的话)

为什么要这么做?

当网站套上了CDN之后,所有用户访问网站时都会自动与CDN的服务器进行通信,再由CDN的服务器对网站服务器发起资源请求。此时的网站服务器获取的访问IP将只有CDN服务器的IP,而不是访问者的IP,可能会影响宝塔面板的访问记录及Wordpress相关插件的功能实现,因此,需要对数据的解析做一些调整,以提取访问者的IP。

点击宝塔面板左侧的“软件商店”再点击“已安装”,最后点击Nginx右侧的“设置”

在弹出的窗口中点击“配置修改”

在“http”的大括号下补充以下两行代码

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

二、Wordpress后台

①安装限制登录尝试插件

为什么要安装?

在登录界面,Wordpress默认对登录次数没有限制,也就是说任何用户都可以无限次尝试登录账号与密码,这对于破解管理员账号密码是潜在的安全隐患

在插件方面,我安装的是“Limit Login Attempts Reloaded”,也可以安装其他类似功能的插件

②安装限制IP进入登录后台插件

为什么要安装?

对于个人站长而言,登录后台的国家和地区基本都是不变的,因此可以将该国家和地区之外的地理位置的IP全部封禁以达到过滤访问、增加安全性的效果,此过滤只会影响登陆界面,网站依然允许正常访问

在插件方面,我安装的是“Login IP & Country Restriction”,也可以安装其他类似功能的插件