我正在考虑将端口 22 转发到路由器后面机器上的 22,但它安全吗?任何人都可以尝试在端口 22 上连接到我的公共 IP,然后无限期地尝试猜测用户和密码。
似乎不是一个好主意。有什么建议?它是如何正确完成的?
我正在考虑将端口 22 转发到路由器后面机器上的 22,但它安全吗?任何人都可以尝试在端口 22 上连接到我的公共 IP,然后无限期地尝试猜测用户和密码。
似乎不是一个好主意。有什么建议?它是如何正确完成的?
那里有许多自动机器人会尝试攻击 SSH 服务器,但如果您采取一些预防措施,您实际上可以使 SSH 非常安全。
如果您采取这些步骤,您应该准备好打开 SSH 到 Internet。只要您保持您的密钥安全并且您的服务器包是最新的,您就不应该在 SSH 安全方面遇到任何问题。
编辑:如果您有两台机器需要访问但只有一个公共 IP 地址,您有两种选择:您可以将端口转发设置到一台机器,如果您需要访问第二台机器,您将登录到第一台机器一个和 SSH 从第一个到第二个的私有 IP 地址。
您的另一个选择是将第二台机器的 SSH 端口从 22 更改为其他值(例如 2222)。然后您可以将端口 22 转发到第一台机器,将 2222 端口转发到第二台机器。如果您需要访问第二台机器,那么您需要在 SSH 客户端中指定端口 2222。(旁注:如果需要,您可以在两台机器上使用非标准端口来减少机器人流量。)
如果你是唯一一个访问机器的人,我发现通过为 ssh 选择一个非标准端口来保持你的 ssh 日志干净是有帮助的。
是的,如果攻击者使用僵尸网络进行简单的端口扫描,这很容易绕过,因此不会增加针对严重攻击者的安全性(尽管它会阻止您成为最容易实现的目标)。拥有强大的 ssh 密码短语/密钥和其他最佳实践(例如,禁用 root 登录)仍然是有意义的。但是在我的 VPS 上,我发现它可以将我在日志中看到的来自随机 IP 地址的失败登录攻击从过去三个月的每天数千次尝试减少到零。
基本上只需选择一个未用于其他目的的端口(我倾向于通过检查/etc/services以确保您没有使用知名服务来选择未用于任何用途的端口 - 我也选择端口在小于 1024 的系统端口范围内),例如 501。然后只需在路由器中进行端口转发,即可将端口 501 上的传入 TCP 请求转发到本地计算机上的端口 22。
然后,您与ssh -p 501 $your_routers_ip外界联系。如果你设置一个.ssh/config文件,你可以把端口放在那里:
host example
Hostname example.com # or ip address
User jimbob
Port 501
ForwardAgent no
ForwardX11 no
然后就可以了ssh example,它会自动转到正确的端口/正确的用户名(并禁用 X11/Agent 转发)。
我有一个本地家庭服务器,担心将端口 22 暴露给互联网。我采用这种方法安装 lokinet mixnet 服务并为其分配一个地址。您需要在笔记本电脑上安装 lokinet 客户端,以便它可以解析 .loki 域。此处指南:https ://docs.loki.network/Lokinet/Guides/ReverseSSHGuide/