该图片由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以及管理员权限去运行!同时将权限限制到最小!

预防

下面是我查阅资料找到的一些常规的安全防范措施:

  1. 服务器的管理员密码具备一定复杂度,建议使用字母、数字、字符组合的密码。
  2. 服务器关闭远程访问(或关闭外网的远程访问),调整远程访问默认的端口号。
  3. MySQL的root用户密码具备一定复杂度,建议使用字母、数字、字符组合的密码。
  4. MySQL不允许任意远程端连接,建议仅对协同系统所在的IP地址放开连接。
  5. MySQL不使用默认的3306端口,建议修改为其他端口。(mysql的配置文件:Linux下为my.cnf)
  6. MySQL设置定时备份,并将数据备份包备份在异机(或异地)。
  7. 网站程序不直接使用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的默认端口号修改成自己想要的(有女朋友的就改成女朋友生日,这样就忘不掉了)。

查了很多资料说MySQL的配置文件在/etc/mysql/my.cnf路径下,但是当我查看内容的时候却给我下面这样的信息:

这个文件里面根本没有任何参数设置(这是由于不同的mysql版本导致的,再次申明下我的系统版本为Ubuntu18.04,MySQL 5.7.25),只看到下面两行设置,表示导入这两个目录里面的配置文件。

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
复制代码

分别尝试打开查看内容后我们发现其实MySQL的相关配置都位于/etc/mysql/mysql.conf.d/mysqld.cnf里,进入目录后执行cat mysql.cnf可以看到在**[mysqld]标签下有很多参数信息,其中有一个参数就是port**,我们把它设置成自己想要的端口号就可以了(记得用vim时要加上sudo啊)。

最后重启下mysql就可以了。

sudo service mysql restart
复制代码

关闭MySQL的远程访问权限

MySQL有一套权限系统,他的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的SELECT、INSERT、UPDATE和DELETE权限。基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限,如果正式上线的时候没有关闭mysql的远程访问权限,就有可能会被利用然后删库。

  • 以root账户登录MySQL
mysql -u root -p
复制代码

然后输入原先的root密码进入数据库操作(mysql shell)

  • 选择数据库
use mysql;
复制代码
  • 关闭远程访问
update user set host = "localhost" where user = "root" and host= "%";
复制代码
  • 刷新权限
flush privileges;
复制代码
  • 退出MySQL的shell环境并重启mysql服务
sudo service mysql restart
复制代码

最后

上述内容是我自己针对此次服务器被攻击后查阅相关资料整理出来的,因为对这方面我也不是很懂,也只能做些简单的防护措施,仅供参考,如果大家有什么建议的可以在评论区或者公众号后台给我留言。

记一次服务器被攻击后的经历相关推荐

  1. 【实战篇】没有绝对安全的系统:记一次服务器沦陷后的分析

    [实战篇]没有绝对安全的系统:记一次服务器沦陷后的分析 https://www.sobug.com/article/detail/27

  2. 记一次服务器被攻击经历

    从接手公司服务器两个半星期经常性的无法正常ssh登陆,十次里面有九次半都是显示 ssh_exchange_identification:read:connection reset by peer   ...

  3. 服务器被攻击的发现和解决过程

    记一次服务器被攻击的发现和解决过程 这是之前2018年左右,买阿里云服务器之后,服务器被攻击,当时的记录信息,现在整理一下 出现的问题 解决思路和解决过程 解决思路: 解决步骤: 思考:为什么会出现这 ...

  4. 服务器被攻击了多久恢复?服务器被攻击了怎么处理?

    服务器若是被黑客或是攻击小组攻击,不同的机房会做出不同的策略调整.封机处理,一般2小时解封,最迟24小时,若是解封后仍然有攻击,则封机时间会增加24/48/72H... 再安全的服务器也避免不了网络的 ...

  5. Linux服务器被攻击方式及防御措施?

    主流的服务器攻击方式有多种手段,但是唯独DDoS攻击.CC攻击以及ARP欺骗,这些攻击方式被称为三大攻击手段,不仅可以致使服务器瘫痪,而且还很无解.www.xy3000.com DDOS攻击 DDoS ...

  6. 服务器被攻击多久可以恢复?

    服务器被攻击的时候不同机房做出的应对策略也是不同的,一般情况下2h内可以解封,最迟24h,如果解封后仍被攻击,那么,就可能会更久,也许是48h/72h,也许是直接永久封死. 那么,作为一名维护网站安全 ...

  7. vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...

    最近在跑实验,但是突然发现程序运行变慢,然后top命令查看程序运行情况,发现有异常进程,名字叫 bash,占用 2400% CPU计算资源. 刚开始怀疑是挖矿程序,因实验室网络IP为教育网公网,怀疑被 ...

  8. 记一次服务器被挖矿木马攻击的经历

    背景 利用空余时间买了台服务器做了个小网站玩,今天访问了一下,加载巨慢,一看服务器运行情况,CPU飙到100%,按CPU消耗排序,排在第一的是一个名为"imWBR1"的进程,查了一 ...

  9. 记一次遇到挖矿程序的经历

    就在几天前,遇到了一次挖矿程序偷偷装在ECS阿里云服务器上的经历. 那是一个风和日丽的上午,我和往常一样来到公司,倒杯水等待电脑打开,之后打开日常维护的几个系统. 结果其中有一个OA系统,发现无法正常 ...

最新文章

  1. opencv图像恢复逆滤波_OpenCV之快速的图像边缘滤波算法
  2. mysql不可重复读和重复读_脏读、幻读、不可重复读的区别是什么
  3. unity怎么实现人脸追踪_Unity 2019.2 beta为AR增加面部追踪、2D图像追踪、3D对象追踪等功能...
  4. vscode快捷替换json格式
  5. Linux:文件描述符
  6. 微信小程序点击跳转出现背景
  7. 华为鸿蒙系统智能手机_余承东再度确认:鸿蒙系统将适配到华为手机上
  8. WordPress注册登录注册系统插件
  9. 实战案例丨GaussDB for DWS如何识别坏味道的SQL
  10. JSP断点续传多线程链接下载
  11. mysql+web日志分析工具_用Python+MySQL实现2017年web日志分析报告
  12. [转载] python3 闭包
  13. Softmax 回归的从零开始实现 pytorch
  14. TEM014 - 新版阿里云网站界面高保真原型模板-AxureUX
  15. python北京房价预测_Python爬虫告诉你北京房价有多高
  16. 记用Fiddler抓包爬取pc端微信公众号文章
  17. 软件开发中常见名词解释
  18. Instant-Meshes-标架场方法
  19. 第 20 题:请描述一下 BFC、IFC、GFC 和 FFC 的区别?
  20. 【10.03】富士康(世界500强第22位) 嵌入式软件相关多岗位招聘 10-45k月薪 内推...

热门文章

  1. 全国高校中文档--json
  2. 将秒数转换为时分秒的c语言程序,秒数换算(c语言输入秒转化为时分秒)
  3. 局域网访问提示无法访问检查拼写_windows无法访问请检查名称的拼写… 错误代码:0x80070035 | 吴文辉博客...
  4. win10和win7哪个好用_Win10和Win7到底哪个好用(真实评测)
  5. 常用二极管IN4148和单片机驱动的一些关系
  6. java 文本文件加密 文本文件解密
  7. SpringClude核心组件之Eureka
  8. 相忘于江湖—记一位朋友
  9. 基于机智云的智能花盆1.0
  10. bokeh与tornado结合的三种方式