Linux下的ssh安全防护问题
作者:PHP经验分享
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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。