近期在做毕设,为了能在多个平台同时开发项目,将mysql放在了自己线上的服务器,然后用nacos的配置中心进行连接,一觉起床人都傻了,自己的数据库被黑客入侵了,里面所有的数据都消失了!粗略算了一下,按照今天的比特币∶人民币=1:70000的汇率来看,我得支付945块钱。
好在这只是毕设,自己本地有同步,只是数据丢失了一部分,稍微花一点点时间就能修复,而且数据也没那么重要,这次就借着这次机会反思一下问题。
![image.png](https://img-blog.csdnimg.cn/img_convert/9b5a1b2cee75b17fa90a044f9e05cf7a.png)
出现原因
通过查看大量网上的说法,得出最大的原因就是:端口被脚本扫描了
- 首先ip是开放的
- 然后扫描3306端口发现数据库,账号密码过于简单(root/123456)
- 然后又刚好撞库了,数据库表的名称都在黑客的字典里,所以就被黑了
市面上端口扫描工具多着呢,类似御剑、nmap上帝之眼
解决方案
可以查看这篇blog的内容,讲的很详细:
服务器被黑,Mysql数据库遭比特币勒索!该如何自救?
总结一下就是:
- 查看服务器的数据库连接日志:Access denied for user
- 修复数据库:【前提】开启binlog,通过binlog修复数据库
# --start-position="219" 第一次操作库的偏移量
# --stop-position="4124564" 找一个卸库前的偏移量
/www/server/mysql/bin/mysqlbinlog --no-defaults /www/server/data/mysql-bin.000005 --start-position="4" --stop-position="4124564" | /www/server/mysql/bin/mysql -u root -p
避免方案
源头上避免出现该问题:
- 修改线上数据库root登录密码(不要root/123456)
- 关闭外网访问!改用ssh登录
- 如果使用的是宝塔面板,设置phpadmin禁止公网访问,设置可访问ip地址(白名单)
- 端口修改建议:
- 一定要修改的端口是22端口和模板的宝塔面板登录端口8888
- 不建议修改的端口是80,443,和mysql的端口3306
- 不建议安装的服务FTP,因为可以使用SFTP