作者chinsan (有若无,实若虚)
看板FreeBSD
标题Re: [请益] 请问这是受到攻击吗?
时间Thu Apr 9 05:09:10 2009
※ 引述《sweetwords (米虫三号)》之铭言:
: 最近 LAB 的 FreeBSD 测试机,
: 常常开机太久後网页资料连结到资料库不是读取太久,
: 就是整个资料库都连不到
1)有可能 DB Lock 或 DB connect 过多超出预设值,
2)也有可能记忆体用光,或超出 kern.maxfiles or kern.maxfilesperproc
或没设妥 MySQL updatelog 的存放量以致硬碟满了
或安装时未规划妥 RAID 或硬碟空间整体配置布局
或者瞬间流量满了(超出网卡或 switch 撑不住)_
3)也有可能前端网页程式不是很严谨,遇上 SQL injection 之类攻击状况。
1) 可以下 show full processlist 或以类似如下
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
LockTxt=$(/usr/local/bin/mysql -u whoami -p'xxoo' -h192.168.x.x -e \
"show full processlist" | grep -v Sleep \
| grep -v Connect | grep -v '\-\-\-\-' | grep -v "Command" \
| egrep -v "[[:cntrl:]][0-1][[:cntrl:]]" \
| grep -v "processlist")
if [ "$LockTxt" != "" ];
then echo "$LockTxt" | sed "s/^/$(date)\t/g" >> ~/dblock.log
fi
exit 0
方式写成 script 放到 crontab 去跑并把 log 存起来,来察看是否有 lock 发生,
并根据经验来判别该 lock 行为是否为人为失误操作所致,比方说 SELECT * 之类,
或异常行为或疑似攻击行为。
若是超出 MySQL max_connections 则要依需求来调整 my.cnf
在 [mysqld] 区段加上 max_connections = 1024 之类设定,并重启 MySQL 即可。
2) 可以用 pstat -T 跟 df -h 与 netstat -m 之类察看,
像是若超出最大同时开启档案数也可以考虑以 sysctl 调高一些,
并以相关 snmp 工具来辅助确认流量方面是不是有问题。
3) 可能要多注意 web ap 内相关 SQL 检验跟表单检查,
而 web app 的档案权限, owner, group 也要注意
有闲钱的话可以考虑看看 WAF 产品。
: 每次都要 reboot 状况才会改善
: 一直在想说是不是受到攻击之类的?
: 下了 netstat 去看
: c42e54ec stream 0 0 0 c42e59d8 0 0 /tmp/mysql.sock
: c42e5604 stream 0 0 0 c3a3e3d4 0 0 /tmp/mysql.sock
: c42e5a64 stream 0 0 0 c42e5460 0 0 /tmp/mysql.sock
: 发现有这个暂存档,不知是否是这个原因搞挂 mysql
: 随着开机时间越多,我也发现这个 stream 会越来越多
: 但是不懂这是啥意义?有各位前辈可以解答吗,非常感谢 <0>
这、、 你去 google 一下 mysql.sock 是作什麽的,或者找位 DBA 人员问问也可。
: 另外也有找到资料是 httpd 开启两个服务让 mysql loading 太大
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^?
: ps aux | grep httpd 我也有试着下版友给我的建议这个指令
这指令以及 ps aux | grep httpd | wc -l 的执行结果为?
: cat /var/log/httpd-access.log 11:45
: 除了以上这个以外,还会跑出一堆在
: 帐号/底下的 log
log 内容大约像是什麽?
--
静中见真境,淡中识本然
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.108.147