记一次服务器被黑后的经历
该图片由Robinraj Premchand在Pixabay上发布 我的小程序是在5月26号的时候上线的,运行了还没几天,5月30号的时候就有一个学弟告诉我说小程序用不了了,晚上回家打开电脑查看数据库的时候才发觉大事不好! 我的ytools数据库下的数据表去哪了,怎么就剩下一个WARING了???? 吓得我赶紧百度了一下 我擦,这是被攻击了吗?为什么腾讯云都没有给我安全警报啊??? 不过有没有安全警报都是次要的,最主要的事情还是要弄清楚原因是啥,然后想办法补救和预防,仅以这篇文章记录下自己被攻击后的经历。 原因 查了一些资料发现,其实被删库的事件屡见不鲜,2016年-2017年间,就曾出现过大量MySQL数据库被攻击,黑客留下QQ号,并索要高额恢复费的事情,哪怕是现在这种事情也经常发生。其实总的来说还是因为我们在服务器安全防范方面,意识相当不够,侥幸心理严重(就像到现在我也不懂我这个小屁民啥事也没做为啥还要搞我一样)。以下两种情况的MySQL最容易被攻击。 服务器密码过于简单的 很多人图省事,将服务器密码设置简单,方便记忆与登录,这往往给黑客留下破解空间。一旦服务器密码被破解,那黑客将可以直接登录到服务器,肆意修改数据、删除数据。针对这项,在设置密码时,建议:使用字母、数字、字符组合的密码,尽量在8位10位以上。不定期更换密码。 网站程序直接使用root权限 很多新手在使用数据库时,没有进行权限设置(或者纯粹就是图省事,项目跑起来就行了),网站程序直接连接root权限,一旦网站程序被破解,root账号密码也将被hei客获取。MySQL涉及权限的表一共5个,最重要的权限表:user、db。user表里除了root localhost有所有权限外,其他 xxxx %一概没有权限。需要开通权限要在db表里。 总之千万不要用root以及管理员权限去运行!同时将权限限制到最小! 预防 下面是我查阅资料找到的一些常规的安全防范措施: 服务器的管理员密码具备一定复杂度,建议使用字母、数字、字符组合的密码。 服务器关闭远程访问(或关闭外网的远程访问),调整远程访问默认的端口号。 MySQL的root用户密码具备一定复杂度,建议使用字母、数字、字符组合的密码。 MySQL不允许任意远程端连接,建议仅对协同系统所在的IP地址放开连接。 MySQL不使用默认的3306端口,建议修改为其他端口。(mysql的配置文件:Linux下为my.cnf) MySQL设置定时备份,并将数据备份包备份在异机(或异地)。 网站程序不直接使用root权限,单独设立用户权限。 措施 针对上述方法措施,在这给出修改过程。 环境声明 此次实验的环境为:腾讯云的Ubuntu Server 18.04,数据库为MySQL 5.7.25。 修改root账户密码 服务器密码的修改我们直接去控制台更改下就可以了,不多说,这里说下MySQL数据库root密码的更改。 以root账户登录MySQL mysql -u root -p 然后输入原先的root密码进入数据库操作(mysql shell) 选择数据库 use mysql; 更新root的密码 update user set authentication_string=password('新密码') where user='root' and host='localhost'; Tips:这里说明下,在MySQL 5.7 password字段已从mysql.user表中删除,新的字段名是authenticalion_string。 刷新权限 flush privileges; 退出MySQL的shell环境并重启MySQL服务 sudo service mysql restart 修改MySQL的使用端口 我们知道MySQL的默认端口是3306,为了安全起见,建议将MySQL的默认端口号修改成自己想要的(有女朋友的就改成女朋友生日,这样就忘不掉了)。 ...