本文目录导读:

外网穿透本身是一种技术手段,用于将内网服务暴露到公网(例如通过FRP、Ngrok、ZeroTier、OpenVPN等),对于网络管理者或安全运维人员来说,拦截和阻断非法的外网穿透流量,通常需要从网络层协议特征、流量行为模式以及应用层识别三个方面入手。
以下是几种常见的拦截阻断策略,按技术难度和效果从高到低排序:
基于协议与端口的严格管控(基础层)
大多数简单的外网穿透工具(如直接端口映射)会使用非常规端口。
- 策略:
- 白名单策略:防火墙只允许已知、必要的端口(如80, 443, 22)对外通信,阻断所有其他非标准端口(如去往外网的随机高位端口)。
- 端口敲门阻断:检测到短时间内向多个高位端口(如1024以上)发起大量SYN请求的IP,自动临时或永久封禁。
- 局限性:无法阻断使用常见端口(如443 WebSocket隧道、22 SSH隧道)的穿透工具。
深度包检测(DPI)与应用层识别(核心层)
这是最有效的手段,能够识别伪装成正常流量的穿透工具。
- 识别工具特征码:
- 许多穿透工具(如FRP、Ngrok、Stowaway)的握手包或心跳包具有固定特征字符串(
FRP、Ngrok的特定头部标识)。 - 方案:在网关部署DPI设备(如NGFW、Ruckus ICX、m0n0wall、Snort/Suricata),配置规则库,匹配并丢弃包含这些特征的数据包。
- 许多穿透工具(如FRP、Ngrok、Stowaway)的握手包或心跳包具有固定特征字符串(
- 识别非标准TLS指纹:
- 很多穿透工具使用自己生成的TLS证书或弱加密套件,网关可以检查TLS握手阶段的ServerHello证书颁发者(Issuer)和JA3指纹。
- 方案:将常见的穿透工具JA3指纹(如
FRP的TLS指纹)列入黑名单,如果能拦截所有非标准CA颁发的证书(仅信任公共CA),穿透工具将因证书不被信任而阻断。
- 识别WebSocket/HTTP隧道:
- 伪装成WebSocket的穿透流量会在HTTP头中携带
Connection: Upgrade和Upgrade: websocket。 - 方案:在反向代理或WAF(Web应用防火墙)上,严格校验Upgrade来源,如果Upgrade的目标URL不是预定义的、合法的WebSocket服务(例如合法的Web聊天或游戏服务),则直接拒绝连接。
- 伪装成WebSocket的穿透流量会在HTTP头中携带
- 识别协议混淆:
某些工具会做协议伪装(如伪装成HTTP/2),深度检测引擎可以分析流量的行为是否符合真实HTTP/2规范,如果发现流量虽然外层是HTTP,但内部实际在传输二进制隧道数据(流量无浏览器行为、无Referer、无User-Agent或User-Agent异常),即可判定为隧道。
基于行为的异常检测(智能层)
穿透流量的行为模式也很难模仿正常用户。
- 检测不活跃的连接维持:
- 外网穿透通常会维持长连接(心跳包),而正常用户(如网页访问)通常是短连接或具有明显请求间隔。
- 方案:在网关监控连接持续时间,如果一个TCP连接持续数小时甚至数天,且仅发送极少量(心跳)数据包,极有可能是穿透隧道,可以设置阈值(如:连接时长>4小时且平均每秒流量<0.1KB)自动标记并阻断。
- 检测非对称流量:
内网穿透通常用于远程内网穿透(如远程桌面、文件访问),其流量特征是:外部客户端发起小请求,内网服务器回传大量数据(例如外部敲击键盘,内网传回桌面图像),这种上行下行流量比例(如1:1000)与正常Web应用差异巨大。
- 检测源IP与目的IP的关联性:
- 正常用户访问一个公网IP,通常不会产生大量去往不同内网(通过不同域名/端口映射)的连接。
- 如果从一个家庭宽带IP(IP_A)发起的连接,同时访问了不同IDC机房的多个非标端口服务,且这些连接之间存在高频心跳,则有大概率是穿透。
访问控制与认证强化
- 双向TLS证书校验(mTLS):
如果网络只允许安装了特定客户端证书的设备通信,穿透工具无法提供合法证书,将被网关或服务端直接拒绝。
- 零信任网络访问(ZTNA):
相比于暴露端口,可以替换为“永不信任、始终验证”的架构,所有外部访问都需要通过安全网关进行身份验证(SSO、OTP),且不直接暴露端口,穿透工具无法突破这种身份认证体系。
- 限制出口流量:
- 对于内网办公环境,只允许经过公司代理(Proxy)或VPN的流量出网,并设置代理只允许HTTP/HTTPS协议通过(使用
CONNECT方法),穿透工具尝试建立不经过代理的直连TCP/UDP将被网关策略阻断。
- 对于内网办公环境,只允许经过公司代理(Proxy)或VPN的流量出网,并设置代理只允许HTTP/HTTPS协议通过(使用
特殊对抗手段
- 动态端口禁闭:
- 在检测到疑似穿透连接后,不对其立即阻断,而是将目的IP的端口设为黑洞路由或蜜罐,引导穿透客户端误以为连接成功,但实际数据全部丢失。
- 流量整形与限速:
对于非正常的长连接,可以故意丢包或给连接增加高延迟(例如2000ms),使穿透工具实际可用性极差,从而促使使用者放弃。
最优实践组合
对于企业或组织,建议的“黄金组合”方案是:
- 在网关上开启严格DPI:阻断已知的穿透工具协议特征(FRP/Ngrok/Stowaway)。
- 配置TLS指纹拦截:拒绝JA3指纹不符合浏览器标准或来自已知工具库的TLS握手。
- 实施行为分析:对连接持续时间超过5小时且流量极低的连接进行告警和自动阻断。
- 启用应用层过滤:只允许经过认证的代理或Web网关的HTTP/HTTPS流量出网(透明代理模式)。
- 对关键服务器实行白名单:不仅看端口,还看目的IP是否在白名单内(只允许访问指定公网服务器,禁止访问广域网任意IP)。
需要注意的是:攻击者也在不断升级技术(如使用完全加密的KCP、QUIC隧道、修改开源工具特征码)。阻断是一项持续的对抗工作,对于普通用户而言,如果不希望自己搭建的穿透服务被阻断,建议使用合法的商业穿透服务,并遵循相关网络法规。