怎么利用Iptables的Hashlimit模块针对特定系统服务端口精准限流

夏静君_8418

夏静君_8418

2026-05-30

744人浏览

原创

iptables hashlimit模块可对特定端口按连接速率动态限流,核心是匹配端口+合理哈希粒度+选择srcip等模式,需配合--state NEW、设置burst与expire参数,并优先配置白名单。

怎么利用iptables的hashlimit模块针对特定系统服务端口精准限流

用 iptables 的 hashlimit 模块对特定服务端口限流,核心是“按连接速率或请求频率做动态分流控制”,而不是简单封禁。关键在于匹配目标端口 + 设置合理的哈希桶粒度 + 选择合适的触发模式(如 per-ip 或 per-port),避免误伤正常用户或漏控攻击流量。

明确限流目标和服务端口

先确认你要保护的服务及其监听端口,比如:

  • Web 服务:TCP 80 / 443
  • SSH 登录:TCP 22
  • 数据库访问:TCP 3306(MySQL)、5432(PostgreSQL)
  • API 接口:自定义端口如 8080、9000

注意区分 入站(INPUT) 和 转发(FORWARD) 链——大多数服务限流应作用于 INPUT 链;若服务部署在 NAT 后或容器中,可能需调整链位置。

基础 hashlimit 限流规则写法

以限制单个 IP 对 SSH 端口(22)的新连接速率为每分钟 5 次为例:

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

各参数含义:

  • --hashlimit-above 5/min:超过每分钟 5 个新连接即触发限流
  • --hashlimit-burst 10:允许短时突发最多 10 个连接(防误判)
  • --hashlimit-mode srcip:按源 IP 建立哈希桶,实现“每个 IP 独立计数”
  • --hashlimit-name ssh_limit:为该规则命名,便于调试和清理
  • --hashlimit-htable-expire 300000:哈希表项 5 分钟无活动后自动过期(单位毫秒)

⚠️ 注意:--state NEW 是必须的,否则会把已建立连接的 ACK、FIN 等包也纳入统计,导致误限。

针对不同场景的进阶配置技巧

根据业务特性灵活组合参数:

  • 按目标端口分组限流(适合多服务共用一个 IP):
    使用 --hashlimit-mode srcip,dstport,让同一 IP 访问不同端口互不影响
  • 限制 HTTP 请求频率(非连接):
    结合 string 或 http 模块识别 GET/POST,再套 hashlimit;但更推荐用 Nginx 或应用层限流,iptables 在七层识别效率低且易绕过
  • 防止扫描类探测:
    对未开放端口加通用限流,例如:-p tcp -m multiport --dports 21,22,23,25,110,143 --syn + hashlimit,限制 SYN 包速率
  • 白名单优先处理:
    在限流规则前插入 ACCEPT 规则放行运维 IP:iptables -I INPUT -s 192.168.10.5 -p tcp --dport 22 -j ACCEPT

验证与排错要点

限流生效后务必验证效果:

  • 查看当前规则:iptables -L INPUT -n -v | grep hashlimit
  • 检查哈希表状态:cat /proc/net/ip_tables_matches/hashlimit(部分内核需开启 debug)
  • 模拟测试:用 for i in {1..10}; do nc -zvw1 服务器IP 22; done 观察是否从第 6 次开始超时
  • 日志辅助定位:-j LOG --log-prefix "HASHLIMIT_DROP: " 插入规则前,配合 dmesg 查看丢包记录

常见问题:规则不生效多因链顺序错误、未加 --state NEW、或 nf_conntrack 模块未加载;burst 值设太小会导致合法重试被拦,建议初始值设为阈值的 2–3 倍。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3212

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1056

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

949

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

494

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2956

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5532

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

867

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习