Linux防火墙是流量清洗与异常检测的第一道执行层,需结合协议特征、连接状态和行为模式在内核层筛除可疑流量;按SYN/UDP/ICMP/HTTP Flood类型配置精准规则,构建INPUT链“先放行可信、再限速、最后封禁”逻辑,辅以fail2ban等自动化工具,并协同CDN、WAF与ISP实现分层防护闭环。

Linux 防火墙不只是“放行或拦截”的开关,而是流量清洗与异常检测的第一道执行层。它需要结合协议特征、连接状态和行为模式,把可疑流量在内核层面就筛掉,同时保障合法业务不卡顿。
按攻击类型配置精准清洗规则
不同攻击形态需匹配对应策略,生搬硬套容易误伤或失效:
-
SYN Flood:启用内核防护
sysctl -w net.ipv4.tcp_syncookies=1,再用 iptables 限速——iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 1/s --limit-burst 5 -j ACCEPT -
UDP/ICMP Flood:对无状态协议必须做速率硬限制,例如
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/s -j ACCEPT,超限直接 DROP -
HTTP Flood:iptables 无法识别 User-Agent 或 URI,需上层配合——Nginx 用
limit_req按 IP 限频,Apache 启用 mod_evasive 并设触发阈值
用 iptables 构建基础清洗链路
规则顺序决定效果,INPUT 链应遵循“先放行可信、再限速、最后封禁”逻辑:
- 允许本地回环和已建立连接:
iptables -A INPUT -i lo -j ACCEPT;iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 对关键服务(如 SSH)白名单控制:
iptables -A INPUT -s 203.0.113.45 -p tcp --dport 22 -j ACCEPT - 默认拒绝并记录可疑新连接:
iptables -A INPUT -p tcp --syn -j LOG --log-prefix "DROPPED_SYN: ",再-j DROP
引入自动化检测与响应机制
人工盯日志封 IP 效率低且滞后,轻量级工具可补足实时性短板:
- fail2ban:监控 /var/log/auth.log,当某 IP 在 10 分钟内失败登录超 5 次,自动插入 iptables 封禁规则,支持自定义封禁时长与解封逻辑
-
DDoS-Deflate:基于
ss -nt统计每个 IP 的并发连接数,超过阈值(如 100)即调用iptables -I INPUT -s x.x.x.x -j DROP,建议先加LOG动作验证 - 所有自动封禁操作前,务必写入日志并排除 CDN、云厂商探测 IP 段,避免影响正常用户
衔接上游与应用层形成清洗闭环
单靠本机防火墙无法应对超大流量攻击,需分层协同:
- 流量达带宽 70% 以上时,立即联系 ISP 启用 RTBH 或 BGP Flowspec,在骨干网边缘丢弃攻击包
- 对外服务尽量接入 CDN,隐藏源站真实 IP,让边缘节点承担首层 HTTP Flood 过滤与 JS 挑战
- Web 层部署 WAF(如 ModSecurity),识别 SQL 注入、路径遍历等载荷,与 iptables 规则形成“网络层+应用层”双检机制


















