我正在运行 CentOS 6,http -2.2.15
在受到 HTTP 攻击时,我可以看到许多 http 进程正在运行。
> netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
> 1 established)
> 1 Foreign
> 2 LAST_ACK
> 11 LISTEN
> 15 FIN_WAIT2
> 19 CLOSING
> 27 FIN_WAIT1
> 91 SYN_RECV
> 116 ESTABLISHED
> 10399 TIME_WAIT
所有连接的数量:
netstat -an | grep :80 | wc -l
10533
统计所有唯一 IP 地址:
netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc -l
231
请提供建议,我们可以做些什么来找出谁建立了最多的联系?
附言:服务器负载并未受到此次攻击的影响。
谢谢您的帮助。
答案1
这些是正在计数的空白行,grep -v '^$'
在管道中的 uniq 前添加即可解决。这很可能不是攻击,而可能是软件问题。您的正常数字是多少?我看过关于 MySQL 4/5 导致大量 TIME WAIT 状态连接的文章。您是否有任何新安装或更新、配置更改与问题相对应?
答案2
在您在此处发布的数据中,我没有看到任何受到攻击的证据。
我认为这些数字唯一不寻常的地方是 TCP 连接打开和关闭的速度有多慢。我不希望看到 和 的两位数。这意味着如果发生攻击SYN_RECV
,它可能不是基于 TCP/端口 80 的,FIN_WAIT1
或者FIN_WAIT2
是它使某些网络管道饱和,从而减慢了您的通信速度,可能是来自您设备的上游。
查看您的带宽图表,并要求托管服务提供商查看他们的图表。如果没有任何显示,请开始查找故障的网络设备。如果您看到带宽大幅增加,请从任何边缘网络设备中提取有关您使用的流量类型的统计数据是看到。
TIME_WAIT
连接数对您来说不是问题。只有当您拥有太多连接以至于无法打开新连接时,它们才会成为问题。默认情况下,此阈值约为 30,000。