我的数据库被勒索了!

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

因为是开源项目嘛,为了控制成本,数据库使用的是阿里云 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、服务器安全加固

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



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

在MongoDB数据库遭遇勒索攻击的情况下,需要采取一系列应急响应措施以恢复数据并防止进一步的损害。以下是一个详细的处理方案: ### 1. **隔离受影响系统** 立即从网络中隔离受感染的MongoDB服务器,以防止攻击者继续访问或加密更多的数据。 ### 2. **评估损害程度** 检查数据库的状态和完整性,确认哪些数据已经被加密或篡改。查看日志文件以了解攻击的时间、方式以及可能涉及的数据范围。 ### 3. **停止MongoDB服务** 如果尚未完成,则应立即停止MongoDB服务以避免任何进一步的数据修改。 ```bash sudo systemctl stop mongod ``` ### 4. **备份现有数据** 即使数据已被加密,也应创建一份当前状态下的完整备份。这可以作为后续分析和潜在恢复工作的基础。 ### 5. **检查认证与授权配置** 根据安全最佳实践,在`admin`数据库中的`system.users`集合里添加用户后,确保启用了认证机制。如果没有启用认证,按照引用[1]所述,此时不需要认证就可以进行所有操作,直到第一个用户被创建为止。因此,请验证是否正确设置了用户权限管理,并且只有授权用户才能访问数据库。 ### 6. **利用备份恢复数据** 如果有定期的数据备份,尝试使用最近的安全备份来恢复未受感染的数据。确保备份是在攻击发生之前创建的,并且没有包含恶意代码或被篡改的信息。 ### 7. **更新和打补丁** 确保MongoDB及其相关组件都更新到了最新版本,安装所有可用的安全补丁,以消除可能导致漏洞的因素。 ### 8. **加强安全性设置** - 启用并正确配置SSL/TLS加密通信。 - 使用强密码策略,并为不同的用户分配最小必要的权限。 - 配置防火墙规则限制对MongoDB端口的访问,仅允许信任IP地址连接。 - 定期审计用户账户及权限分配情况。 ### 9. **监控和日志审查** 实施持续监控,定期审查日志文件,以便及时发现异常活动。对于Apache等Web服务器的日志分析,可参考类似命令如`cat`, `cut`, `sort`, `uniq`, `awk`组合来识别可疑行为(见引用[2])。 ### 10. **寻求专业帮助** 如果内部团队无法有效应对此次事件,建议联系专业的网络安全公司或者MongoDB支持团队获取更深入的帮助和技术指导。 ### 11. **教育员工** 最后但同样重要的是,组织内部应该开展针对IT人员和其他相关人员的安全意识培训,提高他们对社会工程学攻击的认识,减少未来遭受类似威胁的风险。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值