SSH(Secure Shell)是一种广泛用于安全访问 Linux 服务器的协议。尽管大多数用户使用默认设置的 SSH 连接来连接远程服务器,但默认配置可能存在一些安全风险。下面是在 Linux 上保护 SSH 服务器连接的一些方法:
1. 禁用 root 用户登录:
首先,禁用 root 用户的 SSH 访问并创建一个具有 root 权限的新用户。关闭 root 用户的服务器访问是一种防御策略,可以防止攻击者实现入侵系统的目标。以下是示例命令:
useradd -m exampleroot
passwd exampleroot
usermod -aG sudo exampleroot
以下是上述命令的简要说明:
useradd 创建一个新用户,并且 - m 参数在你创建的用户的主目录下创建一个文件夹。
passwd 命令用于为新用户分配密码。请记住,你分配给用户的密码应该很复杂且难以猜测。
usermod -aG sudo 将新创建的用户添加到管理员组。
在用户创建过程之后,需要对 sshd_config 文件进行一些更改。你可以在 / etc/ssh/sshd_config 找到此文件。使用任何文本编辑器打开文件并对其进行以下更改:
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
AllowUsers exampleroot
PermitRootLogin 行将阻止 root 用户使用 SSH 获得远程访问。在 AllowUsers 列表中包含 exampleroot 会向用户授予必要的权限。
最后,重启 SSH 服务。如果失败并且你收到错误消息,请尝试以下命令。这可能因你使用的 Linux 发行版而异。
2. 更改默认端口:
默认的 SSH 连接端口是 22,但攻击者通常知道这一点。为增加安全性,建议更改默认端口号。要更改端口号,编辑 /etc/ssh/sshd_config 文件并将 `Port` 设置为你选择的新端口号,然后重新启动 SSH 服务。
3. 禁止使用空白密码的用户访问:
禁止系统上存在空白密码的用户访问服务器,将 sshd_config 文件中的 PermitEmptyPasswords 行值设置为 no。
4. 限制登录/访问尝试:
通过更改 sshd_config 文件中的 MaxAuthTries 值,来限制每个连接的密码尝试次数,以减少暴力破解的风险。
5. 使用 SSH 版本 2:
启用 SSH 版本 2,以提高安全性。编辑 /etc/ssh/sshd_config 文件,将 `Protocol` 设置为 `2`。
6. 关闭 TCP 端口转发和 X11 转发:
关闭不必要的功能,如 TCP 端口转发和 X11 转发,以减少潜在的攻击风险。
7. 使用 SSH 密钥连接:
使用 SSH 密钥连接是一种更安全的方式,无需密码即可访问服务器。你可以使用 `ssh-keygen` 命令生成 SSH 密钥对,然后将公钥上传到服务器。
8. SSH 连接的 IP 限制:
通过编辑 /etc/hosts.allow 文件,可以限制 SSH 访问,只允许特定的 IP 地址或 IP 块访问服务器,或者拒绝所有其他 IP 地址的访问。
完成上述配置后,确保重启 SSH 服务以保存更改。这些方法可以提高 SSH 服务器的安全性,降低潜在攻击的风险。但请注意,更改 SSH 配置时务必小心,以免意外地锁定自己出服务器。