起因
2022.3.26,我的博客被人尝试暴力穷举密码登录后台,虽然有封禁插件在,但看着每天几十条的登录失败警告还是很糟心。
根据封禁记录不难看出攻击者只是在穷举密码,没有穷举用户名,这是因为 WordPress 的作者主页机制可以让攻击者不用登录就能获取到后台用户名,所以只需要暴力穷举密码即可,如果密码非常薄弱或者与网站有很强的关联性就很容易让攻击者得手。解决办法除了安装插件限制 IP 登录次数外,还可以将登录地址隐藏起来,相当于给后台上了双层保险。
解决思路
我的需求:
- 可以自定义后台登录地址
- 修改后的登录地址不能过长
- 访问默认地址会跳转到特定页面
- 轻便,不能拖慢网站访问速度
网上有很多解决办法,最简单的莫过于插件,不过全功能的防护插件普遍占用资源较高,容易造成网站卡慢,所以不做考虑。
更改主题 function
最简单也最常用的方法就是在主题的 function.php
中加入如下代码
//保护后台登录
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
//Location 后改成你的站点,xx 和 xxx 可自定义
if($_GET['xx'] != 'xxx')header('Location: https://www.wpdaxue.com/');
}
这样登录地址就变成了 https://www.wpdaxue.com/wp-login.php?xx=xxx
,如果访问默认登录地址直接跳转到 https://www.wpdaxue.com/
但是这种方法更改后的登录地址不够精简,不仅有?
还要输入 key 值 不够优雅。如果不在乎这些的话也是个不错的方法
更改默认登录文件名
此方法需要修改 php 文件,强烈建议事先备份,出现问题直接覆盖还原
建议关闭 WordPress 核心更新,否则每次更新都需要重新更改地址
WordPress 默认的登录文件为 wp-login.php
, 那么我们要做的就是把这个文件名字换成自己想要的,步骤如下
- 转到网站根目录,将
wp-login.php
改成想要的名称 (不容易被猜到的),这里以 hell.php
为例
- 将
hell.php
内的 wp-login
全部替换为 hell
,大概需要替换 14 处
- 找到
wp-includes
目录内的 general-template.php
,将 wp-login
全部替换为 hell
至此网站登录地址修改完毕,新的登录地址为 yoursite/hell.php,非常的优雅٩(ˊᗜˋ*)و
此外,还可以在 general-template.php
内搜索 $login_url = site_url
,将第一个参数改为你想要的地址,以 Noheck.php
举例,意思是如果有人通过 wp-admin
尝试登录后台或者直接访问后台某个地址时跳转到 site_url()
设置的地址内。
修改后需要在网站根目录新建一个
Noheck.php
文件,内容自定
可以发挥下自己的恶趣味
成效
改完地址后,截止到 3.28 再也没收到过一次登录失败警告,效果显著
Tips
- 不建议用 admin 这种默认的用户名,如果后台存在该账户,建议删除
- 不要用网站域名或者 id 当密码,容易被人猜到
- 建议安装 IP 封禁插件,如
IP Blacklist Cloud
参考文章 https://www.cnblogs.com/rxbook/p/10145371.html