我的数据库被勒索了!

最近一个多月,朋友苍何哥全身心投入到「开源项目」中,其中踩了很多的坑,今天分享的是「数据库被勒索」的经历,希望大家足够重视数据库的安全防护。

因为是开源项目嘛,为了控制成本,数据库使用的是阿里云 1 核 2G 的 ECS 服务器自己搭建的。


想着还在测试阶段,密码干脆就设置的比较简单,没错,就是 123456 😂。并且怎么简单怎么来,用的 docker 快速就搭建了,并没有设置好权限。

搭建好后过了一晚,一直在重启,看了下日志,以为是内存不足导致,又给 MySQL 加了「内存限制和内存保留」

过了一天又发现,还是重启,且数据都不见了,查了下数据库,只有这一张表,且看了下要我支付 「5825.97」 元,直接就给我整无语了。

勒索信息

于是用 AI 查了下,发现原来是被黑客勒索了,一直关注开发,对运维、安全和备份确实有失关注了,还好只是测试数据,于是针对于此,做了很多数据库安全加固,给大家做个分享。

解决措施

1、复杂化数据库密码

原先的 root 密码是:123456,现在需要更复杂才行,由于是跑在 docker 中,启动命令设置强密码。密码尽量包含大小写及特殊字符,特别是对于线上环境,一定要把 root 密码设置的复杂些。

2、修改数据库默认端口

有经验的开发人员,项目部署到正式环境,会把 Mysql 数据库的默认端口「替换成不常见的端口」,例如:33706

docker run -p 33706:3306 --name mysql \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
--memory 1.5g \
--restart=always \
-e MYSQL_ROOT_PASSWORD=填密码 -d mysql:5.7

原先应用服务器端口要删除 3306 端口,并增加 33706 端口,安全组设置如下:

安全组设置

并关闭关闭应用服务器防火墙端口:

sudo ufw delete allow 3306/tcp
开启防火墙

开启数据库服务器33706 端口:

sudo ufw enable

ufw allow 80/tcp
ufw allow 22/tcp
ufw allow 33706/tcp

3、限制数据库用户权限

一般不适用 root 用户来随意操作数据库,需要单独「新建一个用户」来操作,特别是开放远程连接,一定不能是 root 用户。

先用 docker logs mysql,看下日志,看下有没有启动报错,然后进入容器直接看:

查看权限

默认 root 用户有最高权限:

默认root权限

新增一个开发用户,并设置相应权限:

#切换到mysql库,mysql库里存放着user表
use mysql;
#查看user表现有
select host,user password from user;
#创建开发阶段所需临时用户:dev_laigeoffer,自定义密码,尽量复杂化
create user 'dev_laigeoffer'@'%' identified by '设置密码';

#如果密码设置错了还可以修改
ALTER USER 'dev_laigeoffer'@'%' IDENTIFIED BY '更改密码';


#给开发用户分配访问权限,暂时允许任何主机连接,授权用户除了将权限授予其他账户的能力
GRANT ALL PRIVILEGES ON *.* TO 'dev_laigeoffer'@'%';

# 修改后刷新权限
flush privileges;
#退出mysql数据库
exit;

mysql -u dev_laigeoffer -p

本地用 navicate 连接,

连接成功

4、准备数据库服务器

我被黑的 Mysql 数据库是和应用服务器(代码打包后部署的服务器)安装在一起的(为了省钱😂),为了安全正式环境应该「把数据库单独放一台服务器」,只允许让应用服务器IP来访问数据库服务器,通过独立两者,就算其中一台发生问题,另一台也是好的,进一步「降低了危险性」

于是买了个新的小内存的服务器专门用来做数据库。开源不易啊,等项目上线,「还望大家多多支持」

另外对于数据库,「最好不要用 docker 安装」,硬是要 docker,也一定要做好「磁盘挂载」才行,否则 docker 挂了,数据都不见了,磁盘挂载还可以把数据放在磁盘上永久保存。

5、定时备份数据库数据

可以定时的备份数据库,开发定时备份功能,每天晚上备份一下数据库,如果没有备份服务器,可以把备份数据存在应用服务器上。

我用的是阿里云自带的「云盘快照」解决:

云盘快照
快照策略

6、服务器安全加固

观察下服务器是否存在异常进程占用过多的服务器资源,可以参考这个文档做下操作系统加固:另外安全组不要放行不必要的端口,修改安全组规则。


总之还是那句忠告:不要觉得攻击不会发生在自己身上,安全防护意识很重要。

👇🏻 点击下方阅读原文,获取鱼皮往期编程干货。

往期推荐

我的新项目又来咯!

前后端分离,千万别再搞错了!

双非本,投递4000+份简历,上岸了!

爱用 CDN,钱包两行泪!

这次是真【一条龙】了!

看了周鸿祎的简历,我明白了为什么 9 年二手车能卖 990 万!

我开源了一套 RPC 框架,学爆它!

相关推荐

  • 永久激活GPT4.0+Suno!无限使用!最后机会!
  • 博后招募 | 浙江大学智能生物医用大分子实验室招收AI4Science方向博后/RA
  • 爆火后反转!「一夜干掉MLP」的KAN只是一个普通的MLP?
  • ICLR 2024 | 冻结住的CLIP仍可作为教师模型!港大提出全新开集动作识别模型
  • 志愿者招募 | “新星计划“火热开启,DataFun社区期待你的星光熠熠!
  • 专家对谈:大模型塑造数据产品研发新范式析
  • 火山引擎ByteHouse:如何为OLAP设计高性能向量检索能力?
  • 接入 Kimi 大模型,并充值提升并发
  • 原生案例:从零开始实现一个手风琴组件
  • 《2024年人工智能准备度报告》发布!6成企业拟采用AI,投入生产的仅占其中三分之一;OpenAI稳坐王位;比起RAG更爱微调…
  • Stack Overflow 大规模封禁账号:只因大量用户反对与 OpenAI 的合作
  • ChatGPT 之父最新演讲:GPT-5 聪明程度超乎想象,一大批 AI 初创公司的努力将变得毫无意义
  • 90后程序员辞职搞灰产:开发视频搬运软件、不到一年获利超700万,结局很刑!
  • Spring Boot集成Ldap快速入门Demo
  • 「超星未来」完成数亿元Pre-B轮融资,加码边缘侧大模型推理芯片
  • AI预测所有生命分子!谷歌AlphaFold 3模型登Nature,免费开放节省上亿年研究时间
  • 恭喜,77所高校入选 “101计划”!!!
  • 【Python】10个杀手级的Python自动化脚本!
  • 选导师选了个大牛,什么都不管,估计要被放养三年。。。
  • 前端权限开发——设计到实践(保姆级)