背景
目前堡垒机用的是Next Terminal的方案。这个方案唯一的不足是没有内置访问内网ssh的方案
需求:
1.有审计需求
2. 想访问内网里没有公网ip机器的SSH (可以像哪吒探针的agent那种访问内网ssh)
3. 一键的 \ 适合大量部署的方案 (类似哪吒agent的安装方式)。
我考虑了虚拟专用网络(虚拟LAN)、FRP、CF TUNNEL和SSH反向隧道这四种方法。
1. 虚拟专用网络 (繁琐的部署+花钱):
- 我试过依赖第三方的服务,如ZeroTier,但我发现它们的安装和配置过程都很复杂。
2. FRP (繁琐的部署+大量端口管理+稳定性差):
- 我尝试过这个方案,但感觉安装繁琐,还要管理很多端口。此外我也注意到它有时候运行并不稳定。
3. SSH反向隧道 (安全问题):
- 今天尝试了这个方案。但当"被控机"作为公共机器时,任何使用“被控机”的人都可以直接用公钥访问我"主控机"上的文件,这让我很担心安全问题。(相当于我去todesk别人的电脑,对面也能同时todesk我)
- 尝试在`authorized_keys`里加了一些特定的限制,如:"command="/path/to/limited_script.sh",no-pty,no-agent-forwarding,no-X11-forwarding",但感觉这样还是不够安全。
- 也考虑过设置一个中间的“跳板机”来隔离"被控机",这样它们就不能直接访问我的"主控机"了。但如果有多个"被控机",我发现它们在"跳板机"里还是可以访问到其他"被控机"的私钥。
4、CF TUNNEL (无法对接NextTerminal完成审计):
为了使用CF TUNNEL提供的SSH,发起连接的机器已经安装了cloudflared,并可以在shell中通过ssh [email protected]命令正常连接到目标机器。然而,当我们在NextTerminal中尝试发起SSH连接时,它与直接在shell中的方式表现出不同的行为,并最终报出了“dial tcp 104.21.67.15:22: i/o timeout”的错误。因此,这种方法在NextTerminal上似乎无**常工作,导致无法进行审计。