WordPress防止密码爆破

By | 2018年12月28日

转载请注明文章出处:https://tlanyan.me/wordpress-prevent-password-brute-force/

今天早晨收到大量邮件,提示有人多次尝试用密码登录博客站点。之前的文章“谈谈如何在服务端阻止恶意扫描”提到过类似的防护,但不依不挠的破解不仅烦,还会带来心里上的不安。

之前一贯的做法是修改wp-login.php文件,将请求重定向到Ubuntu或者CentOS的镜像下载页面。由于站点开通了自动更新功能,WordPress发布新版后常在第一时间自动更新,wp-login.php的修改被抹除,又变成登录入口文件。主题中做修改也有类似的缺点。

今天被邮件烦到了,然后想到可以在Nginx里做重定向啊!这样每次WordPress更新,文件覆盖也没事。说动手就动手,在Nginxserver配置块中新增配置项:

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://tlanyan.me/wp-login.php“和”https://www.tlanyan.me“,提示都重定向到CentOS的镜像下载地址。符合预期,非常棒!

进行以上配置后,解决了wp-login.php的困扰,但陆续还收到提示暴力破解的邮件。打开Nginx的日志,发现原来不是通过wp-login.php进行密码尝试,而是xmlrpc.php这个入口。如果做过脚本自动发布文章,可以知道这个页面以接口方式提供站点的管理功能。要阻止这个入口被恶意访问,解决办法同样可以是进行重定向:

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页面,也很好的解决了安全问题。世界终于清净,一片祥和。

发表评论

电子邮件地址不会被公开。 必填项已用*标注