Packet for query is too large
今天web 宕掉了 ,报500错误 Packet for query is too large
mysql写入数据过大,百度了一下方法,基本上都是让修改max_allowed_packet的值,这也是一种解决办法。windows修改my.ini,linux 直接 vi /etc/my.cnf 修改参数 改大一点就可以了。
但是这个异常延伸出来一个问题,我服务好几个月不宕机,为什么突然会有这种情况,因为数据量是一定的,要down早就down。所以开始怀疑服务器的安全性(linux)。
之前的linux服务器阿里云买来直接就用了 也没有做什么安全保护
立马上服务器备份了一版本数据库,和一些资源,开始查找原因。
首先看了威胁日志
cat /var/log/secure
果不其然,以下是部分截图
很明显,不止一个人在ssh扫描服务器的密码。
然后看数据库日志
show binary logs;
或者用ftp看看mysql/data/下的日志文件,时间对照着扫描你服务器的时间,慢慢看。 果然查到了异常操作
哎哎哎 ,测试服务器也是惨的不行 密码000000 原始端口 登录用root登录。以后一定要谨慎。还是不能用弱口令。
接下来看看怎么阻止ssh扫描linux弱口令吧
使用DenyHosts
地址http://denyhosts.sourceforge.net
安装就不说了
# cd DenyHosts-2.6
# python setup.py install
默认是安装到/usr/share/denyhosts目录的。
2. 配置
# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# vi denyhosts.cfg
PURGE_DENY = 50m #过多久后清除已阻止IP
HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny
BLOCK_SERVICE = sshd #阻止服务名
DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5 #允许root登录失败的次数
WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中
DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹
LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
HOSTNAME_LOOKUP=NO #是否做域名反解
ADMIN_EMAIL = #设置管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #自己的日志文件
DAEMON_PURGE = 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。
3. 设置启动脚本
# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control
完了之后执行daemon-contron start就可以了。
# ./daemon-control start
如果要使DenyHosts每次重起后自动启动还需做如下设置:
# ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig --add denyhosts
# chkconfig denyhosts on
然后就可以启动了:
# service denyhosts start
可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。
最后还是以后要提醒自己,一定要透过问题看到事情的本质,不要随便一百度叭叭叭一敲键盘就完事儿了。
最后感激这位大哥不杀之恩,虽然没啥重要的数据