iptables不能彻底阻止大规模DDoS,但能有效缓解SYN Flood、连接耗尽等攻击,核心是限速、限连、放合法、拦异常:用connlimit限制单IP并发连接数,limit控制新建连接速率,过滤异常TCP标志包,并配合ipset屏蔽恶意IP。

iptables 可以有效缓解针对系统服务(如 SSH、HTTP、DNS)的简单拒绝服务攻击,但不能替代专业抗 DDoS 方案。关键在于限制连接速率、过滤异常流量、减少暴露面。
限制单 IP 连接频率
对高频连接请求做限速,防止暴力扫描或连接耗尽。例如限制每秒最多 3 个新连接,突发允许 6 个:
- 使用 limit 模块匹配新建连接:
-m connlimit --connlimit-above 50 --connlimit-mask 32可限制单 IP 并发连接数 - 配合 recent 模块可实现更灵活的触发式封禁,比如 60 秒内超过 10 次 SSH 新建连接就临时拉黑
- 注意:limit 规则需放在 INPUT 链靠前位置,避免被后续 ACCEPT 规则跳过
封禁已知恶意 IP 或网段
定期导入黑名单(如 AbuseIPDB、Emerging Threats 提供的列表),用 iptables 批量屏蔽:
- 用
ipset管理大规模 IP 列表,比逐条 iptables -j DROP 更高效且节省规则空间 - 建议将 ipset 规则加载到 iptables 的 INPUT 链首,优先于服务监听规则生效
- 避免硬编码公网 IP 在脚本中——应通过 cron 定期更新并重载 ipset
关闭非必要端口与最小化暴露面
很多 DoS 攻击利用未加固的服务入口,先收敛攻击面再设防更有效:
- 默认 DROP 所有 INPUT 流量,仅显式放行必需端口(如 22、80、443),禁用
iptables -P INPUT ACCEPT - 对内部服务(如数据库、Redis)绑定到 127.0.0.1 或内网接口,不监听公网地址
- 禁用 IPv6 若未使用,避免因配置疏漏导致规则失效(IPv6 有独立的 ip6tables)
防御 SYN Flood 等协议层攻击
Linux 内核自带防护机制,配合 iptables 可增强效果:
- 启用
net.ipv4.tcp_syncookies = 1(sysctl 设置),在队列满时启用 SYN Cookie - 缩小半连接队列:
net.ipv4.tcp_max_syn_backlog = 256,降低资源占用 - iptables 中可用
-m state --state INVALID -j DROP清除非法状态包,减少干扰

















