我准备将 Linux 机器部署为远程位置的某种公共终端。我希望能够通过 SSH 远程访问它以进行维护,但我不想在需要访问这台机器的少数情况下在远程防火墙上保持端口打开。我考虑过一个简单的脚本来创建到外部机器的反向 SSH 隧道,但我不想让用户在需要访问它时做任何事情。有什么想法吗?
更新:我决定按照我最初的计划,使用脚本创建反向 ssh 隧道。虽然其他建议的解决方案(例如端口敲击)更符合我真正想要做的事情,但在这种情况下,除了引导用户完成配置外,我没有任何权限来配置路由器。不寒而栗
答案1
这与端口是否开放关系不大,而与不想引导用户完成端口开放过程关系更大。不幸的是,我根本无法访问此路由器。
如果完全无法更换路由器,您可能需要考虑使用 P2P 或 VPN 解决方案,例如鰤鱼。如果您将系统设置为在启动时自动建立 VPN 连接,那么您应该能够在需要时随时连接。Hamachi 会为您完成所有防火墙协商。一个缺点是,当您需要连接时,您必须依赖 Hamachi 服务器处于启动和运行状态。
如果你有一个始终处于运行状态的服务器,你可以设置自动SSH这样远程系统就会始终保持隧道打开并连接到您的服务器。一个缺点是远程系统受到威胁,攻击者将获得用于建立 ssh 会话的密钥。保持接受 ssh 连接的系统真正锁定非常重要。
以下是我原来的答案,我曾假设更新路由器是一种选择。
如果你的防火墙支持的话,你可能需要研究的一个解决方案是端口敲击某些防火墙可以发出一组特殊的数据包,防火墙会注意到这些数据包,然后暂时打开防火墙的漏洞。
有许多实现方法,有些比其他方法更好。有些方法使用强加密技术,使得没有正确密钥的人几乎不可能发出正确的敲门声。
答案2
我不会太担心让端口 22 可以访问互联网,但我会采取一些措施来确保它的安全。
首先,禁用键盘交互式认证并转至 ssh 密钥。
其次,安装类似失败2ban在远程服务器上将重复探测您机器的 IP 地址列入黑名单。由于您已设置 ssh 密钥,因此授权用户的身份验证不应失败。
或者,如果可以的话,请听取 WerkkreWs 的建议并配置机器前面的防火墙以终止 vpn 连接,然后只允许远程服务器上的 ssh 守护程序接受通过该 vpn 的连接。
或者,如果您的防火墙无法终止 vpn 连接,您可以将 GRE 或 IPSEC 数据包转发到您的 linux 机器,并在那里终止它。
答案3
听起来你正在寻找被敲
你可以在 Linux 服务器上安装它,使用iptables因此它有点像第二级防火墙。即使前端防火墙上的端口 22 是打开的,服务器上也不会打开,因此端口扫描不会看到任何打开的端口。然后,当您发送“秘密敲门”时,您突然就有了一条通往端口 22 的开放路径。
那有意义吗?
答案4
为您的反向 ssh 隧道制定计划任务脚本,或者打开防火墙端口。
如果您担心 SSH 向全世界开放,您可以在维护期间使用 iptables 脚本安排任务,并且仅在那时可用端口。