一次服务器被黑的惨痛教训!!!
The following article is from Cone的编程屋 Author Cone
如若转载请联系原公众号
今天和大家分享一个惨痛的教训,服务器上数据全都不见了,只留下了比特币付款地址,大学3年的学习记录都没了,惨痛!!!
先来看看事情的经过。
经过
有段时间没上服务器看了,今天心情不错,连了一下我的服务器
ssh root@@xxx.xxx.xxx.xxx
输入密码,连接成功了,老习惯,ls一下,emmm... 没什么问题。
然后连接数据库随便看看
mysql -u root -p xxx
然后日常数据命令
show databases;
然后 选择之前做的一个项目,carefree
use carefree;
然后看看哪些表
show tables;
然后一脸蒙圈,为啥只有一个表了?是不是我命令输错了,继续 show tables;
看看 还是只有一个表???
那来看看这个表里有些什么东西
select * from README;
然后看到了这句话。
以下数据库已被删除:xxxx 我们有完整的备份。要恢复它,您必须向我们的比特币地址bc1q8ap7s3j8jltmanmhtm48lmmz776t9mjp3ggmxz支付0.0075比特币(BTC)
一眼吃惊,这是服务器被黑了啊!!!!
惊慌失措中...
然后赶紧看看服务器登录日志,排除一下有没有其他异常ip登录,会不会有人拿我机器挖矿啊,毕竟最近矿价又高了起来!
last 命令查看登录日志
然后仔细瞧了几遍,还好还好,没有异常ip登录。
不过我的数据都被drop掉了!全无了。虽然数据不是很重要,但是这次教训还是惨痛的。
反思
主要反思为什么被黑了。
第一:之前部署过java的服务,springboot 数据库的各类信息,端口,库名,甚至密码都明文写入文件了。虽然没有git push到远端,但是这种情形,特别危险。
第二:把服务器借给其他人在学习,部署了一些服务,这些服务很容易被SQL注入,之前就有被SQL注入删除单个表数据的历史,已经存在隐患了。大意了。这次全给我删了。
第三:看看服务器的端口开放情况,3306直接给公网公开了,难怪容易被黑。3306公开,不黑我黑谁。那些攻击别人服务器的脚本大多都会去尝试默认端口,mysql的默认端口就是3306。
第四:数据库密码过于简单,我的密码就是两个123,很容易被破解。
如何应对
第一:无论如何不要开启相关默认端口,例如:mysql的3306、redis的6379等端口。这些默认端口都是黑客重点照顾对象
第二:如果要想在被攻击的情况下回复数据库,一定要把数据库的binlog日志开启,笔者这次就是没有开启,也没怎么在意这个,以为阿里云服务器就很安全了。后续也给大家分享为什么binlog可以做备份。
第三:修改数据库密码为高强度密码,一般具有大小写、数字、特殊符号的密码,强度就比较高了。
第四:修改数据库权限,修改为特定的ip才能都访问以及本地可访问。
总结
本次被攻击遭遇,虽然数据丢失不是特别重要(仅仅大学三年的学习记录)但是也给我提了个醒,小心别人利用我的服务进行挖矿!
推荐阅读:
每日打卡赢积分兑换书籍入口