隧道是防火墙之下的通道
SSH 端口转发、frp、ngrok 这类工具能在已有放行端口上开出新的数据通道:防火墙看到的只是 22 或 443 的连接,实际流量已经绕到内网服务。它们本身不是漏洞,但绕过了访问控制的设计意图,所以要么按白名单精确开放,要么纳入审计。
基本信息
| 适用平台 | Linux(OpenSSH sshd 侧控制)与 Windows(对应客户端与转发工具) |
|---|---|
| 服务端配置 | AllowTcpForwarding、PermitOpen、AllowAgentForwarding、X11Forwarding |
| 客户端侧 | 本地/远程/动态转发与 ProxyJump |
| 基线 | 非必要不开放转发,开放则限定目标 |
典型使用场景
- 堡垒机收敛:只允许跳板跳转,不允许任意端口转发
- 数据库安全接入:用 PermitOpen 限定只能转发到指定库地址
- 排查隐蔽通道:确认内网主机是否在被用作隧道出口
- 合规对标:转发能力属于访问控制与边界防护条款的检查范围
配置核查与现象发现
配置核查与现象发现
# 服务端转发相关配置现状
grep -Ei 'allowtcpforwarding|permitopen|allowagentforwarding|x11forwarding|gatewayports' /etc/ssh/sshd_config
sshd -T | grep -Ei 'allowtcpforwarding|permitopen'
# 发现可疑监听与长连接
ss -tlnp
ss -tnp state established | head -20
# 关注监听在本机但归属不明的进程
ps -eo pid,user,comm,args --sort=-%mem | head -15转发相关项读法
| 配置项 | 作用 | 建议值 |
|---|---|---|
| AllowTcpForwarding | 是否允许 TCP 端口转发 | 业务不需转发的机器设 no |
| PermitOpen | 限制转发目标地址与端口 | 必须转发时用它精确白名单 |
| AllowAgentForwarding | 是否允许 agent 转发 | 默认关闭,避免私钥能力被带到远端 |
| X11Forwarding | 是否允许 X11 转发 | 服务器一律关闭 |
| GatewayPorts | 是否允许转发监听在非回环地址 | 保持默认,开启易造成无意暴露 |
业务确实需要隧道时不要一刀切禁止:改为白名单加变更登记,否则使用者会转向更难审计的自建工具,治理效果反而更差。
反向隧道(内网主机主动连出)常被忽略:只做入方向审计时看不到它。出口侧代理白名单与长连接监控是发现这类行为的主要手段。
改动这类配置前先 sshd -t 语法检查,再另开会话验证登录与必要的转发能力,确认无误后才关闭旧会话,避免把自己挡在门外。