SYN Flood攻击可通过iptables和conntrack有效缓解。1. 限制每IP并发连接数,使用connlimit模块阻止超过阈值的SYN请求;2. 利用hashlimit控制单位时间内新连接速率,防止突发流量耗尽资源;3. 启用tcp_syncookies、调整synack重试次数和max_syn_backlog提升系统级防护;4. 结合recent模块封禁频繁异常IP,配合日志记录实现动态拦截。需确保nf_conntrack模块加载,规则顺序正确,阈值根据业务合理设置,从而在无硬件支持下显著增强防御能力。

SYN Flood 是一种常见的 DDoS 攻击方式,攻击者通过大量伪造的 TCP SYN 请求耗尽服务器的连接资源,导致正常用户无法建立连接。在 Linux 系统中,结合 iptables 和 conntrack 模块可以有效缓解此类攻击。以下是具体防御方法。
使用 conntrack 跟踪连接状态,配合 iptables 限制每个客户端 IP 建立的并发连接数量,防止单个源发起大量连接。
示例规则:
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 50 -j REJECT --reject-with tcp-reset说明:对发起新 TCP 连接(SYN 包)的源 IP,若其当前并发连接数超过 50,则拒绝并返回 TCP RST 包。数值可根据实际业务调整,如 Web 服务一般用户不会同时建立上百个连接。
使用 iptables 的 hashlimit 模块控制每个 IP 在一定时间内可建立的新连接数,抵御短时间爆发式请求。
iptables -A INPUT -p tcp --syn -m hashlimit \ --hashlimit-name syn_flood \ --hashlimit-mode srcip \ --hashlimit 3/sec \ --hashlimit-burst 10 \ -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP说明:允许每个源 IP 每秒最多发起 3 个新的 SYN 请求,突发允许最多 10 个。超出阈值的 SYN 包将被丢弃。注意规则顺序,先 ACCEPT 再 DROP,确保逻辑正确。
虽然不属于 iptables/conntrack,但合理配置内核参数能增强整体抗性:
结合日志和脚本,识别频繁触发限速规则的 IP,并临时加入黑名单。
iptables -A INPUT -m recent --name BADIP --rcheck --seconds 3600 --hitcount 5 -j DROP配合前面规则记录异常 IP:
iptables -A INPUT -p tcp --syn -m hashlimit ... -j LOG --log-prefix "SYN FLOOD: " iptables -A INPUT -p tcp --syn -m recent --name BADIP --set -j DROP基本上就这些。iptables + conntrack 提供了灵活且高效的防御机制,关键在于根据实际流量特征设置合理的阈值。配合系统参数调优,可在不依赖外部硬件的情况下显著提升服务器抗 SYN Flood 能力。不复杂但容易忽略细节,比如规则顺序和模块加载。确保 nf_conntrack 模块已加载(modprobe nf_conntrack),否则相关匹配将失效。
以上就是Linux 安全:如何防御 SYN Flood 攻击 (iptables + conntrack)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号