最近做个项目,由于团队人员不在同一个办公地点,就弄了一台外网挂靠机做开发和测试环境。
在开发和测试的过长中,mysql 频繁的报: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 的值后,过一会儿后,又会被重置为默认值。
最后我发现是被黑客攻击了。
一、开启mysql日志,记录所有sql执行命令。
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 || innodb_flush_log_at_trx_commit | 1 || innodb_locks_unsafe_for_binlog | OFF || innodb_log_buffer_size | 1048576 || innodb_log_file_size | 5242880 || innodb_log_files_in_group | 2 || innodb_log_group_home_dir | ./ || innodb_mirrored_log_groups | 1 || log | OFF || log_bin | OFF || log_bin_trust_function_creators | OFF || log_bin_trust_routine_creators | OFF || log_error | /var/log/mysqld.log || log_output | FILE || log_queries_not_using_indexes | OFF || log_slave_updates | OFF || log_slow_queries | OFF || log_warnings | 1 || max_binlog_cache_size | 18446744073709547520 || max_binlog_size | 1073741824 || max_relay_log_size | 0 || relay_log | || relay_log_index | || relay_log_info_file | relay-log.info || relay_log_purge | ON || relay_log_space_limit | 0 || slow_query_log | OFF || slow_query_log_file | /var/run/mysqld/mysqld-slow.log || sql_log_bin | ON || sql_log_off | OFF || sql_log_update | ON || sync_binlog | 0 |+-----------------------------------------+---------------------------------+38 rows in set (0.00 sec)
mysql> set global general_log = ON;
Query OK, 0 rows affected (0.01 sec)二、第二天拿到log文件(/var/run/mysqld/mysqld-slow.log)
发现大量修改痕迹和sql注入。
从log中得知,有很多ip登录,有全国各地的,还有美国的,主要进行了这些操作:修改mysql相关安全参数,设置了一些变量值,从某一地址下载脚本,并执行(应该是挂木马)。
三、临时解决方案:
1、重装系统,或者下载杀毒软件。
2、开启防火墙,只开放提供服务的端口。
3、用户名和密码都设置复杂一点。