如何保护 SSH 服务器

当我们谈论远程访问服务器时,首先想到的是 SSH。 它是一种网络协议和 Telnet 的安全版本,并对连接进行加密,因此其他人无法访问正在传输的信息。

随着技术世界的进步,黑客每天都变得越来越老练。 如果您使用传统或默认安装设置,即使您的 SSH 连接也不安全。 因此,有必要采取一些重要的预防措施来保护您的 SSH 服务器免受不必要的数据泄露和恶意攻击。

在本文中,我们将向您介绍一些重要的安全实践,它们将帮助您显着提高 SSH 服务器的安全级别。

1. 使用强用户名和密码

如果您使用暴露于外部世界的 SSH,那么您可能会面临来自黑客的一些登录尝试。 他们使用不同的高级技术来破解您的 SSH 用户名和密码。 强密码和用户名组合将帮助您保护您的服务器。

你可以使用一个 密码生成器 创建一个强大的随机密码。 另外,不要使用任何常见的密码序列,如 asdf、12345678 等。

2. 避免使用端口 22

端口 22 是 SSH 连接的默认端口,每一个试图访问你的 SSH 服务器的黑客都会首先攻击这个端口。 因此,更改端口将为您的 SSH 连接添加额外的安全层,并防止对 SSH 服务器的自动攻击。 更改端口也将使您远离黑客雷达。

如何更改SSH端口?

按照以下步骤更改默认 22 端口:

  1. 打开你的 /etc/ssh/sshd_config 文件。
  2. 将以下行添加到您的文件中。 设置任何非标准端口。
    Port 20125 
  3. 使用以下命令重新启动 SSHD 服务:
    sudo systemctl restart sshd  

现在 SSH 服务器正在侦听一个新端口。

3.禁用根登录

允许通过 SSH 直接登录到 root 是最常见和最危险的安全漏洞之一。 可以访问您的 root 密码的黑客可能会损坏您的机器。 因此,出于安全考虑,建议禁用 root 用户登录并使用非 root 用户访问。 您可以使用 ‘su-’ 命令在禁用 root 登录后访问 root 权限。

如何禁用root用户登录?

您再次需要编辑 sshd_config 文件或 /etc/ssh/sshd_config 文件,因为您的所有服务器设置都存储在该文件中。

  1. 以根用户身份登录并打开 sshd_config 文件。
  2. 寻找 #PermitRootLogin 或者 PermitRootLogin yes 在该文件中并将其更改为:
    PermitRootLogin no 
  3. 然后通过写入“AllowUsers your_username”添加您将用于登录的用户帐户。
  4. Save 变化。
  5. 在不关闭当前根会话的情况下重新启动 SSHD。
    sudo systemctl restart sshd  
  6. 然后打开一个新终端并检查您是否可以以您添加的新用户身份登录。
  7. 之后,你可以 close 根会话。
  8. 您现在可以以您添加的具有所有 root 权限的用户身份登录,或者您可以使用“su”命令。

4. 使用 SSH 密钥而不是密码

您将使用强密码来保护您的服务器,但在某些情况下,密码可能会被破解或暴力破解。 因此,使用 SSH 密钥登录将为您的服务器安全添加一个额外的层。

在 SSH 密钥登录中,您创建两个密钥,一个是公共的,一个是私有的。 私钥与您的主机相关联,公钥安装在您要远程访问的服务器上。 您可以使用 SSH 密钥对在源服务器和目标服务器之间建立连接,而无需使用密码。 配置 SSH 密钥对后,您可以禁用密码登录。

使用另一个教程在 Linux 上配置基于密钥的 SSH。

SSH 密钥登录是如何工作的?

一旦您发起连接请求,服务器将使用存储在其上的公钥创建加密消息。 此消息将传输到您的主要设备,私钥将解密该消息。 一旦消息未加密,主设备将向远程服务器发送确认消息以建立连接。

5. 禁用空密码

Linux 允许用户创建空密码,允许空密码登录服务器会使您的服务器暴露在易受攻击的网络攻击中。 因此,请确保禁用空密码。

如何禁用空密码?

  1. 打开 sshd_config 文件。
  2. 找到 PermitEmptyPasswords 并将“no”值替换为“yes”。
  3. PermitEmptyPasswords  no 
  4. 重新启动 sshd。

这将禁用空密码登录到您的服务器。

结论

网络攻击正以惊人的速度增加,无论您是在使用虚拟机还是构建服务器,向 IT 环境添加安全层都是一种强大的安全实践。 实施上述做法将增强您的工作环境,并帮助您防止潜在的网络威胁。