# 基于连接速率自动封禁(保存为syn_protect.py) from scapy.allimport sniff, TCP, IP
import os syn_counts ={}
MAX_SYN =50# 每秒50个SYN包触发封禁 defhandle_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)+1if 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 --dport123-j DROP # NTP
iptables -A INPUT -p udp --dport53-j DROP # DNS
iptables -A INPUT -p udp --dport1900-j DROP # SSDP
2. 速率限制与包大小过滤
# 限制UDP包速率(每秒1000个包)
iptables -A INPUT -p udp -m limit --limit1000/sec -j ACCEPT
iptables -A INPUT -p udp -j DROP # 过滤大尺寸UDP包(>512字节视为可疑)
iptables -A INPUT -p udp -m length --length512:65535 -j DROP
在 C语言中,除了 while 和 do while,使用 for 语句也可以实现循环结构。
C语言for循环的基本用法
for 循环语句的一般形式如下:
for(表达式1;表达式2;表达式3)
{语句块;
}
有以下几点说明:
for 是循环结构中的关键字之一。表…