Linux内核级DDoS防护核心是调优TCP/IP协议栈:启用tcp_syncookies=1应对SYN洪泛,设tcp_max_syn_backlog和tcp_synack_retries限制半连接资源;通过tcp_tw_reuse=1(客户端)等控TIME-WAIT滥用。

Linux系统对DDoS攻击的内核级防护,核心在于合理调整TCP/IP协议栈行为,抑制SYN洪泛、连接耗尽、ICMP滥用等典型攻击路径。关键不在于堆砌参数,而在于理解每个参数触发的内核动作及其在真实流量中的表现。
应对SYN洪泛:启用SYN Cookies并优化半连接队列
当攻击者发送大量伪造源IP的SYN包时,服务器会为每个请求分配内存并存入SYN队列。若队列满且未启用保护机制,合法连接将被丢弃。
-
开启SYN Cookies(推荐):执行
sysctl -w net.ipv4.tcp_syncookies=1。该机制在SYN队列满时,不分配内存,而是用加密哈希生成初始序列号,待三次握手完成后再验证——有效绕过队列瓶颈。 -
限制SYN队列长度:设置
net.ipv4.tcp_max_syn_backlog=4096(根据内存和并发调整),避免内核过度消耗内存。 -
缩短SYN-RECV状态超时:
net.ipv4.tcp_synack_retries=3(默认5),加快释放异常半开连接。
限制连接资源滥用:控制TIME-WAIT与连接跟踪
攻击者可能通过快速建连断连制造大量TIME-WAIT状态,或利用nf_conntrack表耗尽内存,导致新连接无法建立。
-
重用TIME-WAIT套接字(谨慎启用):设
net.ipv4.tcp_tw_reuse=1,仅对客户端主动发起的连接生效;服务端请勿依赖此参数替代连接池优化。 - 缩短TIME-WAIT超时(不推荐调低至
net.ipv4.tcp_fin_timeout=30可加速回收,但需注意NAT环境下的潜在问题。 -
限制连接跟踪表大小:如使用iptables/nftables状态匹配,设置
net.netfilter.nf_conntrack_max=65536并监控/proc/sys/net/nf_conntrack_count,防止表溢出丢包。
抑制ICMP与广播类放大攻击:关闭非必要响应
Smurf、Ping of Death等攻击常利用ICMP响应放大流量或触发内核异常处理路径。
-
禁用ICMP响应(对外网接口):
net.ipv4.icmp_echo_ignore_all=1;如需基础连通性检测,可设为0并配合防火墙限速。 -
禁止响应广播/多播ICMP:
net.ipv4.icmp_echo_ignore_broadcasts=1(默认开启,确认勿关闭)。 -
关闭IP源路由(防伪装):
net.ipv4.conf.all.accept_source_route=0,同时对各接口单独设置(如eth0)。
增强网络层健壮性:防欺骗与速率感知
部分DDoS伴随IP欺骗,内核可通过反向路径过滤和邻居子系统控制降低影响。
-
启用严格RPF检查:
net.ipv4.conf.all.rp_filter=1,丢弃“入接口非最佳返回路径”的包(要求路由对称,生产环境建议逐接口配置并测试)。 -
限制ARP请求频率:
net.ipv4.neigh.default.gc_thresh1=512、gc_thresh2=2048、gc_thresh3=4096,防ARP泛洪占满邻居缓存。 -
关闭IPv4转发(若非网关):
net.ipv4.ip_forward=0,消除潜在IP转发滥用面。










