在访问远程设备(例如Linux服务器、路由器和交换机)时,强烈推荐使用SSH协议访问,因为它能够加密流量并阻止任何可能试图窃听您的连接的人。
但尽管如此,SSH默认设置并非万无一失,所以需要进行一些额外的设置以使使用更安全。在本文中,小编简单整理用于保护和强化服务器OpenSSH协议登录的七种方法。
1、设置SSH无密码认证
默认情况下,SSH要求用户在登录时提供密码。但实际情况是,黑客或者攻击者也能破解密码,甚至使用特殊的黑客工具进行暴力攻击并获得对服务器系统的访问权限。为了安全起见,强烈建议开启SSH无密码身份验证。
这种方法之前也介绍过程,第一步是生成一个由公钥和私钥组成的SSH密钥对。私钥保留在本地主机系统上,而公钥被复制到远程服务器。
成功复制公钥后,就可以通过私钥SSH连接到远程服务器,而无需提供密码。
当然,公钥和私钥访问设置成功之后,下一步是禁用密码登录,要实现这一点,需要修改SSH配置文件。
$ sudo vim /etc/ssh/sshd_config
在配置文件中,滚动并找到以下指令。取消注释并将选项更改'yes'
为'no'
PasswordAuthentication no
然后重新启动 SSH 守护程序。
# sudo systemctl restart sshd
这时候,你只能使用SSH密钥身份验证访问远程服务器,而不能输入用户名和密码访问。
2、禁用用户SSH无密码连接请求
另一种加强服务器安全性的方法是禁用没有密码用户的SSH登录。这听起来可能有点奇怪,但有时系统管理员可以创建用户帐户并忘记分配密码——虽然这是不应该出现的事情。
所以,要拒绝没有密码的用户的请求,请再次转到配置文件/etc/ssh/sshd_config
并确保具有以下命令行:
PermitEmptyPasswords no
然后重新启动SSH服务以使更改生效。
# sudo systemctl restart sshd
3、禁用SSH root登录
如果黑客设法暴力破解root 密码,会发生什么是不言而喻的。允许远程root登录总会存在安全风险,可能会危及系统的安全性。因此,始终建议禁用SSH远程 root登录,而是坚持使用常规的非root 用户。再次,转到配置文件并修改此行,命令如下:
PermitRootLogin no
完成后,重新启动SSH服务以使更改生效。
# sudo systemctl restart sshd
此后,远程root登录将被停用,只能通过非root用户登录。
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 tecmint@192.168.2.108
此外,还可以简单地指定-2
标签,以确保协议2是使用的默认协议,命令如下:
$ ssh -1 tecmint@192.168.2.108
5、设置SSH连接超时限制
如果本地电脑长时间无人看管且SSH连接处于活动状态可能会带来安全风险,因为这样其他人可以简单地绕过登录即可进行SSH会话,从而为所欲为。为了解决这个问题,比较不错的做法是设置一个超时限制,当超过该限制时,本地SSH会话将自动被关闭。
设置方法很简单,打开SSH 配置文件并找到指令“ClientAliveInterval”。分配一个合理的值,例如,这里将限制设置为180秒。
ClientAliveInterval 180
这意味着如果在 3 分钟(相当于180秒)内,SSH没有任何设置操作,则SSH会话将被关闭。
当然,需要重新启动SSH守护程序以使所做的更改生效,命令如下:
# sudo systemctl restart sshd
6、限制特定用户的SSH访问
对于添加的安全层,可以定义需要SSH协议才能登录并在系统上执行远程任务的用户。这可以阻止任何其他可能在未经批准的情况下尝试进入服务器系统的用户。
打开配置文件并附加指令“ AllowUsers ”,后面跟要授予的用户名。在本文中,允许 ‘ tecmint ‘ 和 ‘ james ‘ 用户通过SSH远程访问系统,任何其他试图获得远程访问权限的用户都将被阻止。
AllowUsers tecmint james
重新启动SSH以使更改保持不变。
# sudo systemctl restart sshd
7、配置密码尝试限制
另一种添加安全层的方法是限制SSH登录尝试的次数,这样在多次尝试失败后,连接就会断开。因此,再次转到配置文件并找到“ MaxAuthTries ”指令并定义最大尝试次数的值。
在此示例中,限制已设置为3次尝试,命令如下:
MaxAuthTries 3
最后,像之前一样重启SSH服务即可。
总结
以上就是可以采取的一些措施来保护SSH远程连接的安全。另外需要注意的是,还应该始终为具有远程访问权限的用户分配强密码以阻止暴力攻击。
在租用Linux服务器的时候,服务器的安全性至关重要。由于我们每天都需要通过SSH访问远程服务器进行管理设置,所以包含SSH远程连接安全是一件马虎不得的事情,务必要重视起来。