在将 sshd 打开互联网以便我可以从任何地方进行连接之前,我应该采取哪些步骤来合理地保护我的 Linux 桌面?
答案1
我强烈建议您使用 RSA 密钥而不是密码进行远程 SSH 登录。
其次,您需要安装失败2Ban或类似于阻止暴力破解尝试的内容(尽管再次禁用密码身份验证以支持 SSH 访问的 RSA 公钥/私钥身份验证将使这成为一个没有实际意义的问题)
第三,可以阻止root通过ssh连接;我建议您这样做并sudo
在连接后使用。
至于其余的......好吧,尽管 SSH 本质上比大多数安全性更高,但通过 Internet 提供服务时所有常见的预防措施都适用。
答案2
确保您的 SSH 服务器保持最新。 OpenSSH 拥有良好的安全记录,但您并不希望如此。
仔细考虑是否需要允许密码认证。通常,您应该仅从受信任的计算机登录(不要在可能运行键盘记录器的计算机上键入密码),并且这些受信任的计算机通常在您的控制之下并拥有您的 ssh 私钥。所以在大多数情况下密码验证是没有用的,你应该禁用它。禁止密码认证的主要原因是用户不善于管理密码:他们重复使用密码(因此密码被泄露)并且不善于选择难以猜测的密码(因此密码被暴力破解)。如果您是计算机上的唯一用户,并且您的密码强度很高,并且您不在其他任何地方使用该密码,并且您没有也永远不会拥有任何类型的易于猜测的测试帐户密码,并且您永远不会为朋友开设帐户,那么允许密码验证就可以了。
您可能想要限制允许通过 ssh 登录的用户集。特别是,如果您面对的是中低复杂程度的攻击者,禁用 root 登录可能会减慢攻击速度。不过这没什么大不了的。从用户帐户升级到 root 很少是最困难的部分。
如果可以,请将日志保存在单独的计算机或只读介质上。请注意,有许多机器人会执行暴力尝试,使用猜测的密码或弱键。这些机器人对于适当安全的设置(强密码,无低熵密钥)不会产生攻击性,但可以生成日志条目。很大程度上消除这些暴力尝试的一种方法是在非默认端口上运行 ssh。请注意,这只是减少日志量的一种方法(并且可能会稍微减少探测流量),它本身并不提供任何额外的安全性。
答案3
好好阅读一下加固Linux服务器关于安全 stackexchange 的问题。它涵盖了关闭薄弱服务以及删除不需要和过时的服务。
答案4
限制 SSH 连接速率并按照文章中提到的链接进一步强化您的 ssh 配置。还限制 sshd 仅使用协议 2,禁止通过 ssh 直接 root 登录。
仅允许您的帐户登录。禁用密码验证。不要使用端口 22。使用您的私钥的密码。