开放的服务一定要小心

又搞我?

我的服务器竟然被攻击了!之后,我的服务器又被攻击了,上次是解决了远程用户登录,定时执行恶意脚本的问题。

但这次又对我的MySQL下手了,并且在每个库中留下了一张README的表,表里只有一条数据,如下:

您的数据库已删除。您必须支付 0.0125 比特币 (BTC) 才能取回它们。我拥有的备份:okay, wnh, xxl_job。通过 chin71303@proton.me 与我联系 只有与付款相关的邮件才会得到答复!

bc1q3l9q2n840y682vvy7xxs7cptnthag3z3xmfpgy

chin71303@proton.me

真是杀人且诛心啊!

跟上次一样,发生了这件事后我立刻马上就知道被攻击的原因了,还是我习惯了自己开发,随性的原因,平常我自己玩就不太注意开放出来的安全性,因为那时候仅仅是在自己的电脑上玩,不管是局域网还是防火墙都会有保障,而且一般不会全天24小时运行,但是到服务器上就不一样了,在安全规则上设置的比较随意,需要的端口都直接开放,中间件账号权限也是随意设置的,特别容易被以撞库等方式破解,这次事件也正是它带来的后果。

长个记性吧

吃一堑,长一智。

已经发生了一次了,我没有因此做好防护措施,反而在同一个地方跌倒了两次,真有我的。

一而再再而三,也就还好,我的服务器只是我自己随意玩的,没有什么重要的数据,丢了完全不打紧。

这次之后我真的要重视开放出来服务的安全性问题了,不能那么随意了。

什么重要端口的开放,用户名/密码弱口令,权限分配等等,都要着重注意一下了!

恢复吧

还能怎么办呢?

自己来恢复吧,这次影响的仅仅是MySQL数据,也还好。

MySQL连不上了

很奇怪,我用navicat连不上我的MySQL服务了,错误信息如下:

GHost '218.108.48.135' is not allowed to connect to this MySQL serverConnection closed by foreign host.

资料才知道原因,可以按如下操作恢复

1、在MySQL服务器上直接连接MySQL

mysql -u root -p

输入root密码

2、确认host并修改

use mysql;

select host from user where user = 'root';

如果查询结果只有一个localhost,执行update user set host = ‘%’ where user ='root’host设置为通配符%host设置了“%”后便可以允许远程访问。

3、更新

flush privileges;

恢复数据

说了不是管关键数据了,所以恢复起来很简单,xxl-job直接执行官方sql脚本即可,另一个项目也有备份sql,数据都是通过apifox造的,问题也不大。

比较伤心的是,我这段时间做的一个用户-角色-资源的表结构丢了,虽然重新做也不麻烦,但还是好烦。

修改配置重新部署

为了防止再次放生同类事件,正确的做法应当是创建出一些低权限的用户只用来操作业务数据库,而不是都使用root用户,还有要定期修改用户密码创建用户并授权

mysql> use mysql; mysql> update user set password=password(‘123’) where user=‘root’ and host=‘localhost’; mysql> flush privileges;

另外,貌似nacos修改数据库配置是不能省去重启服务的步骤。