SSH安全最佳实践(ssh协议安全配置)

SSH安全最佳实践(ssh协议安全配置)

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

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

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

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

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

尽管如此,Internet上仍有大量运行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文件的端口行:顺便说一下,端口2222是一个很常见的

端口“备用”端口,因此一些暴力机器人可能仍会尝试此端口。最好选择更随机的东西,例如2452。它甚至不必包含2,如果您愿意,您的SSH端口可以是6543。任何未被服务器上的其他程序使用的最大65535的端口号都是公平的。

  • 这种技术在减少自动机器人攻击方面通常非常有效。其中大部分是非智能脚本,只会寻找在端口22上运行的服务器。
  • 这种技术相当于“默默无闻的安全”。正在尝试备用端口的机器人或任何配备了nmap等端口扫描工具的人都可以在几分钟内轻松找到服务器的新端口。
  • 这种技术会使SSH服务器的访问更加不便,因为您现在需要在连接时指定端口号,而不仅仅是IP。
  • 另一种常见技术是完全禁止root用户帐户通过SSH登录,或者在没有授权SSH密钥的情况下登录。您仍然可以通过SSH获得root访问权限,方法是向您的一个受限用户授予“sudo”权限,或者使用“su”命令使用密码切换到root帐户。

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

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

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

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

    这种技术有点用处,因为用户名“root”对于大多数LInux服务器来说很常见(比如Windows服务器上的“Administrator”),所以很容易猜到。现在禁止此帐户登录意味着攻击者还必须正确猜测用户名才能获得访问权限。

    如果您不使用sudo,此技术会将root访问置于第二个密码之后,要求攻击者在获得对服务器的完全访问权限之前正确知道或猜测两个密码。(Sudo会在一定程度上减少这种好处,因为通常它被配置为允许使用与用户登录时相同的密码进行root访问。)

    如果您的sudo配置出现问题,此方法可能会增加您被锁定在服务器之外的风险。如果您被锁定在root之外,使用此方法访问服务器仍然是一个好主意,例如远程控制台。

    禁用密码验证,支持密钥验证

    关于密码,每个人告诉您的第一件事就是密码要长,难以猜测,并且不要基于字典单词。SSH密钥可以用密钥文件的身份验证代替密码身份验证。

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

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

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

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

  • 此方法大大降低了针对SSH服务器的暴力破解尝试成功的可能性。
  • SSH安全最佳实践,ssh协议安全配置

  • 即使有人在进行有针对性的攻击,SSH密钥也比密码长得多,以至于正确猜测一个密码要困难几个数量级,这仅仅是因为有太多的熵和潜在的组合。
  • 这种技术会使访问服务器变得不那么方便。如果您手边没有密钥文件,您将无法通过SSH登录。
  • 由于上述原因,您也增加了被SSH锁定的风险,例如,如果您丢失了密钥文件。因此,如果您需要让自己重新进入,最好有一种替代方法来访问服务器,例如远程控制台。
  • 如果有人得到了您的密钥文件,就像密码一样,他们现在将能够以您的身份登录。与密码不同,密钥可以很容易地过期并创建新密钥,并且新密钥将以相同的方式运行。

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

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

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

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

    仅允许列入白名单的IP的优点和缺点

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

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

    如果您喜欢,可以实施多种“混合”方法,这些方法结合了这些安全技术中的一种或多种。

    我曾经遇到过GigeNET的一位客户的情况,他们想为员工提供密码访问权限,以便他们可以在我们的档案中留下密码,但他们只想自己使用密钥身份验证,而不想打开密码身份验证到互联网。

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

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

    #GlobalSettingtodisablepasswordauthentication

    #OverridetheGlobalSettingsforIPWhitelist

    #Placethissectionatthe-end-ofyoursshd_configfile.

    PasswordAuthenticationyes

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

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

    这种技术可以通过防止密码在大多数Internet上工作来提供密钥身份验证的安全性,但允许从频繁访问的位置进行密码身份验证的便利性。因此,它允许您在保持大部分安全性的同时减少一些缺点。如果您的IP地址发生变化并且您不再被列入白名单,只要您将密钥文件保存在本地,您仍然可以使用SSH登录。

    与IP白名单防火墙方法一样,此方法需要一些维护,因为如果您的IP地址更改或您需要将其他位置列入白名单,您必须更新SSH配置,但与其他方法不同,在这里更新白名单不太重要,因为您仍然可以访问通过key方法,即使你没有被列入白名单。

    最终,您必须选择最适合您的用例的内容

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

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

    标签:
    数据中心机房常用的冷却方式(数据中心冷却塔的作用)
    « 上一篇
    返回列表
    下一篇 »

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