我将在远程位置将Linux机器部署为一种公共终端。我希望能够通过SSH进行远程访问以进行维护,但在极少数需要访问此计算机的情况下,我不想在远程防火墙上保持端口开放。我虽然使用了一个简单的脚本来创建到外部计算机的反向SSH隧道,但是我宁愿不必让用户在需要访问它时必须做任何事情。有任何想法吗?
更新:我决定按照我原来的脚本计划来创建反向ssh隧道。虽然其他建议的解决方案(例如端口敲门)将更符合我的实际意愿,但在这种情况下,除了引导用户进行配置之外,我无权配置路由器。不寒而栗
我将在远程位置将Linux机器部署为一种公共终端。我希望能够通过SSH进行远程访问以进行维护,但在极少数需要访问此计算机的情况下,我不想在远程防火墙上保持端口开放。我虽然使用了一个简单的脚本来创建到外部计算机的反向SSH隧道,但是我宁愿不必让用户在需要访问它时必须做任何事情。有任何想法吗?
更新:我决定按照我原来的脚本计划来创建反向ssh隧道。虽然其他建议的解决方案(例如端口敲门)将更符合我的实际意愿,但在这种情况下,除了引导用户进行配置之外,我无权配置路由器。不寒而栗
Answers:
它与端口的打开无关,而与在打开端口的过程中不想让用户走路有关。不幸的是,我根本无法访问该路由器。
如果完全不可能更改路由器,则可能需要查看像Hamachi之类的P2P或VPN解决方案。如果您将系统设置为在启动时自动建立VPN连接,那么您应该能够在需要时进行连接。Hamachi为您完成所有防火墙协商。一个缺点是,当您需要连接时,您必须依靠Hamachi服务器正常运行。
如果您的服务器始终处于运行状态,则可以设置autossh,以便远程系统始终保持隧道打开并连接到服务器。一个缺点是远程系统受到攻击,攻击者将获得用于建立ssh会话的密钥。保持您的系统接受ssh连接的真正锁定非常重要。
以下是我的原始答案,我认为更新路由器是一种选择。
您可能要调查,如果你的防火墙支持的话,一种解决方案是端口敲门。对于某些防火墙,应该可以发送出防火墙注意到的一组特殊数据包,然后暂时打开防火墙的漏洞。
有许多实现比其他实现更好。有些使用强大的加密技术,使得没有正确密钥的人几乎不可能发送正确的敲门声。
我不会担心让22号端口可以访问互联网,但是我会采取一些措施来保护它。
首先,禁用键盘交互式身份验证,然后转到ssh键。
其次,在您的远程服务器上安装诸如fail2ban之类的东西,以对可重复探测您的计算机的IP地址进行破坏。因为您具有设置ssh密钥,所以授权用户应该没有身份验证失败。
或者,如果有能力,请采取WerkkreWs的建议,并在计算机前配置防火墙以终止vpn连接,然后仅允许远程服务器上的ssh守护程序接受通过该vpn的连接。
另外,如果您的防火墙无法终止vpn连接,则可以将GRE或IPSEC数据包转发到您的linux计算机,并在此终止它。
听起来您正在寻找敲门声
您可以使用iptables将其安装在linux服务器本身上,从而使其类似于二级防火墙。即使前端防火墙上打开了端口22,服务器上也不会打开该端口,因此portcans不会看到任何打开的端口。然后,当您发送“秘密敲门声”时,突然之间您就拥有通往端口22的开放路径。
那有意义吗?
总结所有答案:
使用ssh,但使其更加晦涩和安全。
为了安全:
对于晦涩之处:
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP