如何保护 Ubuntu 20.04 中的 SSH 服务器(从基础到高级)
就像所有其他服务器一样,SSH 服务器也容易遭受未经授权的访问尝试。因此,每当您希望使用 SSH 服务器时,您必须首先考虑保护它,以免从长远来看出现任何意外情况。一般来说,术语“保护服务器安全”也称为“强化服务器”。 “这可以通过采取多种措施来实现。这些措施取决于您所需的安全级别。
保护 SSH 服务器的措施范围从基本到高级,正如我们之前所说,您可以根据需要的安全级别来选择它们。如果您对后果有足够的了解并且有能力面对这些后果,您可以跳过任何规定的措施。而且,我们永远不能说单个步骤就能确保 100% 的安全,或者某个步骤比另一个步骤更好。
这完全取决于我们实际需要哪种类型的安全性。因此,今天我们打算让您深入了解在 Ubuntu 20.04 中保护 SSH 服务器的基本和高级步骤。除了这些方法之外,我们还将与您分享一些保护 SSH 服务器安全的其他技巧作为奖励。那么让我们开始今天有趣的讨论。
在 Ubuntu 20.04 中保护 SSH 服务器的方法:
所有 SSH 配置都存储在 /etc/ssh/sshd_config 文件中。该文件对于 SSH 服务器的正常运行非常重要。因此,在对此文件进行任何更改之前,强烈建议您通过在终端中运行以下命令来创建该文件的备份:
创建此文件的备份后,此步骤是可选的,如果您希望检查此配置文件中当前启用的所有选项,则执行此步骤。您可以通过在终端中运行以下命令来检查它:
现在,您可以开始保护您的 SSH 服务器,同时从 Ubuntu 20.04 中的基本步骤转向高级步骤。
在 Ubuntu 20.04 中保护 SSH 服务器的基本步骤:
在 Ubuntu 20.04 中保护 SSH 服务器的基本步骤如下:
步骤#1:打开 SSH 配置文件:
您可以通过在终端中运行以下命令来打开 SSH 配置文件:
步骤#2:禁用基于密码的身份验证:
步骤#3:拒绝/否认空密码:
步骤#4:禁止 root 登录:
步骤#5:使用 SSH 协议 2:
步骤#6:设置会话超时:
有时,用户会让计算机长时间无人看管。与此同时,任何入侵者都可以过来访问您的系统,同时破坏系统的安全性。这就是会话超时概念发挥作用的地方。此功能用于在用户长时间保持不活动状态时注销用户,以便其他用户无法访问其系统。
步骤#7:允许特定用户访问 SSH 服务器:
步骤#8:限制身份验证尝试的次数:
每当用户尝试访问服务器并且他第一次无法验证自己的身份时,他就会尝试再次进行验证。用户不断进行这些尝试,直到他能够成功地验证自己的身份,从而获得对 SSH 服务器的访问权限。这被认为是一种高度不安全的做法,因为黑客可能会发起暴力攻击(一种反复尝试猜测密码直到找到正确匹配的攻击)。结果,他将能够访问您的 SSH 服务器。
步骤#9:在测试模式下运行 SSH 服务器:
到目前为止,我们已经采取了所有基本步骤来保护 Ubuntu 20.04 上的 SSH 服务器。然而,我们仍然需要确保我们刚刚配置的选项能够正常工作。为此,我们将首先保存并关闭我们的配置文件。完成此操作后,我们将尝试在测试模式下运行 SSH 服务器。如果在测试模式下运行成功,那么就意味着你的配置文件没有错误。您可以通过在终端中运行以下命令来在测试模式下运行 SSH 服务器:
步骤#10:使用新配置重新加载 SSH 服务器:
现在,当 SSH 服务器在测试模式下成功运行时,我们需要重新加载它,以便它可以读取新的配置文件,即我们在上面所示的步骤中对 SSH 配置文件所做的更改。要使用新配置重新加载 SSH 服务器,您需要在终端中运行以下命令:
在 Ubuntu 20.04 中保护 SSH 服务器的高级步骤:
在 Ubuntu 20.04 中执行完保护 SSH 服务器安全的所有基本步骤后,您终于可以继续执行高级步骤了。这只是保护 SSH 服务器安全的一个进步。但是,如果您只想实现中等级别的安全性,那么上述步骤就足够了。但如果您想走得更远,那么您可以按照以下步骤操作:
步骤#1:打开 ~/.ssh/authorized_keys 文件:
保护 SSH 服务器安全的基本步骤是在 SSH 配置文件中实现的。这意味着这些策略将适用于所有尝试访问 SSH 服务器的用户。它还意味着基本步骤代表了保护 SSH 服务器安全的通用方法。然而,如果我们尝试考虑“深度防御”的原则,那么我们就会意识到我们需要单独保护每个单独的 SSH 密钥。这可以通过为每个单独的密钥定义显式安全参数来完成。 SSH密钥存储在~/.ssh/authorized_keys文件中,因此我们将首先访问该文件来修改安全参数。我们将在终端中运行以下命令来访问 ~/.ssh/authorized_keys 文件:
步骤#2:为特定键定义特定配置:
为了实现高级安全性,可以使用以下五个选项:
无代理转发
无端口转发
无pty
无用户 rc
无 X11 转发
这些选项可以写在您选择的任何 SSH 密钥之前,以使它们可用于该特定密钥。甚至还可以为单个 SSH 密钥配置多个选项。例如,您想要禁用任何特定键的端口转发,或者换句话说,您想要为特定键实现无端口转发,那么语法将如下:
在这里,您将在 ~/.ssh/authorized_keys 文件中拥有实际的 SSH 密钥,而不是 DesiredSSHKey。将这些选项应用于所需的 SSH 密钥后,您需要保存 ~/.ssh/authorized_keys 文件并关闭它。这种高级方法的一个好处是,它不需要您在进行这些修改后重新加载 SSH 服务器。相反,您的 SSH 服务器将自动读取这些更改。
这样,您将能够通过应用高级安全机制来深度保护每个 SSH 密钥。
在 Ubuntu 20.04 中保护 SSH 服务器的一些其他提示:
除了我们上面采取的所有基本和高级步骤之外,还有一些额外的技巧可以证明对于保护 Ubuntu 20.04 中的 SSH 服务器非常有用。下面讨论了这些额外的技巧:
保持您的数据加密:
驻留在 SSH 服务器上的数据以及仍在传输中的数据都必须使用强大的加密算法进行加密。这不仅可以保护数据的完整性和机密性,还可以防止整个 SSH 服务器的安全受到损害。
让您的软件保持最新:
SSH 服务器上运行的软件必须是最新的。这样做是为了确保您的软件中不会出现无人关注的安全错误。相反,他们应该及时修补。从长远来看,这将使您免受任何潜在的伤害,并且还可以防止您的服务器因安全问题而停机或不可用。
确保 SELinux 已启用:
SELinux 是为基于 Linux 的系统中的安全性奠定基础的机制。它通过实施强制访问控制(MAC)来工作。它通过在其安全策略中定义访问规则来实现此访问控制模型。该机制默认启用。但是,用户可以随时更改此设置。这意味着他们可以随时禁用 SELinux。但是,强烈建议您始终启用 SELinux,这样可以防止您的 SSH 服务器受到所有潜在的危害。
使用严格的密码策略:
如果您使用密码保护 SSH 服务器,则必须创建强密码策略。理想情况下,密码长度应超过 8 个字符。它们应该在指定时间后更换,例如每两个月更换一次。它们不应包含任何字典单词;相反,它们应该是字母、数字和特殊字符的组合。同样,您可以为密码策略定义其他一些额外严格的措施,以确保它们足够强大。
监控和维护 SSH 服务器的审核日志:
如果您的 SSH 服务器出现任何问题,您的第一个帮手就是审核日志。因此,您必须不断维护这些日志,以便能够追溯到问题的根本原因。此外,如果您持续监控 SSH 服务器的运行状况和工作情况,那么这也将首先防止发生任何重大问题。
维护数据的定期备份:
最后但并非最不重要的一点是,您应该始终保留整个 SSH 服务器的备份。这样做不仅可以防止您的数据被损坏或完全丢失;相反,当您的主服务器出现故障时,您还可以使用此备份服务器。这也将限制服务器停机时间并确保其可用性。
结论:
通过采取本文中规定的所有措施,您可以轻松地保护或强化 Ubuntu 20.04 中的 SSH 服务器。然而,如果您有信息安全背景,那么您必须清楚地意识到没有什么比 100% 的安全更好的事实。我们所能得到的只是尽力而为的承诺,而这种尽力而为的承诺只有在它被打破之前才会得到保证。这就是为什么即使采取了所有这些措施,你也不能说你的 SSH 服务器是 100% 安全的;相反,它仍然可能存在您从未想过的漏洞。只有我们密切关注 SSH 服务器并在需要时不断更新,才能解决此类漏洞。