顶级SSH安全的最佳实践(ssh协议安全吗)

顶级SSH安全的最佳实践(ssh协议安全吗)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-05-14
文章简介

SSH是Linux服务器的常用系统管理实用程序。无论您是在运行CentOS、Debian、Ubuntu还是介于两者之间的任何东西;如果您以前登录过Linux服务器,那么您可能至少听说过它。 首字母缩

2025阿里云双十一服务器活动

SSH是Linux服务器的常用系统管理实用程序。无论您是在运行CentOS、Debian、Ubuntu还是介于两者之间的任何东西;如果您以前登录过Linux服务器,那么您可能至少听说过它。

首字母缩略词SSH代表“安全套接字外壳”,顾名思义,该协议的构建考虑了安全性。许多服务器管理员认为SSH开箱即用是非常安全的,而且在大多数情况下,他们是正确的。默认情况下,SSH具有开箱即用的出色安全功能,例如对通信进行加密以防止中间人攻击,以及主机密钥验证以提醒用户自上次登录后服务器的身份是否发生变化。

尽管如此,互联网上仍有大量服务器运行SSH,攻击者喜欢寻找可能影响大量服务器的攻击媒介。在安全性方面,往往会牺牲便利性,因此许多服务器管理员有意或不加思索地让他们的服务器运行默认的SSH安装。在大多数情况下,这对他们中的大多数人来说不是问题,但是您可以采取一些步骤来领先一步。毕竟,我相信稍微领先一点是可以达到的最佳安全实践之一,这样您的服务器就可以避免成为可能吸引攻击者的低垂果实之一。考虑到这一点,这里有一些你可能想要为你的Linux服务器考虑的技术,以帮助提高你的SSH安全性。

提高SSH安全性的最常用技术之一是蛮力保护。这是因为运行SSH服务的服务器管理员面临的最常见的安全问题之一是来自自动机器人的暴力攻击。机器人会尝试猜测服务器上的用户名和密码,但暴力保护可以在一定数量的失败后自动禁止他们的IP地址。

一些常见的开源蛮力保护解决方案是ConfigServerFirewall(CSF)和Fail2Ban。CSF在cPanel服务器上最常见,因为它有一个WHM插件。

  • 通过自动禁止它们来帮助减少来自机器人的登录失败,从而使机器人有机会猜测您的一个SSH帐户的登录详细信息的可能性大大降低。
  • 非常容易实现,无需更改SSH配置。
  • 这些蛮力程序无法将机器人与您和您的用户区分开来。如果您意外登录失败太多次,您可能会将自己锁定在外。如果发生这种情况,请确保您有可靠的方法来连接服务器,例如将您自己的IP地址列入白名单,并使用KVM或IPMI控制台作为最后的手段。
  • 我看到的最常见的技术之一是将SSH端口号更改为默认端口22/tcp以外的其他值。?此更改相对简单,例如,如果您想将SSH端口从22更改为2222,您只需像这样更新sshd_config文件的Port行:

    顺便说一句,端口2222是一个非常常见的“备用”端口,因此一些蛮力机器人可能仍会尝试此端口。最好选择更随机的东西,比如2452。它甚至不必包含2,如果你想要的话,你的SSH端口可以是6543。任何不被服务器上其他程序使用的端口号高达65535都是公平的游戏。

    更改SSH端口号的优缺点

  • 这种技术通常在减少自动机器人攻击方面非常有效。其中大部分是非智能脚本,只会寻找在端口22上运行的服务器。
  • 这种技术相当于“默默无闻的安全”。正在尝试备用端口的机器人或任何配备了诸如nmap之类的端口扫描工具的人将在几分钟内轻松找到服务器的新端口。
  • 这种技术会使SSH服务器的访问更加不便,因为您现在需要在连接时指定端口号,而不仅仅是IP。
  • 通过SSH禁用Root登录

    另一种常见的技术是完全禁用root用户帐户通过SSH登录,或者没有授权的SSH密钥。您仍然可以通过SSH获得root访问权限,方法是向您的受限用户之一授予“sudo”权限,或者使用“su”命令使用密码切换到root帐户。

    这可以通过调整sshd_config文件中的“PermitRootLogin”设置来配置。

    要仅允许使用SSH密钥进行root登录,您可以将这一行更改为:

    要完全禁止通过SSH进行root登录,您可以将该行更改为:

    通过SSH禁用Root登录的优缺点

  • 这种技术有点帮助,因为用户名“root”对于大多数LInux服务器(如Windows服务器上的“Administrator”)是通用的,所以很容易猜到。现在禁用此帐户登录意味着攻击者还必须正确猜测用户名才能获得访问权限。
  • 如果您不使用sudo,此技术会将root访问权限置于第二个密码之后,要求攻击者在完全访问服务器之前正确知道或猜测两个密码。(Sudo可以在一定程度上减少这种好处,因为它通常被配置为允许使用与用户登录相同的密码进行root访问。)
  • 如果您的sudo配置出现问题,这种方法可能会增加您被锁定在服务器之外的风险。在这种方法中,如果您被锁定在root之外,使用另一种访问服务器的方法(例如远程控制台)仍然是一个好主意。
  • 禁用密码验证,支持密钥验证。

    每个人告诉你的关于密码的第一件事就是让它们变长,难以猜测,而不是基于字典单词。SSH密钥可以将密码验证替换为通过密钥文件进行的验证。

    与密码相比,SSH密钥非常安全,因为它们包含大量随机数据。如果您曾经看过SSL证书或密钥文件,那么SSH密钥看起来与此类似。这是一个非常大的随机字符串。

    您无需输入密码即可登录SSH服务器,而是使用此密钥文件进行身份验证,这与网站上SSL证书的工作方式非常相似。

    如果您想禁用密码验证,您可以通过修改sshd_config文件中的“PasswordAuthentication”设置来实现,如下所示:

    禁用密码身份验证的优点和缺点,有利于密钥身份验证。

    顶级SSH安全的最佳实践,ssh协议安全吗

  • 大多数蛮力机器人一开始只是尝试输入密码,他们将使用完全错误的身份验证方法尝试闯入,因此这些机器人永远不会成功。
  • 即使有人在进行有针对性的攻击,SSH密钥也比密码长得多,以至于正确猜测一个数量级要困难几个数量级,这仅仅是因为存在如此多的熵和潜在的组合。
  • 这种技术会使访问服务器变得不那么方便。如果您手边没有密钥文件,您将无法通过SSH登录。
  • 由于上述原因,您也增加了被锁定在SSH之外的风险,例如,如果您丢失了密钥文件。因此,如果您需要让自己重新进入服务器,最好有另一种访问服务器的方法,例如远程控制台。
  • 如果有人掌握了您的密钥文件,就像密码一样,他们现在将能够以您的身份登录。与密码不同,密钥很容易过期并创建新密钥,并且新密钥将以相同的方式运行。

    关于SSH密钥方法的另一个有趣的怪癖是您可以在一个帐户上授权多个SSH密钥,而一个帐户通常只能有一个密码。

    值得注意的是,即使打开了密码验证,您也可以使用SSH密钥访问帐户。默认情况下,如果您授权密钥,SSH密钥将用作身份验证方法。

    仅允许列入白名单的IP

    一种非常有效的安全技术是只允许列入白名单的IP地址连接到SSH服务器。这可以通过防火墙规则来完成,只向授权的IP地址开放SSH端口。

    这对于家庭用户或共享网络托管服务提供商来说可能是不切实际的,因为很难知道哪些IP地址需要访问,而且家庭IP地址往往是动态的,因此您的IP地址可能会改变。对于您使用VPN或主要从静态IP地址访问的情况,它可能是一种低维护且极其安全的解决方案。

    仅允许列入白名单的IP的利弊

  • 这种方法提供了非常强大的安全性,因为攻击者需要已经访问您的白名单IP之一才能尝试通过SSH登录。
  • 可以说,这种方法可以取代对其他安全方法的需求,例如暴力保护或禁用密码身份验证,因为现在暴力攻击的威胁已经基本消除。
  • 这种方法会增加您被锁定在服务器之外的机会,尤其是如果您位于IP地址可能会更改的位置,例如住宅Internet连接。
  • 访问的便利性也降低了,因为您将无法从未提前列入白名单的位置访问服务器。
  • 这需要付出一些努力,因为您现在必须根据需要更改添加和删除IP,从而维护您的IP地址白名单。
  • 在我自己的个人服务器上,这通常是我使用的技术。这样我仍然可以方便地使用密码进行身份验证和使用普通的SSH端口,同时具有很强的安全性。我还经常更换我的服务器,在需要时创建新的服务器,我发现实施这个白名单是让我的新服务器安全而不影响其他配置的最快方法,我可以简单地从另一台服务器复制我的白名单。

    混合方法:允许来自IP列表的密码,但允许来自所有IP的密钥。

    如果您想花点心思,可以实施许多“混合”方法,它们结合了这些安全技术中的一种或多种。

    我曾经与我们的一位客户遇到过这样一种情况,他们希望为员工提供密码访问权限,以便他们可以将密码留给我们存档,但他们只想自己使用密钥身份验证而不打开密码身份验证到互联网。

    这实际上实现起来非常简单,它提供了禁用密码验证的大部分安全性,同时在大多数情况下仍然允许密码验证的便利性。

    为此,您需要将以下行添加到sshd_config:

    对于上述情况,1.2.3.4是列入白名单的IP地址。您可以重复配置的该部分以将多个IP列入白名单,并且可以将/32更改为另一个IPv4CIDR,例如/28、/27等,以便将一系列IP列入白名单。

    请记住,匹配地址块应该放在sshd_config文件的最后。

  • 这种技术可以通过防止密码在大多数Internet上工作来提供密钥验证的安全性,但允许从频繁访问位置进行密码验证的便利性。因此,它可以让您在保持大部分安全性的同时减少一些缺点。
  • 如果您的IP地址发生更改并且您不再被列入白名单,您仍然可以使用密钥文件通过SSH登录,只要您将其保存在本地即可。
  • 与IP白名单防火墙方法一样,此方法需要一些维护,因为如果您的IP地址发生更改或您需要将其他位置列入白名单,您必须更新您的SSH配置,但与其他方法不同,此处更新白名单不太重要,因为您仍然可以访问即使您没有被列入白名单,也可以通过key方法。
  • 最终,您将不得不选择最适合您的用例的方案。?

    希望这个技术和示例列表为您在保护服务器安全时可以使用提供一些思考的食物:风险是什么以及存在哪些可能的技术来减轻风险。根据您认为服务器安全性的重要性,以及实施各种安全解决方案以减轻您担心的风险的实用性,您可以选择一种或多种技术来推进。

    归根结底,我总是提醒大家,安全是相对的。你永远不会有任何完全无法穿透的东西,最重要的是让自己至少领先其他人一步。即使您只实施这些安全实践中的一种,您也比使用默认设置运行的大量Linux服务器更安全,并且SSH对任何想要尝试登录的人都开放。

    标签:
    服务器维护101(服务器维护是干什么的)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!