You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux设备5080端口仅拦截Telnet数据包的iptables规则配置咨询

精准拦截5080端口上的Telnet数据包解决方案

我明白你的困扰——直接用iptables -I INPUT 1 -p tcp --dport 5080 -j DROP确实会把所有发往5080的TCP流量都拦下来,而你只想针对Telnet这种应用层协议下手。别担心,我们可以通过匹配Telnet的应用层特征来实现精准拦截,下面是具体方法:

核心思路:利用iptables的string模块识别Telnet流量

Telnet作为明文协议,在连接建立阶段会发送特定的控制字符(属于Telnet协商流程的一部分),这些字符是其他TCP应用(比如HTTP、SSH)不会发送的,我们可以基于这个特征来过滤。

具体操作步骤

  1. 确保string模块已加载
    先检查系统是否加载了xt_string模块,执行以下命令:

    lsmod | grep xt_string
    

    如果没有输出,手动加载模块:

    modprobe xt_string
    
  2. 添加精准拦截规则
    执行这条iptables规则,它会匹配发往5080端口、带有Telnet协商特征的TCP流量并丢弃:

    iptables -I INPUT 1 -p tcp --dport 5080 -m string --algo bm --string "\xff\xfb\x01" -j DROP
    

    对这条规则的解释:

    • -m string:调用string匹配模块
    • --algo bm:使用Boyer-Moore算法进行字符串匹配,效率较高
    • --string "\xff\xfb\x01":匹配Telnet连接时常见的协商字符(IAC WILL ECHO,即客户端请求开启回显),这是Telnet会话初期必然会出现的特征
  3. 验证规则效果
    你可以用Telnet客户端尝试连接5080端口,应该会被拦截;而其他TCP应用(比如用nc发送普通数据)则能正常通过5080端口。

补充说明

  • 如果上述特征字符串不适用,你还可以尝试其他Telnet协商特征,比如"\xff\xfb\x03"(IAC WILL SUPPRESS GO AHEAD),这类控制字符都是Telnet独有的。
  • 如果你需要长期保留这条规则,记得把iptables规则保存下来(不同系统命令不同,比如iptables-save > /etc/iptables/rules.v4)。

内容的提问来源于stack exchange,提问作者aswini visvanathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:38:45