一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何配置 iptables 实现特定业务端口的访问限流

时间:2026-06-20 10:31:53 编辑:袖梨 来源:一聚教程网

iptables的hashlimit模块可基于源IP对特定端口新建连接速率精准限流,如SSH端口每分钟最多5次、突发10次,需配合--state NEW、--hashlimit-mode srcip及DROP规则实现节奏控制,避免误断已建连接。

要对特定业务端口做访问限流,关键不是封禁,而是控制单位时间内的连接或请求节奏。iptables 本身不处理应用层逻辑,但通过 hashlimit 模块可基于连接新建速率(如每分钟多少个新 TCP 连接)实现精准、按源区分的限流,适合保护 SSH、API 端口等核心服务。

明确目标端口与限流维度

先确认你要保护的服务端口,例如:

  • SSH 管理:TCP 22
  • Web 接口:TCP 80 / 443 / 8080
  • 数据库:TCP 3306(仅内网)、5432

限流需绑定协议 + 目标端口,并决定按什么维度独立计数——最常用的是 srcip(每个 IP 单独限流),避免误伤正常用户;若同一 IP 访问多个端口需互不影响,可用 srcip,dstport

基础限流规则写法(以 SSH 为例)

限制单个 IP 对 22 端口的新建连接不超过每分钟 5 次,允许短时突发 10 次:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m hashlimit   --hashlimit-above 5/min   --hashlimit-burst 10   --hashlimit-mode srcip   --hashlimit-name ssh_limit   --hashlimit-htable-expire 300000   -j DROP

注意:--state NEW 必须加上,否则会把 ACK、FIN 等包也纳入统计,导致已建立连接被误断。

配合白名单与默认策略更安全

限流规则不能 standalone 使用,必须嵌入完整防护链中:

  • 先设置默认策略:iptables -P INPUT DROP
  • 再放行基础流量:lo 回环、ESTABLISHED/RELATED 连接、必要 ICMP
  • 然后放行业务端口(如 80、443),再插入限流规则(顺序很重要)
  • 对管理端口如 22,建议叠加源 IP 限制:-s 203.0.113.45,双重防护

常见组合与避坑提醒

根据业务场景微调参数:

  • Web 端口(80/443)若想防扫描,可降低速率(如 --hashlimit-above 20/min),并设较短过期时间(--hashlimit-htable-expire 60000
  • 避免用 --hashlimit-mode dstport 单独限端口——它会对所有源 IP 共享一个桶,容易误伤
  • 不要混用 hashlimit 和 connlimit:前者控“新建连接频率”,后者控“并发连接数”,用途不同
  • 规则生效后用 iptables -L INPUT -n -v 查看匹配计数,验证是否触发

热门栏目