iptables怎样防止SYN攻击

作者:袖梨 2026-07-29

iptables 是 Linux 系统中用于配置内核防火墙的一个命令行工具。要使用 iptables 防止 SYN 攻击,可以采用以下几种方法:

1. 控制 SYN 包速率

使用 iptableslimit 模块来限制单位时间内接收到的 SYN 包的数量。这可以有效防止 SYN Flood 攻击。

# 限制每秒最多接收 10 个新的 SYN 请求iptables -A INPUT -p tcp --syn -m limit --limit 10/s -j ACCEPT# 超过限制的 SYN 请求将被丢弃iptables -A INPUT -p tcp --syn -j DROP

2. 启用 SYN Cookies

SYN Cookies 是用于抵御 SYN Flood 攻击的技术,服务器内存不足时,它能拒绝多余连接请求,避免资源被耗尽。

# 启用 SYN Cookiesecho 1 > /proc/sys/net/ipv4/tcp_syncookies

若要让该设置在系统重启后继续有效,可在 /etc/sysctl.conf 文件内加入下面这一行:

net.ipv4.tcp_syncookies = 1

然后执行 sysctl -p 命令,让设置正式生效。

3. 使用 iptablesrecent 模块

recent 该模块能够跟踪连接请求,并在发现可疑行为后采取相应措施。

# 创建一个新的链来处理可疑的连接请求iptables -N CHECK_SYN# 将所有新的 SYN 请求跳转到 CHECK_SYN 链iptables -A INPUT -p tcp --syn -j CHECK_SYN# 在 CHECK_SYN 链中,如果连接请求在最近 1 秒内已经出现过,则丢弃该请求iptables -A CHECK_SYN -m recent --name SYN_ATTACK --setiptables -A CHECK_SYN -m recent --name SYN_ATTACK --update --seconds 1 --hitcount 2 -j DROP# 如果连接请求是新的,则接受它iptables -A CHECK_SYN -j ACCEPT

4. 优化 TCP 参数

通过调整部分 TCP 参数同样可以协助防御 SYN 攻击,例如增大 net.ipv4.tcp_max_syn_backlognet.core.somaxconn 的值。

# 增加半连接队列的大小sysctl -w net.ipv4.tcp_max_syn_backlog=2048# 增加系统允许的最大连接数sysctl -w net.core.somaxconn=2048

同样,为保证系统重启后这些设置仍然有效,可以在 /etc/sysctl.conf 文件中加入对应的行。

注意事项

  • 在应用这些规则之前,请确保你了解它们的作用,并备份现有的 iptables 规则。
  • 这些规则有可能影响正常网络连接,因此配置时需要谨慎。
  • 如果无法确定这些规则应如何设置,建议查阅相关文档或咨询专业人士。

总之,使用 iptables 防止 SYN 攻击需要综合考虑多种方法,并根据实际情况进行调整。

相关文章

精彩推荐