二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 随写编年

  • 家人物语

  • 追忆青春

  • 父亲的朋友圈

  • 电影音乐

  • 效率工具

  • 博客相关

    • 原生文档

    • 个人折腾

      • 旧版博客上配置的一些小功能汇总
      • 解决wordpress新建页面没有模板的问题
      • wordpress整站迁移操作
      • 关于wordpress后台admin密码防爆破的一些操作
        • 1,网上的一种办法。
        • 2,自己用的办法。
      • vuepress编译时报错TypeError _normalized undefined的解决
      • GitHub配置自动部署pages与服务器
      • Vuepress添加评论插件valine
      • Vuepress配置全文搜索插件fulltext-sarch
      • Vuepress添加侧边栏访问地图
      • vuepress文章内有模板语法时编译报错的解决
      • Vuepress配置评论插件为Artalk
      • 博客接入CDN的折腾-对阿里云七牛云蓝易云多吉云几家CDN使用评测
      • Vuepress添加首页轮播图与打赏按钮的配置
      • Vuepress配置rss订阅功能
      • Vuepress全文搜索插件vuepress-plugin-flexsearch-pro
      • Vuepress全文搜索终极版-algolia的开源实现meilisearch全接入指南
      • 基于多吉云存储+uPic构建个人图床的实践分享
      • vuepress配置谷歌访问统计google-analytics
      • vuepress-vdoing主题配置LxgwWenKai字体
    • 转载推广

  • 闲言碎语
  • 博客相关
  • 个人折腾
二丫讲梵
2018-06-26
目录

关于wordpress后台admin密码防爆破的一些操作

文章发布较早,内容可能过时,阅读注意甄别。

密码破解,这包含了攻防两端考量以及操作,就像你有导弹,我就有反导弹系统,你有反导弹系统,我就有反反导弹系统。彼此追赶,互相博弈当中,都在提升自己的能力。当然了,我们反对研制武器用于战争,就像反对掌握技术用于破解一样。

昨天还在与一个朋友讨论关于验证码破解的问题,他兴奋的与我说,发现小米账号的验证码只有四位数,也就是说你随便输入一个手机号,比如雷军的手机号(当然需要你先知道雷军的手机号),然后直接去或许验证码进行登陆,四位数的数字组合就是 101010*10,也就是一万种可能而已,通过通过脚本把这一万种可能全部走一遍,理论上就应该可以登陆你的账号了的。

当然这种漏洞都是非常低级而且人家也不可能不做限制的。说起限制也是非常简单,可以对同一 ip 请求次数的阈值设置进行相关策略制定,可以对同一账号登陆总是失败(据此判断可能是在进行破解)的次数设置阈值然后设置多长时间内不许再登陆。这些都是值得了解的,而我之前对这方面了解着实不多。

比如如下表述就是引自一篇所谓破解的文章内容:

首先要说一下,一个正常点的网站,你用暴力破解登录的话,都是几乎无法实现的,举个例子。

举个暴力破解 QQ 的例子:

  • \1. 你暴力破解 QQ 密码,输入错误几次之后验证码也出来了。验证码出来了就无法使用暴力破解了,
  • \2. 验证码的问题比较好搞,找个识图的代码,识别图片中的二维码,即可。继续破解。
  • \3. 是的 二维码可以搞定,但是你输入错误次数超过 30 次之后,该账号 24 小时内再提交密码都无效了。

举个我自己亲测暴力破解 wordpress 站点管理员密码的例子:

我穷举 wordpress 的账户密码,post 到 xxx.com/wp-login.php 上,结果:没几下我就发现网站打不开了。然后,用同事们的机器,也是打不开,我以为网站挂了,结果不是,我发现用 3G 网可以打开。看样 wordpress 直接屏蔽了我们的 ip 段,一个小时后又可以访问了。 所以我放弃了,对 wp-login.php 的破解。

从上边的话里,可以看出网络安全问题如果我们自己不关注,那么可有很多人都是密切关注着呢。

使用 wordpress 部署博客,平常就会遇到不少的攻击爆破等问题。

我就经常碰到,每当遇到之后我就心想,爆破吧,攻击吧,反正就是这么一个内容性的站点,并没有特别富裕价值的东西,或许攻击一会儿也就不再执着了罢。事实上之前也都是这样的,有一些破解大概就那么几次,十几次,最多几十次不得了了,然而面对那种无休无止,成百上千次的对后台密码进行破解的,就有些烦了。

终于,在我看到邮箱收到三四百封邮件之后,不能忍了。

image

一看到这种堆积式的错误登陆,不用多想,肯定是在被爆破了。

随便点击一个进去看看,尝试的用户名密码时间以及来源 ip 都非常清楚。

image

看一眼这个 ip。

image

总之很讨厌,这次我也不想忍受这种攻击了,准备着手来对这些爆破的同学采取一些小政策了。

首先当然是百度一波先看看有没有特别给力的插件之类的,转了一圈发现没有什么好用的,策略上大概也就那么几种:

  • 1,通过检测对可疑 ip 进行封禁。
  • 2,通过对一些后台以及登陆的 url 进行重定向。
  • 3,插件控制。

因为插件基本上都是英文的,也就没有尝试这个。我通过一篇文章尝试了第二种的办法,https://www.waitalone.cn/wordpress-adminpage-deny-brute-force.html。

# 1,网上的一种办法。

办法就是在主题的 functions.php 中加入如下代码:

add_action('login_enqueue_scripts','cracker');
function cracker(){
if($_GET['access']!= '1111') header('Location:http://blog.eryajf.net/');
}
1
2
3
4

请自行更改 1111 为自己的密码,然后把后面的 eryajf.net 的 URL 更改为你的博客域名。

如此一来,当你访问后台 admin 的时候会跳转到首页,真正访问登陆页面的时候则需要访问 http://blog.eryajf.net/wp-login.php?access = 您的密码 (opens new window)

这样或许不无不可,但是经过我的体验感觉有时候会影响一些正常的访问,因此也放弃了这种办法,决定自己来搞一搞。

# 2,自己用的办法。

对于那些爆破我们的,就应该毫不留情直接关小黑屋里。

因此我在 nginx 下边做了拒绝访问的策略,一旦你触及我的底线,不好意思,小黑屋有请。

我想大家应该都知道在配置 nginx 的虚拟主机的时候,一般把配置文件一个一个单独放在一个目录下,然后在 nginx 的默认配置文件当中进行include调用。

include vhost/*.conf;
1

注意这条调用指令写在server区域之外http区域之内。

接着我就在vhost目录下创建了一个hei.conf的文件。

[root@long vhost]$cat hei.conf
deny 91.210.145.28 ;
deny 51.38.224.237 ;
1
2
3

书写格式也就这样,把做坏事儿的 ip 扔进配置文件里边,然后让 nginx 加载一下,对方再想来攻击你,那就还它一个 403 看看。

注意这个地方我在写规则的时候 ip 与后边的分号有一个空格的,这样并不影响使用,也是为了方便后边脚本的使用。

image

上边两个 ip 就是因为不老实然后就被关进小黑屋了的。

既然已经确立使用这种方案了,那么接下来就通过对日志的分支,利用脚本,把这些事情自动给他完成了。

脚本如下:

#!/bin/bash
set -e

Log=/var/log/nginx/error.log
File=/usr/local/nginx/conf/vhost/hei.conf
fip=`grep wp-login.php $Log | awk '/error/{ip[$36]++;}END{for (i in ip){if (ip[i]>20){print i}}}' | awk -F "," '{print $1}'`

for i in $fip
do
    a=`awk -v i=$i '$2==i{print}' $File | wc -l`
    if [ "$a" -ne 0 ]
    then
        echo "服务器安全" &> /dev/null
    else
        echo "deny $i ;" >> $File
        /usr/local/nginx/sbin/nginx -s reload
    fi
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

简单说明一下脚本:

  • 第六行:在错误日志当中取出登陆次数超过 20 次的失败者的 ip。
  • 第十行:逐个判断此 ip 是否已经在小黑屋里关着。如果已经有了,那么服务器是安全的,如果没在,那么将之请进小黑屋当中,然后让 nginx 重新加载一下配置。

写完之后,如果在你的系统中已经有类似的 ip 了,可以执行一波进行测试,看看是否已将其送往小黑屋成功。 这个地方,如果日志逐渐变大,那么可以利用脚本进行一下切割,还是很有必要的。

随后把这个脚本放进定时任务当中,自己随便定义多久执行一次就好了。

*/5 * * * * /bin/bash /opt/hei.sh
1

最后,还是想说一下,所有进行暴力破解的,无不是从一些非常基础简单的密码开始的,如果我们被爆破没几下就守不住了,那只能说,该换密码了。事实上,我所使用的密码,是一个我自己也记不住的,一个由工具自动生成的密码,总之,密码复杂一点,总是没有错的。

微信 支付宝
#nginx#wordpress
上次更新: 2024/07/04, 22:40:37
wordpress整站迁移操作
vuepress编译时报错TypeError _normalized undefined的解决

← wordpress整站迁移操作 vuepress编译时报错TypeError _normalized undefined的解决→

最近更新
01
学习周刊-总第212期-2025年第21周
05-22
02
从赵心童世锦赛夺冠聊聊我的斯诺克情缘
05-16
03
学习周刊-总第211期-2025年第20周
05-15
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式