Linux下的ssh安全防护

SSH是一种广泛使用的协议,用于安全访问Linux服务器。大多数用户使用默认的SSH配置连接服务器,但是,默认配置也会带来各种安全风险。

默认的SSH配置允许使用root账户登录访问服务器,root账户可能存在风险。尤其是对于使用公共IP地址,破解root密码要容易得多。因此,有必要了解SSH安全性。

1.禁用root用户登录

首先创建一个具有root权限的新用户,关闭root用户的服务器访问,可以防止攻击者实现入侵系统的目标。

#创建一个新用户,并且在创建的用户的主目录下创建一个文件夹(-m:在用户主目录下创建用户同名目录)
useradd -m serverroot
#给新用户设置密码
passwd serverroot
#将新创建的用户添加到管理员组(sudo是超级管理员组)
usermod -aG sudo server

用户创建好后,设置禁用root用户访问。编辑/etc/ssh/sshd_config文件。使用vim打开文件:sudo vim /etc/ssh/sshd_config

#禁用root用户访问,将下方选项设置成no,默认是yes(不能有#注释该选项)
PermitRootLogin no

最后,使用以下命令重启SSH服务

sudo systemctl restart sshd

2. 更改默认端口

默认的SSH端口是22当然,所有的攻击者都知道这一点,因此需要更改默认端口号以确保SSH安全。尽管攻击者可以通过Nmap扫描找到新的端口,但是这里的目标是让攻击者的工作更加困难。
使用vim进入ssh配置文件:sudo vim /etc/ssh/sshd_config

#找到 Port选项,修改端口号
Port 2122
保存后记得使用 sudo systemctl restart sshd 重启SSH服务。

注意如果你使用了防火墙记得修改防火墙规则。

3. 禁止使用空白密码的用户访问

系统上可能有一些不小心创建的没有密码的用户。要防止此类用户访问服务器,将SSH配置文件中的PermitEmptyPasswords选项设置为no

PermitEmptyPasswords no

4. 禁止登录 / 访问尝试

默认情况下,可以根据需要尝试多次输入密码来访问服务器。但是,攻击者可以利用此漏洞对服务器进行暴力破解。通过指定允许的密码尝试次数限制暴力破解,即在尝试一定次数后自动终止SSH连接。
编辑配置文件:sudo vim /etc/ssh/sshd_config

# 用户密码错误5次后自动终止SSH连接
MaxAuthTries 5

保存后一定要重启SSH服务:sudo systemctl restart sshd

5. 使用SSH版本2

SSH的第二个版本发布是因为第一个版本中存在许多漏洞。默认情况下,你可以通过Protocol选项添加到配置文件来启用服务器使用第二个版本。

# 启用SSH版本2
Protocol 2

6. 关闭TCP端口转发和X11转发

攻击者可以通过SSH连接的端口转发访问你的其他系统。为了防止这种情况,你可以在配置文件中关闭AllowTcpForwarding 和 X11Forwarding功能

# 禁用X11功能
X11Forwarding no
# 禁用TCP端口转发功能
AllowTcpForwarding no

7. 使用SSH密钥连接,禁止使用密码登录

连接服务器最安全方法之一是使用SSH密钥。使用SSH密钥时,无需密码即可访问服务器。
编辑SSH配置文件:sudo vim /etc/ssh/sshd_config

# 禁止使用密码登录
PasswordAuthentication no

创建SSH密钥,public和private两个密钥。公钥上传到服务器,而私钥存贮在自己的电脑上,用于连接服务器时使用。

在使用ssh-keygen命令生成密钥时,最好设置文件密码。这样,即使有人得到了你的私钥文件也无法获取私钥文件内容,从而阻止访问服务器。

8. SSH连接的 IP 限制

虽然我们有防火墙的保护,但是总有一些大神越过防火墙,此时IP限制就很重要了。

编辑允许IP访问的配置文件:sudo vim /etc/hosts.allow

# 允许某个IP访问
sshd:192.168.1.2:allow
# 允许某个IP段访问
sshd:192.168.1.0/24:allow

编辑禁止IP访问的配置文件:sudo vim /etc/hosts.allow

# 禁止所有用户访问,除允许访问配置中的IP外
sshd:ALL

你可能感兴趣的:(Linux下的ssh安全防护)