现在很多 DDoS 攻击都是直接 udp 发包的,也就是 UDP Flood DDoS Attack,老王前段时间有个网站每天都被光顾一次,后来网上找了个禁止 udp 发包的脚本来防止 UDP Flood 攻击,不知道有没有效果,但是用了这个脚本后那个攻击就停止了,所以这里给大家做个分享。
一、什么是 UDP Flood 攻击
这是百度百科关于 UDP Flood 的介绍:
UDPFlood是日渐猖厥的流量型DoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k bps的UDPFlood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。由于UDP协议是一种无连接的服务,在UDPFLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。
二、通过 iptables 禁止 udp 发包
这个脚本是老王自己用的,也不清楚有没有效果,之前这个服务器被连续打了 3 次,都是 UDP Flood,用了这个脚本后每天 8 点的例行 DDoS 就停止了,所以我猜可能有效吧。
脚本原理也很简单,因为老王的服务器是放网站的,一般都是 TCP 连接,通常只有 DNS 会使用 UDP 协议,所以可以只允许目标 DNS 服务器的 UDP 数据包外出,其它 UDP 数据包全部拒绝:
#/bin/bash #Createdby http://www.bitsCN.com #DROP UDP Flood list=`grep nameserver /etc/resolv.conf |awk '{print $NF}'` for i in $list do iptables -A OUTPUT -p udp -d $i --dport 53 -j ACCEPT done iptables -A OUTPUT -p udp -j DROP service iptables save