网站搜索

在 Linux 服务器或桌面上保护 SSH 的 5 个技巧


Secure Shell 是远程登录 Linux 系统最安全的选项之一。但有一些方法可以使该技术更加安全。

我使用 Secure Shell (SSH) 已经有几十年了。有了这个远程登录工具,我可以放心我的远程机器安全有效地接受登录。同时,我也明白在连接到网络的任何设备上没有什么是 100% 安全的,这就是为什么我总是花时间在我使用的每台计算机上更好地保护 SSH。

您可能会惊讶地发现添加一些额外的安全“层”是多么容易。正如我在下面强调的,有一些易于应用的技巧可以帮助您的 Linux 桌面和服务器计算机更加安全,因此您可以相信它们可以更好地防止不必要的登录。

让我们开始工作吧。

1.安装fail2ban

您应该做的第一件事(尤其是在服务器上)是安装fail2ban,它可以防止恶意和暴力登录攻击,并且还可以用于监视其他网络协议(例如HTTP、SSH和FTP)。

使用fail2ban,您可以创建监狱,这些配置告诉系统在发生某些事情(例如失败的SSH登录尝试)时要做什么。 Jail 文件(通常名为jail.local)位于 /etc/fail2ban/ 中,可能如下所示:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 300
bantime = 28800
ignoreip = 127.0.0.1

您可以使用以下命令在基于 Debian 的系统上安装fail2ban:

sudo apt-get install fail2ban -y

在基于 Fedora 的系统上,该命令为:

sudo dnf install fail2ban -y

2.更改默认端口

默认情况下,SSH 使用端口 22 进行传入连接。这种联系是众所周知的,并且可能会导致麻烦。在我更重要的系统上,我总是将端口更改为其他端口,例如 2124。将端口更改为其他系统未使用的端口非常重要。

端口配置在 /etc/ssh/sshd_config 文件中的 #Port 22 行中设置。

确保删除 # 字符并将 22 更改为您要使用的任何端口。完成更改后,请记住使用以下命令重新启动 SSH:

sudo systemctl restart ssh

对于基于 Fedora 的系统,该命令为:

sudo systemctl restart sshd

3. 阻止密码为空的用户

尽管您的系统上可能没有密码为空的用户,但本技巧属于“安全总比后悔好”的类别。如果您的用户密码为空,并且坏人发现了该用户,他们就可以轻松访问您的计算机。为了防止出现这种情况,请打开 /etc/ssh/sshd_config 文件并查找以下行:

#PermitEmptyPasswords no

将该行更改为:

PermitEmptyPasswords no

保存并关闭文件,然后重新启动 SSH。

4.限制登录特定IP地址

另一个非常方便的技巧是限制 SSH 访问特定的 IP 地址。例如,如果您只有一个人需要访问一台计算机,并且他们的 IP 地址是 192.168.1.11,您可以借助 /etc/hosts.allow 文件限制 SSH 访问。使用您最喜欢的文本编辑器(例如 nano)打开该文件,并在底部添加以下行:

sshd: 192.168.1.62, 192.168.1.11

如果您想要允许访问多个 IP 地址,您可以根据需要添加多个 IP 地址,并用逗号分隔每个地址,如下所示:

sshd: 192.168.1.62, 192.168.1.11, 192.168.1.12, 192.168.1.13, 192.168.1.14

保存并关闭文件。

5.使用SSH密钥认证

SSH 密钥身份验证的重要性怎么强调都不为过。我已经在另一篇文章中展示了如何设置此技术,因此请务必通读该文章并实施该策略。与fail2ban 结合使用,SSH 密钥身份验证是防止不必要的 SSH 登录的好方法。

现在您已经掌握了在 Linux 桌面和服务器上保护 SSH 安全的五种简单方法。仅仅因为 SSH 中有“安全”一词,并不意味着它应该被视为实现安全目的的一种手段。通过一些额外的配置,您的 SSH 登录将得到更好的保护,免受那些在互联网上漫游寻找系统访问权限的不良行为者的侵害。

相关文章