Linux下的ssh安全防护问题

 更新时间:2023年08月11日 11:15:58   作者:PHP经验分享  
这篇文章主要介绍了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文件系统挂载失败问题的解决方法

    Linux文件系统挂载失败问题的解决方法

    在 Linux 系统中,文件系统挂载失败是一种常见的错误,可能由文件系统损坏、挂载选项配置错误或硬件问题等原因引起,解决挂载失败的问题需要根据具体情况逐步排查和修复,以下是解决 Linux 文件系统挂载失败问题的完整指南,需要的朋友可以参考下
    2025-11-11
  • 解决SSH连接超时的2个配置方法

    解决SSH连接超时的2个配置方法

    用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,照成这个问题的原因便是SSH服务有自己独特的会话连接机制。
    2014-04-04
  • Ubuntu19.10开启ssh服务(详细过程)

    Ubuntu19.10开启ssh服务(详细过程)

    这篇文章主要介绍了Ubuntu19.10开启ssh服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux删除目录下的文件的10种方法小结

    Linux删除目录下的文件的10种方法小结

    本文是脚本之家小编给大家收藏整理的Linux删除目录下的文件的10种方法,文中还给大家提到了Linux 删除文件夹和文件的命令,具体内容详情大家参考下本文
    2018-04-04
  • 80端口被system占用导致Apache无法启动的解决方法

    80端口被system占用导致Apache无法启动的解决方法

    本文给大家介绍80端口被system占用导致Apache无法启动的解决方法,非常不错,一起看看吧
    2016-12-12
  • Linux下遇到PyCurl的错误解决方法

    Linux下遇到PyCurl的错误解决方法

    在本篇内容里小编给大家整理的是关于Linux下遇到PyCurl的错误解决方法及相关代码,需要的朋友们可以学习下。
    2020-07-07
  • Linux的用户组与权限用法及说明

    Linux的用户组与权限用法及说明

    这篇文章主要介绍了Linux的用户组与权限用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • linux让$变成#符号的实操方法

    linux让$变成#符号的实操方法

    在本文里我们给大家整理了一篇关于linux让$变成#符号的操作方法和案例,对此有需要的朋友们跟着操作下。
    2019-02-02
  • Ubuntu如何分配​​未使用的空间​

    Ubuntu如何分配​​未使用的空间​

    Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs调整逻辑卷及文件系统,最终成功释放空间
    2025-07-07
  • CentOS平台实现搭建rsync远程同步服务器的方法

    CentOS平台实现搭建rsync远程同步服务器的方法

    这篇文章主要介绍了CentOS平台实现搭建rsync远程同步服务器的方法,较为详细的分析了CentOS搭建rsync远程同步服务器的具体步骤、相关命令与注意事项,需要的朋友可以参考下
    2018-04-04

最新评论