四层协议攻防手册从SYN-Flood到UDP反射的深度防御
目录
四层协议攻防手册:从SYN Flood到UDP反射的深度防御
一、四层协议攻击类型与特征
攻击类型 | 协议层 | 特征 |
---|---|---|
SYN Flood | TCP | 大量半开连接, SYN_RECV 状态堆积 |
UDP反射放大 | UDP | 小请求包触发大响应(如NTP、DNS响应) |
TCP分片攻击 | TCP | 发送异常分片耗尽重组资源 |
连接耗尽攻击 | TCP | 建立大量空闲连接占用端口资源 |
二、TCP层定制防御方案
1. SYN Cookie防护(内核参数优化)
# 启用SYN Cookie
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# 优化半连接队列
echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 60 > /proc/sys/net/ipv4/tcp_synack_retries
2. 动态防火墙规则(对抗IP伪造)
# 基于连接速率自动封禁(保存为syn_protect.py)
from scapy.all import sniff, TCP, IP
import os
syn_counts = {}
MAX_SYN = 50 # 每秒50个SYN包触发封禁
def handle_packet(pkt):
if TCP in pkt and pkt[TCP].flags == 'S':
src_ip = pkt[IP].src
syn_counts[src_ip] = syn_counts.get(src_ip, 0) + 1
if syn_counts[src_ip] > MAX_SYN:
os.system(f"iptables -A INPUT -s {src_ip} -j DROP")
print(f"封禁SYN Flood IP: {src_ip}")
sniff(filter="tcp", prn=handle_packet, store=0)
3. TCP选项过滤(防协议栈指纹探测)
# 使用iptables过滤异常TCP选项
iptables -A INPUT -p tcp -m tcp --tcp-option ! 2 -j DROP # 仅允许MSS选项
iptables -A INPUT -p tcp --tcp-flags ALL URG -j DROP # 丢弃URG标志包
三、UDP层定制防御方案
1. 反射攻击源端口封禁
# 封禁常见反射协议端口
iptables -A INPUT -p udp --dport 123 -j DROP # NTP
iptables -A INPUT -p udp --dport 53 -j DROP # DNS
iptables -A INPUT -p udp --dport 1900 -j DROP # SSDP
2. 速率限制与包大小过滤
# 限制UDP包速率(每秒1000个包)
iptables -A INPUT -p udp -m limit --limit 1000/sec -j ACCEPT
iptables -A INPUT -p udp -j DROP
# 过滤大尺寸UDP包(>512字节视为可疑)
iptables -A INPUT -p udp -m length --length 512:65535 -j DROP
3. 业务端口动态切换(对抗扫描)
# 每日更换UDP服务端口(保存为udp_port_rotate.py)
import random, subprocess
new_port = random.randint(10000, 65535)
subprocess.run(f"sed -i 's/bind .*/bind 0.0.0.0:{new_port}/' /etc/service.conf", shell=True)
subprocess.run("systemctl restart service", shell=True)
print(f"今日UDP端口已更换为:{new_port}")
四、工具链与监控方案
- 网络层监控工具
:
ntopng
:实时流量分析iftop
:带宽占用排名
- 自动化防御框架
:
Suricata(IDS规则示例):
# suricata.yaml 自定义规则 drop udp any any -> any 123 (msg:"Block NTP反射"; sid:100001;)
- 云原生方案
:
- AWS Shield Advanced(自动清洗四层流量)
- GCP Cloud Armor(TCP/UDP防护策略)