WordPress好比我们的电脑系统,也是需要防护软件来阻止黑客入侵的。可能有人会认为装了防护软件会影响网站速度,但是和安全性比起来,我认为安全性明显更重要,安装防护软件终究是利大于弊。
对于安全这一块,我采用两道防护。第一道是使用Cloudflare CDN,它的防火墙已经过滤掉了大部分恶意攻击;第二道便是在WordPress中安装防护插件,进一步提高安全性。
目前WordPress上专注于安全防护且比较知名的插件有Wordfence、All-In-One Security、iThemes Security等。相对来说,我更喜欢All-In-One Security(以下简称AIOS),因为AIOS的免费功能很齐全。对于一般网站来说,免费版就已经足够。而且AIOS的安装总量也超过了100多万,几乎全5星好评,算是比较好地通过了市场检验,咱们可以放心安装使用。
另外,AIOS在2021年被知名的备份插件——UpdraftPlus的公司收购,在这种公司的加持下,水平肯定有保证的。
说下AIOS的缺陷:与Apache、Litespeed服务器完美兼容,但是对于Nginx服务器并不十分友好。因为它的部分功能是通过.htaccess文件来实现的,因此使用Nginx的小伙伴们需要自己具备一些动手能力。根据插件官方在Q&A当中的回复,他们正在开发适配其他服务器。假如你使用的是Apache或Litespeed服务器,那就完全不需要担心。
主要功能介绍
1.最大登录失败次数锁定、登录失败记录
2.阻止黑名单IP访问网站
3.仅限白名单IP登录
4.6G防火墙
5.修改数据库前缀
6.更改WP登录页地址
7..htaccess文件编辑
8.维护模式
还有其他一些实用的小功能:404 IP记录、图片防盗链(.htaccess)、隐藏WP版本、禁止右键功能、阻止用户枚举等。
设置教程
插件安装大家应该都会了,此处不赘述。此篇文章将按照插件的菜单顺序依次进行讲解。
1.仪表盘
这是插件的主要看板,会显示当前的安全防护得分、被锁定的IP地址、登录的用户、重要的防护选项的状态等。得分越高,代表开启的安全防护越多。
2.设置
我们可以在General Setting里面整体启用/禁用安全防护和防火墙规则、恢复插件默认设置等。在进行设置前,我们最好按照插件的提醒对数据库、.htaccess和wp-config.php文件进行下载备份。数据库可以使用我上面提到的UpdraftPlus插件进行备份。
WP version info
移除WP版本信息。
让黑客无法知道我们的WordPress版本,对安全防护稍微有点作用。
Advanced settings
设置访客IP检测规则。需要选择与当前IP相符的规则。
我这里有3个选项,每一条都会显示以它的规则检测到的咱们当前的IP地址,默认第一条规则的检测结果与我实际IP不相符,所以我选择了第2条,应该是用了cloudflare的缘故。
3.用户账号
切忌用默认的Admin作为登录用户名!因为大多数恶意程序在破解我们网站密码的时候都会首先尝试用admin,在下文中你将看到我网站被恶意程序尝试登录时所使用的用户名。最好账号昵称与登录用户名也不同。
4.用户登录
①登录失败次数过多锁定 ②登录失败记录 ③禁用应用密码
Login lockout
限制登录失败次数。
这个功能比较重要,可以自动把输错账号或密码的ip给屏蔽掉。适用于WP以及woocommerce。
Enable login lockout feature
(开启登陆失败锁定功能):勾选;
Allow unlock requests
(解封申请):零售网站有客户登录功能,顾客记不住账号密码是很正常的事,所以必须勾选;外贸网站就没必要了;
Max login attempts
(最大登录失败次数):到达设置的次数后自动屏蔽IP。我设置的3次,给的机会应该够多了;
Login retry time period
(连续累计失败次数的时间范围):第1次失败和第3次失败的间隔时长。超出这个时间范围的则将以第2次失败时间重计,一直这样连续计算;
Minimum lockout time length
(最小锁定时长)和Maxium lockout time length(最大锁定时长):为什么有最短最长呢?因为同一个ip被屏蔽后,下次的屏蔽时长是前一次的3倍。B2C网站不要设置太长时间,B2B网站越长越好。以分钟为单位;
Display generic error message
(屏蔽后给访客显示的消息):B2C网站最好有,其他网站随意;
Instantly lockout invalid username
(立即屏蔽使用无效用户名登录的IP):B2C网站就不要勾选了,顾客忘记密码很正常;Login lockout IP whitelist settings
(设置白名单IP):在白名单中的IP,即使登录失败次数达到上限或者用户名错误,都不会被屏蔽。所以我们应该把自己常用的IP地址给加上,以防哪天真忘记了账号密码。
Failed login records
登录失败记录。
可以从下图看到,恶意程序经常使用admin来尝试登录,所以千万不要用admin作为用户名!!!
Additional settings
禁用Application passwords。
这是供应用程序使用的密码,一般都用不到。
5.用户注册
分别是人工审核注册申请、注册页增加CAPTCHA、Honeypot,全部开启。目的都是为了过滤掉机器人非法注册。
6.数据库安全
分别是数据库前缀、数据库备份。注:数据库备份功能已经删除,请使用他们家的updraftplus备份。
数据库是存储所有数据的地方,WordPress默认的mysql数据库前缀是wp_,是黑客攻击的重点。所以我们应该把前缀给改掉。自动生成或自行设定都可以。
7.文件系统安全
File permissions
文件访问权限和读写权限。全开启。
PHP file editing
移除WordPress后台外观菜单中的主题文件编辑菜单。开不开随意。
WP file access
WP文件的访问信息。开启。
8.黑名单管理器
主动将某些IP或恶意爬虫屏蔽掉。建议将在上文4.用户登录 中提到的多次登录错误的IP复制到这里,全部屏蔽掉。B2C网站需要确保屏蔽掉的不是客户的IP。
9.防火墙
分别是基本防火墙、额外防火墙规则、6G防火墙规则、屏蔽虚假蜘蛛、图片防盗链、404记录等功能。
Basic firewall rules
基本防火墙。
Basic firewall settings
: 打开。
WordPress XMLRPC and pingback vulnerability protection
:XMLRPC是WordPress与外部应用程序连接用的,我们用不到,勾选第一个完全关闭即可。假如你使用jetpack插件,那么不要勾选第一个,请勾选第二个。
Disable WordPress RSS and ATOM feeds
:禁止RSS和ATOM提要。RSS订阅属于好多年前的产物了,现在大多数人都不会用到,所以还是禁用吧。
Block access to debug log file
:禁止访问WP的debug日志。
Additional Firewall Rules
额外防火墙。全部开启。
6G Blacklist firewall rules
6G防火墙。
这是第三方开发者开源的防火墙规则,最新稳定版本是7G防火墙,但AIOS只集成了前一代的6G版本和再往前一代的5G版本,建议只开6G防火墙就行了。底下的详细防护设置全部勾选。
我们其实是可以手动为网站添加7G防火墙的,而且方法很简单——在Apache服务器上,只要将7G规则复制到.htacess文件中即可(根据官方推荐,最好放在<IfModule mod_rewrite.c>代码前面)。当然,自行添加7G规则后,AIOS里面的6G和5G防火墙就完全没必要启用了。
Internet bots
阻止虚假的谷歌机器人。勾选。
Prevent hotlinks
图片防盗链。
盗链会占用我们网站资源,所以不允许盗链。勾选。
可能有人会觉得这也是得到外链的机会,那请再进一步想想,正规网站会盗链吗?往往盗链的都是一些垃圾网站,这种外链你敢要吗?
404 detection
404记录。
这项功能可以让我们知道哪些IP在恶意查找我们网站的内容,次数多的直接禁掉。免费版的只能手动筛选并阻止,付费版能自动禁用。
10.暴力破解
包括更改WP登录页网址、Cookie防暴力破解、登录白名单等。
Rename login page
更改默认登录网址。
将WP默认的登录网址(/wp-admin)改成我们自定义的网址,这样的话很多机器人就找不到登录页了,能够减少一点风险。这个和下面的cookie防护之间开启一个就够了。
Cookie based brute force prevention
基于cookie的防护。
比更改登录网址的效果更好,但是两者之间选一个就行。
Login whitelist
限制登录IP。
开启后将会只允许我们填入白名单中的IP地址登录,这个对于防破解的效果是最好的。建议开启,将常用的IP都填到白名单框内,毕竟我们用来登录的IP是固定的。这种方法配合前两种中的一种,基本无敌了。
CAPTCHA、蜜罐
防机器人的。
全都开启吧。reCAPTCHA验证码需要向谷歌申请,怕麻烦的就算了,将下面的打开就行。蜜罐则是人完全看不见的字段,只有机器能看到,凡是填了这个虚假字段的访问来源都将会被直接屏蔽掉。
11.Spam prevention
主要是阻止垃圾评论、监控垃圾评论的IP,另外两个没标序号的是针对论坛插件的防spam设置。
Comment spam
全部勾选。
Comment spam IP monitoring
当达到一定次数后,自动屏蔽发垃圾评论的IP,勾选。安装Akismet插件能获得更好的识别效果,安不安装随你。
下面的是设置查看垃圾评论的IP,可以设置达到几次后向我们展示IP,这样我们就可以手动屏蔽掉。
12.扫描器
这一项在我看来是AIOS的弱项,因为wordfence是免费提供恶意文件扫描检测服务的。而AIOS的扫描却是在收费版本里。所以,在使用AIOS作为防护插件的情况下,我们就更不能使用来历不明的破解插件了。
File change detection
检测文件是否变更,开启。虽然没多大作用吧,但是真怀疑有问题,我们还是可以来看看是不是真有重要文件被更改的。
Malware scan
文件扫描服务,是付费版本的功能。
13.网站维护
顾名思义,开启后,除了你之外就无法访问网站了。所以当网站有重大问题或大变更的时候,可以开启。
14.其他
前两个是保护网站内容版权的,后两个都能防止暴露用户名。
Copy protection
开启后将会禁止鼠标右键功能,就不能弹出菜单项。这项功能实际上只能防君子,并不能防小人(采集爬虫),所以开不开都无所谓。
框架(Frames)
开启后禁止别人在他们的网站上使用frames来显示我们的内容,开启。
Users enumeration
阻止用户枚举。
通过 /?author=1 可以找到我们网站的用户名,而且只需要改变这串网址的最后一个数字,就能依次显示其他用户名。要是黑客知道了用户名,接下来只需要破解密码就能登录我们的网站,万一我们有几个弱密码的账号,风险就很高了。所以一定要勾选!!
WP REST API
这是外部程序和网站通信用的,我们一般用不到。但是黑客也能通过这个功能(wp-json/wp/v2/users/1)来枚举用户名。除此之外,禁用REST API还能防止其它攻击。所以也要勾选!!
15.Two Factor Authentication
两步验证——当你在wp后台登录页面正确输入账号密码后,它还需要你输入额外的实时验证码才能真正登录(登录界面显示如下图),否则照样无法登录。是不是很强大?
一般情况下,当我们开启了其他登录保护功能后,可以不用开启,但要是还不放心,那就打开这个功能吧。
步骤:手机安装一个谷歌身份验证器(Google Authenticator)app,用app扫描页面设置中的二维码,谷歌身份验证器就会将你的网站信息保存起来,里面的验证码也将会实时刷新(有效期1分钟)。每次需要登录网站的时候,打开app查看最新的验证码并输入到网站验证文本框中即可。
下面的高级设置使用默认的第一项就行了。
到此,All-In-One Security(AIOS)的设置讲解就结束了,大家根据各自的需求进行参数设定。在使用了防护插件之后,网站肯定会比之前安全许多。依然再啰嗦一句,商业网站切忌使用来路不明的盗版插件,真要是有后门,可是得不偿失的。
由于设置错误或插件错误导致无法访问或登录网站怎么办?
在我们设置AIOS的时候,有时候插件本身可能有错误,或者我们自己操作失误,导致被屏蔽或者无法登录网站了怎么办呢?不要慌,解决方法很简单。
连接到你的服务器,按 /www/wwwroot/你的域名.com/wp-content/plugins 这个路径打开plugins文件夹,里面都是当前域名的WordPress中所安装的插件,我们只需找到AIOS的文件夹——all-in-one-wp-security-and-firewall,然后重命名(随便改成其他可识别的名称就行)。之后你应该就能正常访问或登录网站了。这个原理很简单,更改插件文件夹名,相当于停用了插件,自然给插件设置的功能就无效咯。——以上步骤不会操作的,请联系主机客服帮忙。
等我们重新进入网站后台后,可以到插件管理页面重新启用插件,将有问题的设置更改掉就行。
这种方法不止适用于AIOS插件,其他任何插件造成的类似无法访问/登录网站的问题都可以采用此方法!只需改掉对应插件的文件夹名即可。