我使用的是 Debian 6 - 64 位操作系统,我的服务器不时通过 udp 协议受到 ddos 攻击/淹没。我基本上托管游戏服务器,并将防火墙设置为对允许端口上的数据包进行速率限制,但有时每个 IP 的速率很低,但 IP 数量较多,因此我的服务器向攻击 IP 发送传出的 icmp 不可达回复,这没有任何好处,但会使端口更加阻塞/饱和。
我正在研究如何禁用此功能。实际上,受到攻击的端口是允许通过防火墙的,我无法禁用它们,尽管这可以解决问题。我运行了一些端口范围内的服务器,因此我无法不断地逐个接受这些端口,因此决定允许我可能需要的全部端口范围。
我正在研究一些内核能力来阻止这种情况?
答案1
为了防止发送 ICMP 不可达数据包,您可以使用 netfilter(iptables)丢弃它们:
iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP
更好的方法是首先通过在 INPUT 流量上使用 DROP 目标来防止它们的生成,而不是 REJECT(或者内核网络堆栈将创建不可达答复而不是 netfilter)
不过,我认为这并不能解决您的问题;您需要确定 DDoS 会产生什么影响;它是否使网络饱和或消耗系统资源(CPU/内存等)。如果是网络问题,那么静音回复可能会略有帮助,但您仍然会在线路上收到传入数据包。
答案2
iptables 目标REJECT
会导致发送 ICMP 不可达响应。将目标更改为DROP
将导致传入数据包被默默地黑洞化。