如何提升OpenSSH服务器安全性?
当涉及到访问远程设备,如服务器,路由器和交换机,S强烈建议使用SSH协议,因为它具有加密流量和抵御任何可能试图窃听您的连接的功能。
虽然如此,SSH的默认设置并不是万无一失的,还需要额外的调整来使协议更加安全。在本文中,我们将探讨您可以使用不同的方法来确保服务器上OpenSSH安装的安全和硬化。
1. 设置SSH无密码认证
默认情况下,SSH要求用户在登录时提供密码。但问题是:黑客可以猜测密码,甚至使用特殊的黑客工具进行暴力破解攻击,获得对你系统的访问权限。为了安全起见,强烈建议您使用SSH无密码身份验证。
①第一步是生成一个SSH密钥对,它包括一个公钥和一个私钥。该私钥存放在你的主机系统上,而公钥则会被复制到远程服务器上。
一旦成功复制了公钥,你就可以无缝地进入远程服务器,而无需输入密码。
②下一步是禁用密码身份验证,要实现此目的,您需要修改SSH配置文件。
$ sudo vim / etc / ssh / sshd_config
在配置文件中,找到以下指令。取消#注释并将 "yes "改为 "no"。
PasswordAuthentication no
然后重新启动SSH守护程序。
# sudo systemctl restart sshd
2.禁用用户SSH无密码连接请求
增强服务器安全性的另一种推荐方法是禁用没有密码的用户的SSH登录。这听起来有些奇怪,但有时系统管理员可以创建用户帐户而忘记分配密码。
要拒绝没有密码的用户的请求,请再次访问位于的配置文件/etc/ssh/sshd_config并,取消#注释并将 "yes "改为 "no":
PermitEmptyPasswords no
然后重新启动SSH服务以使更改生效。
$ sudo systemctl restart sshd
3.禁用SSH根登录
如果黑客设法暴力破解您的root密码,那会发生什么?。允许远程root登录始终可不是一个好主意,它可能会危害系统的安全性。
因此,始终建议您禁用SSH远程root登录,而要坚持使用常规的非root用户。再次转到配置文件,然后如图所示修改此行。
PermitRootLogin no
完成后,重新启动SSH服务以使更改生效。
$ sudo systemctl restart sshd
此后,远程根登录将被禁用。
4.使用SSH协议2
SSH有两种版本:SSH 协议1和协议2。SSH 协议2于2006年推出,由于其强大的密码检查,批量加密和强大的算法,它比协议1更安全。
默认情况下,SSH使用协议1。要将其更改为更安全的协议2,请在配置文件中添加以下行:
Protocol 2
与前面一样,重新启动SSH才能使更改生效。
$ sudo systemctl restart sshd
今后,SSH将默认使用协议2。
要测试是否再支持SSH 协议1,请运行以下命令:
$ ssh -1 user @ remote-IP
您将收到一条错误消息“SSH protocol v.1 is no longer supported”。
在这种情况下,命令为:
$ ssh -1 tech@192.168.2.108
此外,您可以简单地指定-2标签,以确保协议2是使用的默认协议。
$ ssh -2 tech@192.168.2.108
5.设置SSH连接超时的空闲值
空闲SSH连接会使您的PC长时间无人值守会带来安全风险。有人可以简单地通过并接管您的SSH会话,然后随便做什么。为解决该问题,因此,谨慎地设置一个空闲超时限制,超过该限制时,SSH会话将关闭。
再次打开您的SSH配置文件,然后找到指令“ ClientAliveInterval”。分配一个合理的值,例如,我已将限制设置为180秒。
ClientAliveInterval 180
这意味着如果3分钟(相当于180秒)后未注册任何活动,则SSH会话将被丢弃。
然后重新启动SSH守护程序以影响所做的更改。
$ sudo systemctl restart sshd
6.将SSH访问限制为某些用户
对于附加的安全层,您可以定义需要SSH协议登录并在系统上执行远程任务的用户。这样可以避免其他任何未经您许可而试图进入您的系统的用户。
与往常一样,打开配置文件,并添加指令“AllowUsers ”,后跟要授予的用户名。在下面的示例中,我允许用户james 通过SSH远程访问系统。任何其他试图获得远程访问权限的用户都将被阻止。
AllowUsers tecmint james
此后,重新启动SSH以使更改继续存在。
$ sudo systemctl restart sshd
7.配置密码尝试限制
可以增加安全性的另一种方法是通过限制SSH登录尝试的次数,以便在尝试失败的次数之后,连接断开。因此,再次转到配置文件并找到“ MaxAuthTries ”指令,并为最大尝试次数定义一个值。
在此示例中,限制已设置为3次尝试,如图所示。
MaxAuthTries 3
最后,同样需要重新启动SSH服务。
以上就是对您可以用来保护SSH远程连接的一些措施的汇总。重要的是要补充一点,您应该始终为具有远程访问权限的用户设置一个复杂的强密码。