我打算将Linux机器部署为远程位置的公共terminal。 我希望能够通过SSH远程访问它进行维护,但是我不想在远程防火墙上打开端口,以便在需要访问此计算机的情况下使用。 我虽然有一个简单的脚本来创build一个反向SSH隧道到外部的机器,但我宁愿不必有一个用户必须做任何事情,当我需要访问它。 有任何想法吗?
更新:我决定去我的原始计划的脚本来创build一个反向的SSH隧道。 虽然其他build议的解决scheme,如端口碰撞将更符合我真正想要做的事情,在这种情况下,我没有任何configuration路由器,而不是通过configuration步行的用户。 不寒而栗
它关心的是一个开放的港口,而不是关心开放港口的过程中不想走路的用户。 我不幸的是没有任何访问这个路由器。
如果改变路由器是完全不可能的,你可能需要看像Hamachi的P2P或VPN解决scheme。 如果您将系统设置为在启动时自动build立VPN连接,那么您应该能够在需要时进行连接。 Hamachi为你做所有的防火墙协商。 一个缺点是你必须依靠Hamachi服务器启动和function,当你需要连接。
如果您的服务器始终处于运行状态,则可以设置autossh,以便远程系统始终保持通道打开并连接到服务器。 其中一个缺点是远程系统受到攻击,他们将得到用来build立ssh会话的密钥。 让你的系统接受ssh连接真正locking是非常重要的。
下面是我的原始答案,我曾经假设更新路由器是一个选项。
如果您的防火墙支持,您可能需要调查的一个解决scheme是端口敲打 。 有了一些防火墙,应该可以发出防火墙注意到的一组特殊的数据包,然后通过防火墙临时打开。
有许多实现比其他更好。 有些人使用强大的encryption技术,使没有正确的钥匙的人几乎不可能发出正确的敲门声。
我不会担心离开港口22到互联网,但我会采取一些措施,以确保它。
首先,禁用键盘交互式身份validation并移至ssh密钥。
其次,在远程服务器上安装fail2ban之类的东西,以防止重复探测你的机器的IP地址。 由于您已经设置了ssh密钥,因此授权用户不应该发生身份validation失败。
或者,如果可以的话,采取WerkkreWsbuild议,并在机器前configuration防火墙来终止VPN连接,然后只允许远程服务器上的SSH守护进程接受通过该VPN的连接。
或者,如果你的防火墙不能终止VPN连接,你可以转发GRE或IPSEC数据包到你的Linux机器,并在那里终止。
这听起来像你正在寻找knockd
你可以把它安装在linux服务器上,使用iptables,这样它就像二级防火墙一样。 即使端口22在前端防火墙上打开,它也不会在服务器上打开,所以portscans将不会看到任何打开的端口。 那么当你发出“秘密敲门声”的时候,你突然有了一条通往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
计划任务为您的反向ssh隧道的脚本,或打开防火墙端口。
如果您担心SSH向全世界开放,那么您可以使用iptables脚本在您的维护期间安排任务,并且只有端口可用。
研究一下端口敲开来打开你的SSH隧道。
此外,运行denyhostslocking了太多不好的请求后的人。
这两个软件包都可以在标准的Ubuntu,Fedora和RHEL软件库中使用。
继续前进,打开一个端口,只要在正常范围之外。 我会让它成为一个超过1024的随机端口。这样黑客们甚至不可能find它。
如果你需要远程访问机器,没有理由不要在防火墙上打洞,但是很less。
但是,如果您还不想(或不能)打开该端口,则一个简单的shell脚本可以监视您控制的一些Internet可用资源,并侦听该命令启动反向隧道。 电子邮件帐户,IRC频道和网页可以立即作为触发设备来介绍。
当然,这比开放港口更脆弱,更安全。 但我相信你有你的理由。