MySQL安全优化

前几天登录博客发现服务异常啦;
上去一看发现表都没啦;
留下了一个可以恢复数据的邮箱;
大概意思就是要想拿回数据,就得支付相应泰达币!
本人穷困潦倒;
对不起,没钱;
数据你拿去就是;
教训我收到了!保证不再犯!!

我大概总结了一下;
之所以被攻击,其致命原因有三点:
1.用户名和密码太简单,我的用户名采用的默认root,密码为最简单的123456789;
2.mysql端口号采用的是默认端口3306;
3.权限设置所有IP均可访问;

这样的安全意识,我不被攻击谁被攻击~
mysql安全问题开始重视起来;

第一件事情修改密码;

use mysql;
update user set password=password('新密码') where user='root';//有的mysql版本密码是这个字段 authentication_string
flush privileges;

密码越复杂, 越好;

第二件事情设置权限;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '你的密码' WITH GRANT OPTION; // 设置整个库给固定ip访问
flush privileges; //刷新权限表

业务允许的情况;
修改MySQL配置文件my.cnf,加入如下一行;

bind-address = 127.0.0.1 // 只允许本机连接

第三件事情修改端口号;


port = **** // 开放安全组,修改端口号 , 尽量不要是3306

第四件事情加入bin_log日志;
开启mysql二进制日志;
在误删除数据的情况下;
可以通过二进制日志恢复到某个时间点;
修改MySQL配置文件my.cnf,加入如下两行;

server-id = 1 // server-id标识着单个节点的id。在主从或者集群中会使用到,不能与其他节点相同。这里只有一台机,随机设置一个数字就好了。
log_bin = /usr/local/mysql/mysql-bin

重启mysql;
查看binlog日志是否开启;

show variables like '%log_bin%';

OFF 关闭状态;
ON 开启状态;

现在我们这么做的话root账户只允许从本地访问;
没办法远程连接;
类似于我们要使用NaviCat工具的同学们就连接不上啦;

还有办法;
办法总比困难多;
使用mysql SSH隧道连接的方式;
也是我之前工作使用过的一种方式;

// 将本地的id_rsa.pub文件复制到mysql服务器中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@49.232.86.95

// 在使用如下命令
ssh -NCPf root@49.232.86.95 -L 3307:49.232.86.95:3307
// 利用ssh命令在本机开个3307的端口;这个端口为隧道的入口端口,通过在本机连接这个端口来达到连接mysql服务器3307端口的目的;

参数解释
-C 使用压缩功能,是可选的,加快速度;
-P 用一个非特权端口进行出去的连接;
-f 一旦SSH完成认证并建立port forwarding,则转入后台运行;
-N 不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持);

这里的root@49.232.86.95是登陆mysql服务器的SSH用户名和IP地址-L 3307:49.232.86.95:3307;
这个参数的意思是说在本机开放3307端口;
到49.232.86.95:3307端口的映射;
也就是说隧道的入口为3307出口为mysql服务器的3307;

如果出现错误:
错误是:The authenticity of host 49.232.86.xxx can't be established.
执行ssh -o StrictHostKeyChecking=no 49.232.86.xxx 就OK;
ps:这个好像是用来避免 输入第一次 执行ssh 要求收入yes/no 用的;

然后再使用navicat进行连接;

beautiful !!!

注意被黑过的账号;
作为一个专业的黑客;
自然会给自己留后路;
比如偷偷加一个数据库账号;
所以我们要还要查一下用户表;
如果发现不认识的账号;
一定要删了;
如只保留根角色;

针对此事项,建议做以下调整,以防范黑客攻击:
1、服务器的管理员密码具备一定复杂度,建议使用字母、数字、字符组合的密码;
2、服务器关闭远程访问(或关闭外网的远程访问),调整远程访问默认的端口号;
3、mysql的root用户密码具备一定复杂度,建议使用字母、数字、字符组合的密码;
4、mysql不允许任意远程端连接,建议仅对协同系统所在的IP地址放开连接;
5、mysql不使用默认的3306端口,建议修改为其他端口。(mysql的配置文件:Windows为my.ini、Linux为my.cnf,修改其端口号);
6、mysql设置定时备份,并将数据备份包备份在异机(或异地);

史大坨博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论