我看到来自单个 IP 的大量连接。
# netstat -alpn | grep :80 | grep 92.98.64.103
tcp 0 0 my.ip.address.x:80 92.98.64.103:45629 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:44288 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:48783 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:40531 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:54094 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:47394 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:43495 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:55429 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:42993 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:49542 TIME_WAIT -
tcp 0 0 my.ip.address.x:80 92.98.64.103:54812 TIME_WAIT -
有 419 行这样的请求。但我在访问日志中只看到 1 个来自 92.98.64.103 的请求。这是 DoS 攻击吗?
更新- 419 个连接来自单个 IP。有多个这样的 IP 拥有超过 100 个连接。
我的服务器的正常 RAM 使用量约为 2-3 GB。但当时它使用了 15GB RAM。
root@mars [~]# netstat -alpn | grep ':80 .*TIME_WAIT' | wc -l
6728
更新2- TIME_WAIT 在几秒钟内增加到 10000 以上
root@mars [~]# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
1 established)
1 Foreign
4 CLOSE_WAIT
9 FIN_WAIT2
34 LAST_ACK
39 SYN_RECV
44 LISTEN
45 CLOSING
68 FIN_WAIT1
128 ESTABLISHED
10261 TIME_WAIT
但网络服务器加载正常,没有任何问题。
答案1
419 个可怜的连接不算是 DoS。
目前,在一台特定的中等使用率的网络服务器上,我有:
$ netstat -alpn | grep ':80 .*TIME_WAIT' | wc -l
384
此州内有 384 个连接。
每个 IP 有多少个?
$ netstat -alpn | awk 'BEGIN {FS="[ :]+";} /:80 .*TIME_WAIT/ {print $6}' | sort | uniq -c | sort -g | tail -n5
6 xx.xxx.xx.xx
6 xx.xxx.xx.xx
9 xxx.xxx.xx.xx
13 xxx.xx.xx.xx
48 xxx.xxx.xxx.xx
一个 IP 上有这么多请求是不寻常的 - 我猜是 PMTU 问题导致连接终止而没有发出请求。
如果您担心,请减少流量。
我建议减少套接字停留在 TIME_WAIT 状态的秒数。将以下内容添加到/etc/sysctl.conf
:
net.netfilter.nf_conntrack_tcp_timeout_time_wait=15
并运行:
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=15