如何设置SSHD以限制特定IP的最大并发连接数,防御DoS攻击?

2026-05-07 19:320阅读0评论SEO资讯
  • 内容介绍
  • 相关推荐

本文共计691个文字,预计阅读时间需要3分钟。

如何设置SSHD以限制特定IP的最大并发连接数,防御DoS攻击?

通过`sshd_config`本身无法限制每个IP的并发连接数,它不提供按源IP计数的机制。真正有效的方法是结合使用`iptables`的`connlimit`模块,在内核网络层拦截超过限制的连接。这是防止单个IP耗尽SSH资源(如进程、内存、文件描述符)的最可靠方式。

用 iptables + connlimit 限制单IP并发SSH连接

该规则作用于已建立的 TCP 连接(ESTABLISHED 状态),防止一个IP开10个终端、脚本误配长连接或慢速DoS攻击:

  • 运行命令限制每个IPv4地址最多3个并发SSH连接:
    iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
  • --connlimit-mask 32 表示精确到单个IP;若需按C类网段(如192.168.1.0/24)统一限制,改为 --connlimit-mask 24
  • 使用 REJECT --reject-with tcp-reset 而非 DROP,能让客户端立刻收到RST包,避免长时间等待超时,体验更干净

配合 MaxStartups 防未认证连接泛滥

即使 connlimit 生效,大量未完成认证的连接(如暴力扫描的SYN+ACK后卡住)仍会堆积。

阅读全文

本文共计691个文字,预计阅读时间需要3分钟。

如何设置SSHD以限制特定IP的最大并发连接数,防御DoS攻击?

通过`sshd_config`本身无法限制每个IP的并发连接数,它不提供按源IP计数的机制。真正有效的方法是结合使用`iptables`的`connlimit`模块,在内核网络层拦截超过限制的连接。这是防止单个IP耗尽SSH资源(如进程、内存、文件描述符)的最可靠方式。

用 iptables + connlimit 限制单IP并发SSH连接

该规则作用于已建立的 TCP 连接(ESTABLISHED 状态),防止一个IP开10个终端、脚本误配长连接或慢速DoS攻击:

  • 运行命令限制每个IPv4地址最多3个并发SSH连接:
    iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
  • --connlimit-mask 32 表示精确到单个IP;若需按C类网段(如192.168.1.0/24)统一限制,改为 --connlimit-mask 24
  • 使用 REJECT --reject-with tcp-reset 而非 DROP,能让客户端立刻收到RST包,避免长时间等待超时,体验更干净

配合 MaxStartups 防未认证连接泛滥

即使 connlimit 生效,大量未完成认证的连接(如暴力扫描的SYN+ACK后卡住)仍会堆积。

阅读全文