SSH 指的是安全外壳,它有助于在不安全或安全的网络上安全地操作网络服务,例如远程登录服务器、文件传输和其他与服务器相关的操作。
SSH 默认配置不足以加固 SSH 通道; 我们需要配置附加设置以完全增强其安全性。 在本文中,我们将学习 11 种保护 ssh 服务器的方法。
禁用通过 SSH 服务器的 Root 登录
由于 root 用户可以访问服务器中的所有服务,因此最好不要冒险让系统允许远程 root 登录。 如果在使用暴力攻击或其他黑客工具时密码被暴露,它可能太容易受到攻击。 因此,最好的做法是禁用远程 root 登录并坚持使用普通用户。
要禁用远程 root 登录,请打开 sshd_config 文件。
$ sudo vim /etc/ssh/sshd_config
然后,将“PermitRootLogin”设置为 no
禁用 ssh root 用户登录。
禁用空密码
一些 Linux 发行版会创建没有密码的用户,因此它可能很容易被允许使用空密码进行远程访问的 ssh 连接。 因此,为了禁用此服务,我们需要在 sshd_config 文件中将“PermitEmptyPasswords”设置为 no。
PermitEmptyPasswords no
禁用空密码登录。
跨 SSH 协议使用基于公钥的身份验证。
强烈建议使用基于公钥的身份验证,因为 SSH 服务器支持不同的身份验证过程。 黑客尝试使用不同的黑客工具使用暴力攻击等各种方法来破解密码。 为了防止这种情况发生,我们使用基于公钥的身份验证。
首先,我们需要使用 ssh-keygen 命令生成公钥和私钥。 要生成密钥,请执行以下命令。 在此过程中,系统会询问您在哪里生成 ssh 密钥,如果您想继续使用默认值,请按 Enter。 然后你会被问到一个密码短语,它指的是你的 ssh 密钥的密码,使用一个由特殊字符、字母和数字组成的强密码。 设置密码后,您的 ssh 密钥将在主目录的 .ssh 目录中生成。
$ ssh-keygen -t rsa
生成 ssh 密钥对。
在上传公共密钥之前,请确保您的远程服务器中有 .ssh 目录,如果没有在您的主目录中创建一个,然后使用以下命令将您的公共 ssh 密钥上传到服务器。
$ cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
将公钥上传到服务器。
现在您可以通过 ssh 协议使用公钥以用户 ubuntu 身份登录。
基于公钥的身份验证。
使用密码禁用 SSH 登录身份验证
强烈建议使用 ssh 公钥身份验证来远程访问服务器,因为如果不使用强密码,密码可能会通过暴力攻击暴露。 要从 SSH 服务器禁用密码验证,请将“PasswordAuthentication”值设置为 no。
密码验证无
更改 SSH 默认端口 22。
默认情况下,SSH 在系统的 22 端口上运行。 如果我们更改 SSH 标准端口,它可能会通过避免打开端口的异常流量来增加额外的安全层。 因此,要更改端口并不简单,请打开 sshd_config 文件并在端口部分设置您想要的未使用端口号。 以下是 example 我已将端口设置为 454。
更改 ssh 默认端口。
使用 SSH 限制用户登录访问。
SSH 服务器允许所有用户远程访问服务器,但我们可以覆盖默认设置并仅设置特定用户以允许或拒绝通过 SSH 协议进行远程访问。 以一种简单的方式远程访问所有系统用户登录,为黑客访问我们的系统创造了一种可能的方式。
要允许特定用户通过 SSH 登录,请在 sshd_config 中添加以下行。
AllowUsers user1 user2 ubuntu
同样,您可以通过添加以下代码行来限制特定用户并允许其他用户通过 SSH 访问。
DenyUsers root user3 user4
增强对 SSH 用户/密钥的强密码的使用。
通常,人们经常使用简单的密码进行登录,例如 123456、something123,以便他们可以轻松记住密码。 这就是为什么蛮力攻击可以完美地工作,因为它会根据字典来尝试密码检查。 因此,为避免这种情况,我们必须使用包含特殊字符、大小写字母、数字的密码,并且密码长度至少为 8 个字符。
配置空闲超时间隔
用户通常会让他们的 SSH 连接闲置更长的时间,因此如果有人试图接管您的 SSH 会话并在用户目前不存在的情况下为所欲为,这将是高风险的。 所以我们可以在一段时间不活动后设置我们的登录会话超时,这样我们就需要在会话超时时重新登录。 要设置空闲超时,我们需要在 sshd_config 文件中设置“ClientAliveInterval”值。 在下面的 example,我已将超时值设置为 360,即 6 分钟。
ClientAliveInterval 360
使用 SSH 协议 2
SSH 有两种协议变体 SSH 协议 1 和 SSH 协议 2,协议 1 是系统默认设置,它不如协议 2 安全,因为协议 2 应用批量加密、稳健算法和加密检查。 要切换到协议 2,我们需要在 sshd_config 文件中添加以下行。
协议 2
使用 ssh 协议 2。
配置密码尝试限制
我们可以限制 ssh 登录的密码尝试次数,因此在有限次数的尝试后连接将断开,这将增加额外的安全层,防止系统受到机器人攻击。 为此,我们需要设置“MaxAuthTries”指令值。 在里面 example,我已将其限制设置为 4 次尝试。
MaxAuthTries 3
限制 ssh 登录尝试。
禁用隧道和端口转发
如果您不使用隧道和端口转发服务,最好将其禁用,因为黑客可能会使用这些服务突破您的系统。 要实现它,请将以下指令值设置为 no。
AllowAgentForwarding 否
AllowTcpForwarding 否
许可隧道没有
最后,一切都设置好后,不要忘记重新启动 ssh 服务器以应用更改
$ sudo systemctl restart ssh
结论
在本文中,我们学习了一些加固 SSH 服务器的常用方法,这些方法有助于避免不同的安全风险。 我希望你喜欢这篇文章。