ssh是最常见的访问远程服务器的方法之一,同时也是Linux服务器被攻击最常见的原因之一。不过请不要误会我的意思……我们并不是说ssh有任何安全漏洞,相反,它在设计上是一个非常安全的协议。但是为了安全起见,我们在配置ssh的时候,作为一个好习惯,我们不应该使用它的默认配置。毕竟,默认配置是众所周知的。今天分享几种可以提高ssh安全性的实用方法。不过需要注意的是,下面提到的这些方法,大家可以选择适合自己的,不需要全部用到。有些方法可能与其他方法不兼容。例如,如果禁用基于密码的ssh登录,则无需使用Fail2Ban方案。如果你了解ssh的基础知识,你就会知道ssh的配置文件位于/etc/ssh/sshd_config。我们下面提到的大部分操作都需要编辑这个配置文件。在真正修改配置文件之前,最好做好备份。此外,对ssh配置文件所做的任何更改都需要重新启动ssh服务才能生效。接下来让我们仔细看看。1.禁用空密码在Linux中,用户帐户可能没有任何密码(或者是空密码)。这些用户尝试使用同样不需要密码的ssh。这是一个巨大的安全风险,我们应该禁止空密码。方法是在配置文件/etc/ssh/sshd_config中将PermitEmptyPasswords选项配置为no:PermitEmptyPasswordsno2,并修改ssh的默认端口。ssh的默认端口是22,大部分攻击脚本都是围绕这个端口写的。更改此默认端口会增加ssh的安全性,因为它会大大减少攻击者的数量。搜索配置文件中的端口信息,改成其他值:567端口修改完成后需要记住你修改的端口(毕竟你还是要用这个端口登录的)。3、禁止ssh使用root用户登录说实话Linux系统应该禁止root用户登录,因为有风险,而且不会留下审计信息。这就是sudo机制存在的原因。如果系统添加了sudo用户,最好使用sudo用户通过ssh连接,不要使用root用户。禁止root用户通过ssh访问,可以将PermitRootLogin选项修改为no:PermitRootLoginno4,禁用ssh协议1如果你使用的是较旧的Linux版本,一些低版本的ssh可能还有ssh协议1可用,这个协议存在已知漏洞,无法再使用。较新版本的ssh自动启用ssh协议2,您可以检查此配置:协议25,配置空闲超时间隔空闲超时间隔是ssh连接可以保持活动而没有任何活动的时间量。这种空闲会话也存在安全风险,因此需要配置合适的空闲超时时间间隔。超时间隔以秒为单位,默认值为0。我们可以将其更改为300,即保持5分钟的超时间隔。ClientAliveInterval300在此时间间隔后,ssh服务器将向客户端发送一条活动消息。如果没有响应,连接将被关闭,最终用户将被注销。还可以配置断开连接前发送活动消息的次数:ClientAliveCountMax26,只允许特定用户进行ssh访问。在安全方面,我们应该遵循最小权限的原则,没有权限的时候不要给。需要。比如我们在一个Linux系统上可能有几个用户,但并不是所有的用户都需要通过ssh来访问系统。所以我们可以设置只有少数用户可以通过ssh访问系统,从而限制所有其他用户。如下配置所示:AllowUsersUser1User2此外,还可以配置一个用户组访问ssh:AllowGroupsssh_group此外,还可以配置DenyUsers和DenyGroups来拒绝某些用户和组通过ssh访问。7.禁用X11转发X11或X显示服务器是图形环境的基本框架。X11转发允许您通过ssh使用GUI应用程序。基本上,客户端机器在服务器上运行一个GUI应用程序,但是由于X11转发,机器之间打开了一个通道,GUI应用程序显示在客户端机器上。基于此,X11协议存在安全隐患。因此,如果不需要,您应该在ssh中禁用X11转发。X11Forwardingno8,自动缓解暴力破解攻击防止ssh暴力破解攻击,可以使用Fail2Ban等安全工具。Fail2Ban检查来自不同IP地址的失败登录尝试。如果这些错误尝试在设定的时间间隔内超过阈值,它将在一定时间内禁止该IP访问SSH。我们可以根据自己的需要来配置这些要求。9.禁用基于密码的ssh登录无论你如何配置它们,你都会看到在你的Linux服务器上通过ssh登录尝试失败。攻击者很聪明,他们使用的脚本通常会处理Fail2Ban等工具的默认设置。为了避免一些持续的暴力攻击,我们可以选择基于密钥的ssh登录。即,将远程客户端系统的公钥添加到ssh服务器上的已知密钥列表中。这样,这些客户端机器就可以不用输入用户账号密码就可以访问ssh了。设置完成后,可以禁用基于密码的ssh登录。然后只有具有指定ssh密钥的客户端才能通过ssh进入服务器。在使用此方法之前,请确保您已将自己的公钥添加到服务器并且它可以正常工作。否则,如果您使用的是像Linode这样的云服务器并且没有对服务器的物理访问权限,则您可能会失去对远程服务器的访问权限。我们将写一篇关于如何禁止使用密码进行ssh连接的文章。10.使用ssh进行双因素身份验证要将ssh安全性提升到一个新的水平,您还可以启用双因素身份验证。比如可以通过手机、邮箱或者第三方阿姨APP接收一次性密码。其他人可以使用如下命令查看ssh服务器的所有参数:sshd-T这样我们就可以查看当前的参数配置,检查是否需要修改参数来增强ssh服务器的安全性。此外,请保持您的ssh系统更新以修复一些可能的已知漏洞。
