这几天我的服务器遭受了这种攻击:(带宽>60MBit/s,XXX.XXX.XXX.XXX是多个IP)
tcpdump -n proto ICMP
17:15:19.267464 IP XXX.XXX.XXX.XXX > my_ip: ICMP time exceeded in-transit, length 36
17:15:19.325217 IP XXX.XXX.XXX.XXX > my_ip: ICMP time exceeded in-transit, length 36
17:15:19.345561 IP XXX.XXX.XXX.XXX > my_ip: ICMP time exceeded in-transit, length 56
17:15:19.484865 IP XXX.XXX.XXX.XXX > my_ip: ICMP time exceeded in-transit, length 36
17:15:19.529616 IP XXX.XXX.XXX.XXX > my_ip: ICMP time exceeded in-transit, length 36
17:15:19.957058 IP XXX.XXX.XXX.XXX > my_ip: ICMP YYY.YYY.YYY.YYY tcp port 39692 unreachable, length 36
17:15:19.968957 IP XXX.XXX.XXX.XXX > my_ip: ICMP host YYY.YYY.YYY.YYY unreachable, length 56
17:15:20.112520 IP XXX.XXX.XXX.XXX > my_ip: ICMP host YYY.YYY.YYY.YYY unreachable, length 56
17:15:20.203199 IP XXX.XXX.XXX.XXX > my_ip: ICMP host YYY.YYY.YYY.YYY unreachable, length 36
17:15:20.204803 IP XXX.XXX.XXX.XXX > my_ip: ICMP host YYY.YYY.YYY.YYY unreachable, length 36
我有 FreeBSD 9.1,我的 pf.conf 是
ext_if="em0"
table <blockedips> persist file "/etc/pf-blocked-ips.conf"
set skip on lo0
block drop in log (all) quick on $ext_if from <blockedips> to any
block in
pass out flags S/SA keep state
pass in on $ext_if proto tcp to port 80 flags S/SA keep state
pass in on $ext_if proto tcp to port ssh flags S/SA synproxy state
我能做点什么吗?
答案1
您实际上不太可能看到超过 60Mbit/sec 的 ICMP 回复,而只是表示数据包丢失。如果是这样,则很有可能您遭受了 DoS 攻击,或者某种失控进程从您的主机发送了虚假流量。
一个好的开始是捕获流量样本(使用 pcap 或 wireshark 或 tcpdump 等),并对其进行分析;查看您是否实际发送了与 ICMP 回复相对应的数据包。您需要捕获的不仅仅是 ICMP 流量。如果您发送了与之相关的内容,则需要做两件事:
- 确定为什么以如此高的速度或过多的重试发送流量
- 确定发送流量的进程是否应该运行(netstat 有时可以使用选项来帮助解决此问题
-p
) - 使用 traceroute 实用程序来隔离路由问题的可能原因并纠正它们(或要求您的 ISP 纠正它们)
如果您没有发送生成这些回复的流量,并且 ICMP 流量正在压垮您的链接,您需要联系您的 ISP 并请他们帮助您缓解这个问题。