linux防火墙连接速率限制核心是控新连频率、按源ip区分、留合法突发余量;ufw用sudo ufw limit 22限ssh,firewalld用rich rule按ip限速,iptables hashlimit支持细粒度控制,配合tcp_syncookies等内核参数强化syn flood防御。

Linux 防火墙做连接速率限制,核心不是“堵死”,而是让攻击者无法靠高频建连耗尽资源——重点控新连接频率、按源 IP 区分、留出合法突发余量。
用 UFW 快速启用 SSH 连接限速
UFW 是面向普通用户的轻量级前端,对 SSH(默认 22 端口)做基础防护最直接:
- 执行 sudo ufw limit 22 即可启用内置限速:每 30 秒最多允许 6 个新连接,超出自动临时拒绝
- 若已改 SSH 端口(如 2222),需明确写端口号:sudo ufw limit 2222
- 该规则本质是插入一条带 limit 模块的 iptables 规则,UFW 自动确保它在允许规则之后生效
用 firewalld 的 rich rule 按 IP 精准限速
firewalld 更适合生产环境,rich rule 封装了 hashlimit,支持每个源 IP 独立计数:
- 限制每个 IP 每分钟最多 10 个新 SSH 连接:
sudo firewall-cmd --permanent --add-rich-rule='rule service name="ssh" limit value="10/m" reject' - 立即生效:sudo firewall-cmd --reload
- 注意:必须确认当前 zone(如 public)已启用该规则;value 支持 s/m/h 单位,reject 比 drop 更利于客户端快速感知失败
用 iptables hashlimit 实现细粒度控制
需要更高自由度时(如防护 HTTP 或 UDP 反射),直接调用 hashlimit 模块:
- 防 HTTP 暴力扫描:每个 IP 每秒最多 5 个新连接,突发允许 15 个
sudo iptables -I INPUT -p tcp --dport 80 --syn -m hashlimit --hashlimit-above 5/sec --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-name http_limit -j DROP - 防 DNS 反射攻击:每个 IP 每分钟最多 30 个 UDP 53 请求
sudo iptables -A INPUT -p udp --dport 53 -m state --state NEW -m hashlimit --hashlimit-above 30/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name dns_limit -j DROP - --hashlimit-name 是计数器标识名,同一名称共享统计;--hashlimit-mode 可叠加 dstport 实现“IP+端口”二维限速
配合内核参数增强 SYN Flood 防御
限速只是上层策略,底层需激活内核防护能力:
- 开启 SYN Cookie:echo 'net.ipv4.tcp_syncookies = 1' | sudo tee -a /etc/sysctl.conf
- 加大 SYN 队列长度:echo 'net.ipv4.tcp_max_syn_backlog = 4096' | sudo tee -a /etc/sysctl.conf
- 降低重试次数减少资源占用:echo 'net.ipv4.tcp_synack_retries = 2' | sudo tee -a /etc/sysctl.conf
- 全部生效:sudo sysctl -p











