开放的服务一定要小心
又搞我?
继我的服务器竟然被攻击了!之后,我的服务器又被攻击了,上次是解决了远程用户登录,定时执行恶意脚本的问题。
但这次又对我的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
修改数据库配置是不能省去重启服务的步骤。