Linux服务器中SSH安全加固
SSH是访问远程服务器的最常用方法之一。
SSH也是导致Linux服务器受损的最常见原因之一。
在本文中,将介绍一些实用的方法来提高SSH安全性,从而保护Linux服务器的安全。
在Linux服务器上保护SSH的提示
不要盲目遵循此处提到的所有SSH强化技巧。
阅读所有内容,然后查看哪些内容符合需求。
还请记住,某些技巧可能与其他技巧不兼容。
例如,如果禁用基于密码的SSH登录,则无需使用Fail2Ban这种解决方案。
如果我们了解SSH基础知识,则知道SSH配置文件位于/etc/ssh/sshd_config中。
此处提到的大多数SSH强化技巧都将要求我们编辑此配置文件。
这就是为什么备份原始文件是一个好主意的原因。
如果我们对SSH配置文件进行了任何更改,则还需要重新启动SSH服务。
让我们看看我们可以采取哪些步骤来保护SSH服务器的安全。
1.禁用空密码
是的。
在Linux中可能有没有任何密码的用户帐户。
如果这些用户尝试使用SSH,那么他们也不需要密码即可通过SSH访问服务器。
那是安全隐患。
我们应该禁止使用空密码。
在/etc/ssh/sshd_config文件中,确保将PermitEmptyPasswords选项设置为no。
PermitEmptyPasswords no
2.更改默认的SSH端口
默认的SSH端口为22,大多数攻击脚本检查仅围绕该端口进行。
更改默认的SSH端口应该添加一个添加的安全层,因为攻击的数量(来自端口22)可能会减少。
在配置文件中搜索端口信息,并将其更改为其他内容:
Port 2345
3.禁用通过SSH的root登录
老实说,应该禁止将服务器用作根用户本身。
这是有风险的,并且没有审核线索。
像sudo这样的机制仅出于这个原因存在。
如果我们在系统上添加了sudo用户,则应使用该sudo用户通过SSH(而不是root)通过SSH访问服务器。
我们可以通过修改PermitRootLogin选项并将其设置为no来禁用root登录:
PermitRootLogin no
4.禁用ssh协议1
这是如果我们使用的是较旧的Linux发行版。
某些较旧的SSH版本可能仍具有SSH协议1.
该协议具有已知漏洞,不得使用。
较新的SSH版本会自动启用SSH协议2,但仔细检查它不会有任何危害。
Protocol 2
5.配置空闲超时间隔
空闲超时间隔是SSH连接可以保持活动状态而不进行任何活动的时间。
这样的空闲会话也存在安全风险。
配置空闲超时间隔是一个好主意。
超时间隔以秒为单位,默认情况下为0。
我们可以将其更改为300,以保持5分钟的超时间隔。
ClientAliveInterval 300
在此间隔之后,SSH服务器将向客户端发送一条实时消息。
如果没有响应,则连接将被关闭,最终用户将被注销。
我们还可以控制断开连接前发送活动消息的次数:
ClientAliveCountMax 2
6.仅允许SSH访问选定的用户
当涉及到安全性时,我们应该遵循最小特权原则。
不需要时不授予权利。
Linux系统上可能有多个用户。
我们是否需要允许SSH访问所有这些端口?
也许不是。
这里的一种方法是允许SSH访问选定的几个用户,从而限制所有其他用户。
AllowUsers User1 User2
我们也可以将选定的用户添加到新组中,并且仅允许该组访问SSH。
AllowGroups ssh_group
我们也可以使用DenyUsers和DenyGroups拒绝对某些用户和组的SSH访问。
7.禁用X11转发
X11或者X显示服务器是图形环境的基本框架。
X11转发允许我们通过SSH使用GUI应用程序。
基本上,客户端在服务器上运行GUI应用程序,但是由于X11转发,在计算机之间打开了一个通道,并且GUI应用程序显示在客户端计算机上。
X11协议不是面向安全的。
如果不需要,则应禁用SSH中的X11转发。
X11Forwarding no
8.自动缓解暴力攻击
要阻止SSH暴力破解攻击,可以使用Fail2Ban这样的安全工具。
Fail2Ban检查来自不同IP地址的登录失败尝试。
如果这些错误尝试在设定的时间间隔内超过阈值,则会在特定时间段内禁止IP访问SSH。
我们可以根据自己的喜好和要求配置所有这些参数。
我已经编写了有关使用Fail2Ban的详细入门教程,我们应该阅读该教程。
9.禁用基于密码的SSH登录
无论我们尝试多少,都将始终在Linux服务器上看到通过SSH进行的错误登录尝试。
攻击者很聪明,他们使用的脚本通常会处理Fail2Ban之类的工具的默认设置。
要摆脱持续的暴力攻击,我们只能选择基于密钥的SSH登录。
通过这种方法,我们可以将远程客户端系统的公共密钥添加到SSH服务器上的已知密钥列表中。
这样,那些客户端计算机无需输入用户帐户密码即可访问SSH。
进行此设置后,可以禁用基于密码的SSH登录。
现在,只有具有指定SSH密钥的客户端计算机才能通过SSH访问服务器。
在采用这种方法之前,请确保已将自己的公钥添加到服务器并且该公钥有效。
否则,我们将被锁定在外,并且可能会失去对远程服务器的访问权限,特别是如果我们使用的是Linode这样的云服务器,而我们对该服务器没有物理访问权限。
阅读此详细教程,以了解如何禁用基于密码的SSH身份验证。
10.使用SSH进行两因素身份验证
为了使SSH安全性更上一层楼,我们还可以启用两因素身份验证。
通过这种方法,我们会在手机,电子邮件或者第三方取消认知应用程序上收到一次性密码。
我们可以在此处阅读有关使用SSH设置两因素身份验证的信息。
总结
我们可以使用以下命令查看SSH服务器的所有参数:
sshd -T
这样,我们可以轻松查看是否需要更改任何参数来增强SSH服务器的安全性。
我们还应该保持SSH安装和系统更新。