一般来说,监控部门会最先发现网络异常,如PPS、BPS突增,业务响应变慢。发现之后再按照应急处理流程通知对应的人来处理,网络部门、运维部门、安全部门等等。在某些特殊情况下,可能安全部门暂时无法上线,或者为了缩短应急响应的时间,就需要监控和网络部门做更多的事情,判定攻击并启用防御方案。前些天,我写了一个小脚本协助网络和监控做这个事情。

首先在异常的服务器上抓包,tcpdump -w /tmp/test.pcap -n -nn -i eth0 tcp port 80 and dst host 192.168.1.1。建议至少抓20-30秒,时间太短可能判断不准确。抓好包之后用perl脚本分析,判定是否为SYN Flood攻击,如果不是则判断每个ip建立的connection的数量。

有SYN Flood时,显示如下:

\

如果没有SYN Flood,显示结果如下:

\

需要说明的是,脚本并没有做可靠的检测,只是一种估算。在应急响应中,简单的估算已经基本够用了。代码还没有整理好,太乱了,过几天再贴。