转载请注明文章出处:https://itlanyan.com/wordpress-prevent-password-brute-force/
之前 “谈谈如何在服务端阻止恶意扫描” 提到过主机防护,主要是防止不法分子进行批量攻击。本站用的WordPress,为了防止别人通过 wp-login.php
入口进行暴力破解,于是修改该文件将请求重定向到CentOS的镜像下载页面。然而因为WordPress默认开通自动更新功能,新版发布后 wp-login.php
的修改就被抹除,又变成登录入口文件。在主题中做修改也有类似的缺点。
今天早晨收到大量邮件,提示有人多次尝试用密码登录博客站点。被邮件烦到了,自己也有点心虚,于是琢磨怎么弄个一劳永逸的办法。然后想到可以在Nginx
里做重定向啊!WordPress更新覆盖文件的缺点一下就没有了。
说动手就动手,在Nginx
的server
配置块中新增配置项:
server {
...
location = /wp-login.php {
redirect ^ http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso permanent;
}
...
}
重启Nginx
,用curl
尝试请求”https://itlanyan.com/wp-login.php“和”https://tlanyan.pp.ua“,提示都重定向到CentOS的镜像下载地址。符合预期,非常棒!
上述配置解决了wp-login.php
的困扰,不过还是陆续收到提示暴力破解的邮件。打开Nginx
的日志,发现原来暴力破解入口不是wp-login.php
,而是xmlrpc.php
。xmlrpc.php
是对外开放的rpc接口,例如app发表文章、管理站点就会用到。要阻止这个入口被恶意访问,解决办法同样可以是进行重定向:
server {
...
location = /wp-login.php {
redirect ^ http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso permanent;
}
location = /xmlrpc.php {
redirect ^ http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso permanent;
}
...
}
Ping Back
功能用的也是xmlrpc.php
这个页面,以上配置会导致其他站点的Ping
失败。有无Ping
对我而言不是那么重要,因此关闭对我来说没有影响。
经过以上配置,既防止他人恶意访问返回冰冷的404页面,也很好的解决了安全问题。世界终于清净,一片祥和。
博主,这个方法完善了吗?
需要改登录入口,文章里没有写怎么做
那这样子自己该怎么登陆啊?
用新的网址啊,比如 https://你的域名/wp-new-login.php
那这个要怎么改,直接改文件名还是到nginx里改。
刚才看了一下我这篇文章,里面没说全,你先别弄这个吧,我有空完善一下再用
好的,谢谢。
博主你这个有空完善下吗,很多看不懂,感谢
有空我改一下