起因:数据库之前经常报错,改了max_allowed_packet之后过一段时间又恢复成1024(就是这个原因报错),然后在网上查了一下可能是被别人攻击了,按网上的方法打开了查询日志set GLOBAL general_log = on。
然后在 general_log 日志中看到如下信息:
图一(攻击者IP一):
图二(攻击者IP二):
图三(攻击者IP三,就是这个IP在下面改了max_allowed_packet=1024,原因是太长截图没截出来):
图四(MySQL的用户列表):
现在有如下几点疑问:
1、图一和图二和图三的SQL语句,大致是实现了什么功能?
2、root账户设置的是localhost(如图四),按理来说不能由远程IP连接,可是为什么图一和图二是用root账户连接的?
3、能否数据库密码泄露了?这种情况该怎么样预防?
还有一点疑问就是,网站并没有用到root账户及密码,那么这个攻击者是怎么用root账户登录的呢?
以上,讨教各位大神,不胜感激!
然后在 general_log 日志中看到如下信息:
图一(攻击者IP一):
图二(攻击者IP二):
图三(攻击者IP三,就是这个IP在下面改了max_allowed_packet=1024,原因是太长截图没截出来):
图四(MySQL的用户列表):
现在有如下几点疑问:
1、图一和图二和图三的SQL语句,大致是实现了什么功能?
2、root账户设置的是localhost(如图四),按理来说不能由远程IP连接,可是为什么图一和图二是用root账户连接的?
3、能否数据库密码泄露了?这种情况该怎么样预防?
还有一点疑问就是,网站并没有用到root账户及密码,那么这个攻击者是怎么用root账户登录的呢?
以上,讨教各位大神,不胜感激!
解决方案
5
大致连服务器的密码都丢了
5
如楼上说的, 你还得确认下, 对方能否直接登录你服务器了….
10
你的权限表过于简单了。
图四这张表, 明白得让 任何地方的两个用户(一个server,一个xxxx)都可以读写任何数据库(包括mysql数据库),
一旦能读写mysql数据库,你的系统就没有安全 了。
黑客可能知道了server 的密码,从远程连入 大肆修改。
MYSQL涉及权限的表一共有5个,最重要的权限表,一个user, 一个db
一般是这样设置的
1、user表里 除了 root localhost有全部权限外,其他 xxxx %一概没有权限,
2、要开通权限在 db 表里。
好好看一下 mysql 文档里权限 这章。
图四这张表, 明白得让 任何地方的两个用户(一个server,一个xxxx)都可以读写任何数据库(包括mysql数据库),
一旦能读写mysql数据库,你的系统就没有安全 了。
黑客可能知道了server 的密码,从远程连入 大肆修改。
MYSQL涉及权限的表一共有5个,最重要的权限表,一个user, 一个db
一般是这样设置的
1、user表里 除了 root localhost有全部权限外,其他 xxxx %一概没有权限,
2、要开通权限在 db 表里。
好好看一下 mysql 文档里权限 这章。
10
1、能用root登陆,说明肯定是连服务器了,需要确认服务器能否被可疑人登陆。
2、图一的sql向服务器写了dll文件,可以杀毒软件看下这个文件;
图二更新了一个表的数据,看看生产库有没有这个表?
图三创建了一个新用户,并且更新数据包的大小。
3、建议尽快修改服务器的用户密码
2、图一的sql向服务器写了dll文件,可以杀毒软件看下这个文件;
图二更新了一个表的数据,看看生产库有没有这个表?
图三创建了一个新用户,并且更新数据包的大小。
3、建议尽快修改服务器的用户密码
5
只要修改服务器的密码就可以了。修改mysql用户密码意义不大,实际上只要能登陆到服务器,通过修改mysql的my.cnf文件,不需要任何用户密码就能登陆mysql。
一句话,mysql的安全依赖于服务器的安全
一句话,mysql的安全依赖于服务器的安全
5
至少 不会出现 图3 的攻击,有人用 server @% 修改了权限表。
web 连接数据库的用户,都不需要有全局修改权限,否则一旦脚本有漏洞,黑客可利用此漏动攻击
当然假如服务器被攻击,mysql 防范得再好也没用。
10
你的权限表过于简单了。
图四这张表, 明白得让 任何地方的两个用户(一个server,一个xxxx)都可以读写任何数据库(包括mysql数据库),
一旦能读写mysql数据库,你的系统就没有安全 了。
黑客可能知道了server 的密码,从远程连入 大肆修改。
MYSQL涉及权限的表一共有5个,最重要的权限表,一个user, 一个db
一般是这样设置的
1、user表里 除了 root localhost有全部权限外,其他 xxxx %一概没有权限,
2、要开通权限在 db 表里。
好好看一下 mysql 文档里权限 这章。只要关闭这两个用户的全局权限,就安全了吧?
并且修改下服务器的密码
5
你的权限表过于简单了。
图四这张表, 明白得让 任何地方的两个用户(一个server,一个xxxx)都可以读写任何数据库(包括mysql数据库),
一旦能读写mysql数据库,你的系统就没有安全 了。
黑客可能知道了server 的密码,从远程连入 大肆修改。
MYSQL涉及权限的表一共有5个,最重要的权限表,一个user, 一个db
一般是这样设置的
1、user表里 除了 root localhost有全部权限外,其他 xxxx %一概没有权限,
2、要开通权限在 db 表里。
好好看一下 mysql 文档里权限 这章。只要关闭这两个用户的全局权限,就安全了吧?
并且修改下服务器的密码
注意使用最小权限
5
Access denied表示没有连上。
35
这确实表示黑客在暴力破解,那个max_allowed_packet自动被重置,你的截图里面已经很清楚了:也是被黑客破解之后,给你重置的。
主要的防护方法没有太好的办法,假如你的mysql数据库是允许全部远程访问,那就只能针对防火墙做3306端口的防护了。可以设置只允许某几个IP访问3306端口,这样子假如你的IP是变动的,也有点麻烦,要经常改。
不过找到原因就好了,比起麻烦,安全更重要。
主要的防护方法没有太好的办法,假如你的mysql数据库是允许全部远程访问,那就只能针对防火墙做3306端口的防护了。可以设置只允许某几个IP访问3306端口,这样子假如你的IP是变动的,也有点麻烦,要经常改。
不过找到原因就好了,比起麻烦,安全更重要。
5
dede 织梦的哦,是虚拟主机么?