记录阿里云服务器mysql被黑
前言
比上次服务器被黑还要恐怖的数据库被黑,再次强调,数据库不备份不做安全,你就可以准备跑路了。
这次记录一下整个被黑的过程,以及整个检查和处理的过程。
发现
上个月某一天,网站出现了无法登录的情况,出现了大量的错误日志报警,然后就牛逼了,上服务器一查发现数据库里面就剩了一个名叫PLEASE_READ的数据库,里面留下了一张表,然后留下了比特币的地址,说24小时不转账就删数据库备份。
马上就明白了,数据库被黑了。
然后百度了一下,发现相同的案例有很多。
三个想法
第一个想法就是,不能按他说的做,因为比特币的转账是完全匿名的,你根本不知道对面是谁,所以即使你转了也不可能还你数据,如果我是一个黑客,我大可以就不还给你,我还要保存你的数据,我累不累。所以用钱买回来是绝对不可取的。
第二个想法就是,数据能否恢复。恢复数据只要需要一些要求,一个是需要进行数据库备份,如果你有备份当然就可以恢复,只是可能恢复后的数据可能会有丢失,还是一种情况是使用binlog日志进行恢复,虽然比较麻烦,但是还是可以做的,不过需要你配置文件里面开启binlog。然后我看了一下,完蛋~!这个数据库完全没有备份,也没有开启日志,所有等于0
第三个想法就是,怎么被黑的。可能性最多两个,一个是你服务器本身被黑了,那黑你数据库很容易。还有就是数据库本身被黑了。然后我查询了一下服务器上的历史登录情况,以及服务器上的应用,发现服务器本身没有什么问题。那很明显是数据库被黑了。要不就是数据库被人通过某种方式入侵,后人从内部被人用sql进行修改,要不就是数据库密码直接被试出来了。
查找原因
1、我查询个服务器的各个角落,发现只有mysql的data目录里面存在问题,mysql用户目录都没有发现有特殊用户的存在,所以可以明确下来,是mysql密码泄露了。
2、应用代码没有上传数据库配置,所以数据库的配置只有我自己知道,所以不可能是由于别人透露了数据库密码导致,那么就是由于数据库密码被试出来了。
3、然后上阿里云看了一下,发现

Mysql异常UDF执行是啥?还有这种操作的呀?
然后发现:http://blog.51cto.com/laoxu/1305240
但是时间是在三月的时候,那个时候服务器才刚刚买,然后数据库也是刚刚装上去的时候,也就是说,其实可能那个时候服务器就已经出现问题了。而别人只是放长线钓大鱼?
处理
删除data目录,重置数据库,重启服务,正常了。
后续安全措施
1、数据库备份 敲黑板!!!
2、开启binlog日志
3、更换超级复杂的mysql密码
4、更换mysql端口号
5、禁止mysql远程访问
这几个安全措施个人认为是最简单有效的措施,数据库备份和开启日志是为了防一手用来恢复数据;一般黑客就是不断扫端口,而mysql默认的3306端口太容易被扫描到了,然后如果你的密码是123456,那么就GG了;禁止远程访问,这个是非常手段,如果只有本机或者几个固定的IP能访问你的数据库,那么你的数据库就肯定处于一个相对安全的位置,缺点是你维护mysql数据比较麻烦,你需要使用固定的IP去维护数据库,或者使用vpn通过内网访问数据库。
总之,数据库的安全还有很多措施,这里只是想提醒各位,公网上的数据库极度不安全,别人想黑你,那就是分分钟的事情,所以一定记得数据就是你的命。应用出现bug可以修复,数据出现问题,那就神仙难保了。
PS:这次出现问题的是我自己的测试服,所以宝宝一点也不慌,随你黑,最后我直接快照恢复了。但是也给自己一个警告⚠️