我已连接到公共 FreeBSD 系统,并且希望能够连接到其他服务器而不透露(通过w
等方式)我连接到的位置,我该如何实现这一点?
答案1
内核将跟踪您的连接,您对此无能为力。我什至不确定根特权将在这里为您提供帮助(至少没有一些内核模块魔法)。
如果你想隐藏在哪里你要走了,最好的办法可能就是假装你要走了别的地方反而。换句话说:使用代理或任何可以安全地中继 SSH 连接。
大的强调安全地这里。确保维护端到端加密,并且不要让第三方为您打开 SSH 通道。
例如你可以使用torsocks
,这将允许您通过 ToR 中继 TCP 流。这样,而不是lsof
暴露...
$ ssh remotehost
$ lsof SSH_PID # in another terminal
ssh SSH_PID you TCP localhost:xx->remotehost:ssh (ESTABLISHED)
你会得到...
$ torsocks ssh remotehost
$ lsof SSH_PID # in another terminal
ssh SSH_PID you TCP localhost:yy->localhost:9050 (ESTABLISHED)
这里的区别在于,它将ssh
连接到本地 ToR SOCKS 服务器,而不是直接连接到远程主机。 ToR 的好处在于,即使是本地 ToR 流程也不会透露您的目的地:
$ lsof TOR_PID
tor TOR_PID tor TCP localhost:zz->tornode:https (ESTABLISHED)
这里的另一个优点是,您不仅可以从源中隐藏目标,而且还可以从目标中隐藏源。您要连接的远程主机将看到来自 ToR 网络的连接。当然,现在取决于另一个系统管理员是谁,这个小技巧可能不会持续很长时间。
通过一些调整,可能可以安装与用户空间权限类似的东西。您可能可以在主目录中编译一些内容并开始。如果没有,那么您可能必须选择其他内容进行中继。一种可能性是“牺牲”一台远程机器来充当其他机器的中继:您总是ssh
先使用该机器,然后再连接到其他机器。
答案2
由于w
打印的是终端控制的进程的进程命令行,因此它只会显示您在命令行中键入的内容。所以你只需要修改主机名即可。
根据吉尔斯的评论,您可以设置.ssh/config
如下:
Host bogusname
HostName real-address.org
Port 2222
# <other options>
在命令行上,您可以通过以下方式连接
ssh bogusname
将配置文件设置为只读,这样您就可以将其半秘密了。
但是,这不会阻止某人使用netstat -nap
或类似的东西来确定答案。但它至少看起来无害,这样使用的人w
就不会产生怀疑。