SSH是Linux服务器的常用系统管理实用程序。无论您是在运行CentOS、Debian、Ubuntu还是介于两者之间的任何东西;如果您以前登录过Linux服务器,那么您可能至少听说过它。
首字母缩略词SSH代表“安全套接字外壳”,顾名思义,该协议的构建考虑了安全性。许多服务器管理员认为SSH开箱即用是非常安全的,而且在大多数情况下,他们是正确的。默认情况下,SSH具有开箱即用的出色安全功能,例如对通信进行加密以防止中间人攻击,以及主机密钥验证以提醒用户自上次登录后服务器的身份是否发生变化。
尽管如此,互联网上仍有大量服务器运行SSH,攻击者喜欢寻找可能影响大量服务器的攻击媒介。在安全性方面,往往会牺牲便利性,因此许多服务器管理员有意或不加思索地让他们的服务器运行默认的SSH安装。在大多数情况下,这对他们中的大多数人来说不是问题,但是您可以采取一些步骤来领先一步。毕竟,我相信稍微领先一点是可以达到的最佳安全实践之一,这样您的服务器就可以避免成为可能吸引攻击者的低垂果实之一。考虑到这一点,这里有一些你可能想要为你的Linux服务器考虑的技术,以帮助提高你的SSH安全性。
提高SSH安全性的最常用技术之一是蛮力保护。这是因为运行SSH服务的服务器管理员面临的最常见的安全问题之一是来自自动机器人的暴力攻击。机器人会尝试猜测服务器上的用户名和密码,但暴力保护可以在一定数量的失败后自动禁止他们的IP地址。
一些常见的开源蛮力保护解决方案是ConfigServerFirewall(CSF)和Fail2Ban。CSF在cPanel服务器上最常见,因为它有一个WHM插件。
我看到的最常见的技术之一是将SSH端口号更改为默认端口22/tcp以外的其他值。?此更改相对简单,例如,如果您想将SSH端口从22更改为2222,您只需像这样更新sshd_config文件的Port行:
顺便说一句,端口2222是一个非常常见的“备用”端口,因此一些蛮力机器人可能仍会尝试此端口。最好选择更随机的东西,比如2452。它甚至不必包含2,如果你想要的话,你的SSH端口可以是6543。任何不被服务器上其他程序使用的端口号高达65535都是公平的游戏。
更改SSH端口号的优缺点
通过SSH禁用Root登录
另一种常见的技术是完全禁用root用户帐户通过SSH登录,或者没有授权的SSH密钥。您仍然可以通过SSH获得root访问权限,方法是向您的受限用户之一授予“sudo”权限,或者使用“su”命令使用密码切换到root帐户。
这可以通过调整sshd_config文件中的“PermitRootLogin”设置来配置。
要仅允许使用SSH密钥进行root登录,您可以将这一行更改为:
要完全禁止通过SSH进行root登录,您可以将该行更改为:
通过SSH禁用Root登录的优缺点
禁用密码验证,支持密钥验证。
每个人告诉你的关于密码的第一件事就是让它们变长,难以猜测,而不是基于字典单词。SSH密钥可以将密码验证替换为通过密钥文件进行的验证。
与密码相比,SSH密钥非常安全,因为它们包含大量随机数据。如果您曾经看过SSL证书或密钥文件,那么SSH密钥看起来与此类似。这是一个非常大的随机字符串。
您无需输入密码即可登录SSH服务器,而是使用此密钥文件进行身份验证,这与网站上SSL证书的工作方式非常相似。
如果您想禁用密码验证,您可以通过修改sshd_config文件中的“PasswordAuthentication”设置来实现,如下所示:
禁用密码身份验证的优点和缺点,有利于密钥身份验证。

如果有人掌握了您的密钥文件,就像密码一样,他们现在将能够以您的身份登录。与密码不同,密钥很容易过期并创建新密钥,并且新密钥将以相同的方式运行。
关于SSH密钥方法的另一个有趣的怪癖是您可以在一个帐户上授权多个SSH密钥,而一个帐户通常只能有一个密码。
值得注意的是,即使打开了密码验证,您也可以使用SSH密钥访问帐户。默认情况下,如果您授权密钥,SSH密钥将用作身份验证方法。
仅允许列入白名单的IP
一种非常有效的安全技术是只允许列入白名单的IP地址连接到SSH服务器。这可以通过防火墙规则来完成,只向授权的IP地址开放SSH端口。
这对于家庭用户或共享网络托管服务提供商来说可能是不切实际的,因为很难知道哪些IP地址需要访问,而且家庭IP地址往往是动态的,因此您的IP地址可能会改变。对于您使用VPN或主要从静态IP地址访问的情况,它可能是一种低维护且极其安全的解决方案。
仅允许列入白名单的IP的利弊
在我自己的个人服务器上,这通常是我使用的技术。这样我仍然可以方便地使用密码进行身份验证和使用普通的SSH端口,同时具有很强的安全性。我还经常更换我的服务器,在需要时创建新的服务器,我发现实施这个白名单是让我的新服务器安全而不影响其他配置的最快方法,我可以简单地从另一台服务器复制我的白名单。
混合方法:允许来自IP列表的密码,但允许来自所有IP的密钥。
如果您想花点心思,可以实施许多“混合”方法,它们结合了这些安全技术中的一种或多种。
我曾经与我们的一位客户遇到过这样一种情况,他们希望为员工提供密码访问权限,以便他们可以将密码留给我们存档,但他们只想自己使用密钥身份验证而不打开密码身份验证到互联网。
这实际上实现起来非常简单,它提供了禁用密码验证的大部分安全性,同时在大多数情况下仍然允许密码验证的便利性。
为此,您需要将以下行添加到sshd_config:
对于上述情况,1.2.3.4是列入白名单的IP地址。您可以重复配置的该部分以将多个IP列入白名单,并且可以将/32更改为另一个IPv4CIDR,例如/28、/27等,以便将一系列IP列入白名单。
请记住,匹配地址块应该放在sshd_config文件的最后。
最终,您将不得不选择最适合您的用例的方案。?
希望这个技术和示例列表为您在保护服务器安全时可以使用提供一些思考的食物:风险是什么以及存在哪些可能的技术来减轻风险。根据您认为服务器安全性的重要性,以及实施各种安全解决方案以减轻您担心的风险的实用性,您可以选择一种或多种技术来推进。
归根结底,我总是提醒大家,安全是相对的。你永远不会有任何完全无法穿透的东西,最重要的是让自己至少领先其他人一步。即使您只实施这些安全实践中的一种,您也比使用默认设置运行的大量Linux服务器更安全,并且SSH对任何想要尝试登录的人都开放。
本文来源:国外服务器--顶级SSH安全的最佳实践(ssh协议安全吗)
本文地址:https://www.idcbaba.com/guowai/5242.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



