mysql max_allowed_packet自动重置为1024 终结解决
- 背景:
测试环境1台centOS机器,最近一段频繁报“
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1354 > 1024). You can change this value on the server by setting the max_allowed_packet' variable
”, 记录解决问题的思路,最终找到问题根源:黑客入侵,总结经验。
- 思路:
查看max_allowed_packet :
show global VARIABLES like '%max_allowed_packet%'; (注意:mysql 系统参数分为session和global 之分, session只当前连接生效,global 全局连接生效)
1).通过mysql客户端,set global max_allowed_packet = 2*1024*1024*10; (修改后,重启数据库会恢复为默认)
2). 修改my.cnf 在[mysqld]段或者mysql的server配置段进行修改。(终极修改, 修改后重启数据库,永久生效)
mysql> show variables like '%log%';
+-----------------------------------------+---------------------------------+
| Variable_name | Value |
+-----------------------------------------+---------------------------------+
| back_log | 50 |
| binlog_cache_size | 32768 |
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | STATEMENT |
| expire_logs_days | 0 |
| general_log | OFF |
| general_log_file | /var/run/mysqld/mysqld.log |
打开general_log:
mysql> set global general_log = ON;
查看general_log:
tail -f /var/run/mysqld/mysqld.log |grep max_allowed_packet (查看log,但打印大量实时sql操作)
tail -f /var/run/mysqld/mysqld.log |grep max_allowed_packet >1.txt (过滤max_allowed_packet,并输出到文件1.txt)
果然发现,有以下修改:
160804 8:59:41 172 Query SET GLOBAL max_allowed_packet=1024
172 Query SET GLOBAL max_allowed_packet=1024
173 Query SET GLOBAL max_allowed_packet=1024
160804 8:59:49 173 Query SET GLOBAL max_allowed_packet=1024
172 Query SET GLOBAL max_allowed_packet=1024
了解到general_log 日志中,172 为用户连接Id(mysql 会对每一个连接分配唯一id),在全量general log中过滤id为172的操作如下:
(很遗憾,由于机器被攻击,总监要求对机器进行系统还原,在写日志时,log被删除了),大概如下:
connect root@someipaddress on
Query select 0x4D5A900..........(verylong)
Query select sys_exe('cmd /c c:/windows/nbvqc4.vbs')
.........
set global max_allowed_packet 1024
........
从登陆ip 查询到时美国的一个IP, 操作主要有:从某一网站,下载脚本,并执行;打开mysql相关安全参数,设置相关变量。
至此,非常确定mysql 数据库被黑客攻击了。
- 疑问:
1. mysql部署在内网,外网如何访问?
原来,之前便其它合作伙伴提供外网测试环境,让网管把外网IP,影射到了此机器。导致通过公网IP直接访问到了此台机器。
验证:
1). 通过外网IP, 使用mysql客户端,可以直接连接到mysql服务。
2). 通过外网IP, 使用xshell 登陆成功。
2. 黑客怎么知道了用户名/密码?
由于是测试机器,mysql使用了简单了密码(root/123456) , 被猜到,破解太容易了。
3. 防火墙呢?
由于开启防火墙,在系统测试时,出现各种麻烦。就关闭了。service iptables status;
[root@bo bryant]# service iptables status;
iptables: Firewall is not running.
[root@bo bryant]#
4. 黑客是怎么发现漏洞的,为什么入侵目的?
猜测大概流程: 通过扫描软件扫描公网ip, 测试到机器端口未关闭,如22,3306(应对1: 开启防火墙,只开放服务端口,禁用其它端口外网访问),尝试暴力密码登陆(应对策略2: 复杂密码策略,可建立白名单,对于多次连接失败,进行日志记录和预警)。通过日志发现了,黑客主要操作为:在mysql中调用了系统命令(下载远程文件,增加执行权限,并执行),打开相关安全参数。
查看机器登陆历史及登陆失败历史,发现近段时间,有大量外网登陆失败情况,如下图中oracle, svn ,apache 用户,黑客通过常用应用的用户名/密码在不停的尝试登陆系统:
producti ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
producti ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
swsoft ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
swsoft ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
iraf ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
iraf ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
svn ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
svn ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
oracle ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
oracle ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
root ssh:notty 217.76.78.35 Mon Aug 1 10:49 - 10:49 (00:00)
lab ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
lab ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
root ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
root ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
apache ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
apache ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
root ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
root ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
root ssh:notty 217.76.78.35 Mon Aug 1 10:48 - 10:48 (00:00)
5. 黑客为什么要修改 max_allowed_packet 1024 ?
修改了max_allowed_packet =1024,将导致所有数据操作,如果返回结果>1024,将报错。 修改此参数,很容易让用户发现数据问题,推测是骇客是故意暴露自己,也许只为了炫耀一下。
- 总结:
1. 再次证明在遇到复杂技术问题google 比百度要靠谱多
2. 日志分析是解决问题的必须途径
3. 增加信息安全意识,原来黑客离我们并不远,如果不是故意暴露自己,我们也不会发现此机器被黑,黑客控制此机器后,可以轻易使用此机器,进行相关非法活动。
具体:
1. 外网机器,一定要开启防火墙,只开放提供服务端口,禁用其它端口。 制定相关安全策略,如记录登陆用户ip,定期查看登陆用户历史及登陆失败记录,对于反复登陆能拒绝登陆。
2. 系统用户名,应该根据需要确定是否使用root用户,具体业务最好使用普通用户权限。因为root用户,拥有系统系统的全部权限。
3.密码:用户密码一定不要使用简单密码,最好使用密码生成器生成负责密码(大小写,特殊字符,长度)
4. 数据安全:
mysql应该给不同业务创建不同用户,并赋予有限功能权限,禁止root 用户做业务操作。
mysql max_allowed_packet自动重置为1024 终结解决的更多相关文章
- 解决IDEA中导入新的maven依赖后Language Level自动重置问题
问题: 弄了个测试项目,因为有涉及JDK1.8的代码,所以将IDEA中默认的Language Level 5(即对应JDK1.5),修改为了8(即对应JDK1.8),但是每次引入新的maven依赖,自 ...
- MySQL server has gone away 问题的解决方法
mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ...
- MySQL server has gone away 问题的解决方法(转)
mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ...
- 一次“MySQL server has gone away”故障及其解决
1,问题现象 某次测试发现,程序失去响应.由于程序集成了EurekaLog组件,弹出了错误框.查看其给出的Call Stack信息,发现没有发生线程死锁(DeadLock=0;),问题在于 Wait ...
- Mac Mysql初始密码重置
今天晚上mac更新后重装MySQL 安装完成后 启动服务,死活登录不了 提示1045错误.按照网上的资料对MySQL密码进行重置.记录步骤如下: 1.首先关闭MySQL服务 系统偏好设置->最下 ...
- MySQL查询优化:查询慢原因和解决技巧
在开发的朋友特别是和mysql有接触的朋友会碰到有时mysql查询很慢,当然我指的是大数据量百万千万级了,不是几十条了,下面我们来看看解决查询慢的办法. MySQL查询优化:查询慢原因和解决方法 会经 ...
- MYSQL数据库自动本地/异地双备份/MYSQL增量备份
构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...
- PDOMySQL实现类, 自动重置无效连接
PHP连接MySQL时, 有可能因为MySQL的原因,而使得php里生成的连接无效.比如超过8小时, MySQL自动断开空闲连接的问题,虽然可以调高这个时间,但显然这不是比较文艺的实现方式.现在洒家用 ...
- MySQL mysqldump与source导入慢的解决方法
Jquery中文网 > 数据库 > mysql > 正文 MySQL mysqldump与source导入慢的解决方法 MySQL mysqldump与source导入慢的 ...
随机推荐
- Java最重要的21个技术点和知识点之JAVA多线程、时间处理、数据格式
(四)Java最重要的21个技术点和知识点之JAVA多线程.时间处理.数据格式 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能 ...
- 1.7.4.2 Local Parameters in Queries--局部参数
1. 局部参数 Local parameters是在solr请求中指定一个查询参数.Local parameters提供了一个方式以添加元数据到某个参数类型中,如查询字符串(在solr文档中,Loca ...
- iOS 实现进度条(progress)
#import <UIKit/UIKit.h> @interface ZSDProgressView : UIView { UIView *progressView;//进度view } ...
- 【Android车载系统 News | Tech 3】News 从手机征战到汽车 Android Auto对比CarPlay 2014-12-29
Google和苹果都试图给用户的汽车带来一个安全和友好的移动体验.Android Auto和CarPlay是这两家公司推出的专为车载而重新设计的移动用户界面,双方目前都在筹备着在明年正式大规模推广. ...
- 【Mood-4】心静是一门艺术
到现在工作还没有着落,心里面反而比以前平静,以前也知道自己的水平 属于一瓶不满,半瓶咣当的那种情况,但是那时候的自己总是觉得自己的综合水平可能会弥补一下自己在技术上的缺失,但是,现在看来,太过于自信, ...
- BI跟报表一样吗?
一.报表≠BI很多的人认为,报表就是BI.实际上,报表只是BI的一部分,虽然BI应用的结果通常需要通过报表来展示,但是,BI绝对不仅仅是报表.其实,大家对这些概念的理解,如同15年前的ERP一样.19 ...
- poj 1821 动态规划
思路:每次枚举每个工人的右边界j,维护最优的左边界k.那么dp[j]=max(dp[j],dp[k]+(j-k)*w[i].p): 对于每个工人的初值k=w[i].s-1; 令x=j-w[i].l,如 ...
- CF 118E Bertown roads 桥
118E Bertown roads 题目:把无向图指定边的方向,使得原图变成有向图,问能否任意两点之间互达 分析:显然如果没有桥的话,存在满足题意的方案.输出答案时任意从一个点出发遍历一遍即可. 求 ...
- OC Categroy类别
Categroy类别,又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同. 定义: ...
- 在window 下安装Memcache详解
有时候我们需要在本地测试的时候就用到memcahce,如果本地没有安装memcache,就会有下面的错误提示: 1234567 系统发生错误 您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ...