前言:本文记录了一次被人用暴力破解攻击网站后台,使用mysql命令查询攻击者的信息,以及普及防范知识与提升防范意识,比如更改后台默认的路径、更改管理员用户名、不适用弱口令作为密码并且时常更换密码、使用密钥对登陆 ssh 等。
我于 9 月 5 日注册了一个域名,9 月 6 日下午就正式上线发布了网站,9 月 7 日就被攻击,看了一下日志,妈耶。从 9 月 7 日下午的18:39:59至18:53:30,持续攻击了 13 分钟 31 秒,总共有 1518 条登陆失败的记录,有两次是我自己手残输错。平均每秒被暴力破解攻击 1.87 次。下面是我通过 ssh 登陆【phpmyadmin不够装逼】查看攻击者信息的过程:
1、首先我们用 cd 的命令去数据库文件夹里面看是不行的,尽管在linux里面,任何的数据都是以文件的方式存储,但是能打开 frm 文件吗,肯定是不行的,不信用 vim 试试【/滑稽】。
2、我使用的是这条命令:mysql -h localhost -u root -p
3、接着,我们使用这条命令:show databases; 就可以看到所有的数据库了,毕竟 root 用户嘛。
4、再然后,输入:use dataName;其中 dataName 就是进入你想进行增删查改的数据库。只要这个表是存在的,我们就可以看到 Database changed 的提示,就是你进入成功了。这条提示在创建成功的时候也会有。我们这里是选择。
5、进入了之后我们使用 show tables;命令查看这个数据库的所有表单,最上面是 Tables_in_dataName 的提示,就是说你现在在 ssh 窗口里看到的是,你刚才进入的表格里面的所有内容。
6、这里就有我的登陆失败记录数据表,使用 show create table 表单名; 我就可以看到这个表里面记录的简要信息了。比如这次我看到 AUTO_INCREMENT 后面是 1520,我记得我是因为手残输错过两次密码,那么其他的 1518 就是别人干的了。AUTO_INCREMENT 就是自增,每失败一次就加一个数。
7、我们切换到 phpmyadmin 看一下,蓝色的一大片,是因为太过于密集,下面我们可以看到一个箭头一样的黑条。
8、其实那是时间线了,从 2018-09-07 18:39:59 开始到 18:53:30 结束,只不过也是因为过于密集的原因,看起来像是一个箭头一样。我们把需要查询的数值改一下就可以看得清晰了,比如改成 10。
对了,我们这里还可以看到她的 ip 地址是 37.139.20.99,来自荷兰。。诶。
总结
网络安全至关重要,试想一下如果他成功的登陆了我的后台,会干什么,不可描述,哦不,是不敢想象。其实被人攻击是好事,至少说明你网站有价值,但是不能证明你网站有价值,要有骄傲的感觉,但是也要心理有点 B 数。所以从安全的角度出发,建议大家做到以下几点:
1、请不要使用弱口令作为密码,弱口令就是【admin888,123456,qwer1234 这些不多举例了】,最好是大写字母 A-Z,小写字母 a-z,数字 0-9,加上各种字符【系统允许的字符,除了/*\$等,这些字符和空格为什么不能是密码,我们随后详细的讲】
2、更改后台登陆地址对网站进行保护,可参考《如何修改隐藏 Zblog/WordPress 默认后台登录地址》,再给默认后台的目录写一个静态页,给攻击者留个言吧。
3、关闭 mysql 的外部链接对 mysql 进行保护,【update user set host = “localhost” where user = “root” and host= “%”;】,前提是,你要是 root 用户。
4、使用密钥对对 ssh 进行保护,这个在《简单分析对比虚拟主机、winserver2008r2 和 centos》里面有讲。
5、经常备份文件和备份数据库,或者用 shell 命令去自动化。
6、数据库的命令语法的学习是非常简单的,分类为增改查删,简称 CURD。对应的英文是增(create)、改(update)、查(read)、删(delete)。牢记:每条命令后面要加一个分号,半角的分号(;)
7、为防止新手踩坑(我也是新手),如果要在windows 平台允许 ssh 工具进行操作 mysql,如果你不会用命令,要复制的话,在 windows 上可以用 ctrl+c,但是在 ssh 里面要用 shift+insert 进行粘贴【还要更改参数信息】,就是 windows 上的控制键+光标选择键。其实 window 上也是可以用 ctrl+insert 和 shift+insert 进行复制和粘贴的操作。请慎用 linux 和 ssh 工具,比如你可能按到了 ctrl+s,就卡住了。其实用 ctrl+q 是可以解锁的。但是其他的还有很多,千万别乱按 windows 上你熟悉的快捷键,不会就百度去查。
8、虽然很不原意承认,但是确实存在的是,没有攻破不了的系统。我们平时还是得有良好的习惯,比如数据库就要过一段时间换一次密码,然后把网站的配置文件进行修改。这样也能提高应急处理的能力,让我们对这个系统有更多的认知和熟悉。
9、如果有条件的话,就购买一些插件,也是可以达到有效抵御的目的。总之他们的水平都是有限的,每多一个防御手段,就能挡住不可估量的攻击。可参考《WordPress 防止被暴力破解插件 Limit Login Attempts》和《提升网站服务器安全性之防止暴力破解篇》。
10、我并没有给他设访问的限制,反正服务器阿里云的,不怕他消耗我资源,他真想耗我资源,设请求限制也没用。就随他暴力破解吧,我也相信我的密码不会写在他的字典里面,如果有的话,我简单算了一下,粗略的算,他如果从 0 开始算到我这个密码,要试 61 亿次左右,如果按照他当前的速度,每秒 1.87 次,要用 3262032085.5 秒,除以 86000 秒/天,需要 37755 天,再除以 365 天,他需要 104.87 年,才能试出来我这个密码。哈哈哈哈。就算是让他每秒 1870 次,给他提升 1000 倍,那也要 38 天。但是我的所有密码都是一星期换一次,一点都不慌。
11、看不懂的问题咨询别人的时候,如果需要截图,记得抹掉机密信息。