0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何防止SSH暴力破解

马哥Linux运维 来源:CSDN技术社区 2025-05-12 16:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

防止暴力破解ssh的四种方法

一. 方法介绍

防止暴力破解的四种方法:

• 1 密码要写的足够的复杂,通常建议将密码写16位,并且无连贯的数字或者字母;当然也可以固定一个时间修改一次密码,推荐是一个月修改一次会稳妥一些

• 2 修改ssh的端口号,给对方一些迷惑性,因为远程linux服务器默认端口是22,修改成其他的端口,三位数,四位数的都行,这样能避免大部分的暴力破解的可能性

• 3 通常我们远程登录都是使用root用户进行登录的,我们将root用户设置成系统用户,并且不允许root账号直接登录,添加一个普通用户,给它赋予root用户的权限,这样也能极大的避免对方破解成功的可能性。

• 4 使用秘钥认证的方式登录,在客户端上生成公钥和私钥,将公钥发送给需要远程的服务端,在输入一次正确的密码之后,后续再次远程,则不需要用到密码登录。

由于第一个密码自主性比较强,这里就不做第一个方法的演示,下面的几个方法一起来看看怎么设置吧。

二. 参考实例

2.1 修改端口号

#ssh配置文件
vim /etc/ssh/sshd_config

修改的是第17行的端口信息,这里有个方法,ssh默认端口是22,可以将17行的信息复制一行,在18行进行修改,这里把端口修改成2222。
d4e15a96-2bea-11f0-9310-92fbcf53809c.png在这里插入图片描述
修改完之后一定要记得重启服务
systemctl restart sshd

可以使用扫描端口的工具看下

[root@localhost ~]# nmap 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2023-03-05 11:44 CST
Nmap scan reportforVM-12-17-centos (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 996 closed ports
PORT   STATE SERVICE
21/tcp  open ftp
2222/tcp open EtherNet/IP-1
3306/tcp open mysql
9050/tcp open tor-socks

端口扫描并没有显示到ssh的服务信息,若多开放几个端口,就能起到迷惑性,让对方不知道是使用什么端口远程的。

2.2 赋予其他用户超级权限

vim /etc/passwd



先将root用户设置成系统用户,并且不能进行远程登录
d4facd46-2bea-11f0-9310-92fbcf53809c.png在这里插入图片描述
这里直接新增一个用户,再给一个普通用户超级权限(修改UID和GID)
[root@localhost ~]# useradd -s /bin/bashtest
[root@localhost ~]# vim /etc/passwd
[root@localhost ~]#echo"GUANzhu123//"| passwd --stdintest

d50512f6-2bea-11f0-9310-92fbcf53809c.png在这里插入图片描述
这里可以测试下修改完后是否具有root用户的权限,可以尝试去打开shadow文件。
[root@localhost ~]# su -test
上一次登录:日 3月 5 1113 CST 2023:0 上
ABRT has detected 1 problem(s). For more info run: abrt-cli list
[root@localhost ~]#pwd
/home/test
[root@localhost ~]#tail-2 /etc/shadow
mysql19420::::::
test1942199999::

小提示:千万千万要记得给要赋予超级权限的普通用户设置一个登录密码,让它可以远程登录,否则会出现上不去服务器的情况。

2.3 使用秘钥认证

先在本地使用ssh-keygen命令生成公钥和私钥文件,-t表示选择秘钥的类型,-b表示指定长度,这里选择长度是4096。

[root@localhost ~]# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter fileinwhichto save the key (/root/.ssh/id_rsa):
Created directory'/root/.ssh'.
Enter passphrase (emptyforno passphrase):
Enter same passphrase again:
Your identification has been savedin/root/.ssh/id_rsa.
Your public key has been savedin/root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Mq/1yY0jDdMsw9DNQIUgS0mDKXxkPpxSXXg24inkl44 root@localhost.localdomain
The key's randomart image is:
+---[RSA 4096]----+
|. .B*.++.o.   |
|..B+oB +o    |
| o+=o *..+    |
| .o.=. . o   |
|  = ooSo    |
|  E . +* o   |
|    o*    |
|    o.oo+   |
|   . .=..  |
+----[SHA256]-----+
[root@localhost ~]# ll /root/.ssh/
总用量 12
-rw-------. 1 root root 3243 3月  5 12:17 id_rsa
-rw-r--r--. 1 root root 752 3月  5 12:17 id_rsa.pub




d516b010-2bea-11f0-9310-92fbcf53809c.png在这里插入图片描述

这里有几个信息分别是:
输入保存秘钥的文件,默认是放在/root/.ssh_rsa,如果不指定其他位置,直接按回车即可。
创建目录,默认是/root/.ssh这个目录,不指定的话也是直接按enter。
输入秘钥的密码,这里默认也不设置,按回车,毕竟都使用秘钥了,就不想每次远程服务器又要输入一次密码了。 再次输入相同的密码,这里也直接按回车吧
您的身份信息保证在/root/.ssh/id_rsa中 公钥已保存在/root/.ssh/id_rsa.pub中 秘钥的指纹为: RSA
4096那张图就是这个秘钥的指纹了,可以看出来是很复杂的。

以上都是在客户端上设置的,下一步是将公钥发送到服务器上面
这里又要使用一个命令ssh-copy-id.

#ip填写要远程服务器的IP
[root@localhost ~]# ssh-copy-id root@192.168.196.23





AI写代码
d51dbcc0-2bea-11f0-9310-92fbcf53809c.png在这里插入图片描述
公钥发送过去后,就可以直接使用ssh远程登录;
[root@localhost ~]# ssh 192.168.196.23
Last login: Sun Mar 5 1228 2023 from 192.168.196.166
[root@node1 ~]#





AI写代码

无须输入密码即可远程登录,这个就是秘钥登录的优势了。

三. 使用Fail2ban软件

fail2ban是一款安全保护工具,触发限制后会创建防火墙规则封锁IP,诸如对ssh暴力破解、ftp/http密码穷举等场景提供强有力的保护。
1.这里会使用到两台虚拟机做测试分别是192.168.196.166、192.168.196.23
2.需要用到iptables和ssh服务

3.2 安装Fail2ban

这个程序默认是未安装的,需要先安装好epel源,再安装这个程序

yum install epel-release -y
yum install fail2ban -y

3.2 修改配置文件(服务端进行)

配置文件的位置在:

/etc/fail2ban/jail.conf

这里填写如下信息

[root@localhost fail2ban]# vim jail.conf
[root@localhost fail2ban]#tail-10 jail.conf
[ssh-iptables]  #用到的服务
enabled =true  #开机自动启用服务
filter = sshd   #添加动作是sshd
action = iptables[name=SSH,port=ssh,protocol=tcp]
logpath = /var/log/secure  #要监控的站点日志文件
#这三个代表的是 将5分钟内频繁访问失败3次的IP屏蔽3600秒
maxretry = 3      #设定失败次数   
findtime = 300      #一定时间内      
bantime = 3600      #屏蔽多长时间

重启服务

systemctl restart fail2ban.service systemctlenablefail2ban.service

以上的都是在服务端进行的

3.3测试远程登录(客户端)

这里测试登录失败次数超过三次后会提示什么

[root@node1 ~]# ssh 192.168.196.166
root@192.168.196.166's password: Permission denied, please try again.
root@192.168.196.166's password: Permission denied, please try again.
root@192.168.196.166's password: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@node1 ~]# ssh 192.168.196.166 ssh: connect to host 192.168.196.166 port 22: Connection refused
[root@node1 ~]#
[root@node1 ~]# ssh 192.168.196.166 ssh: connect to host 192.168.196.166 port 22: Connection refused [root@node1 ~]# ssh 192.168.196.166 ssh: connect to host 192.168.196.166 port 22: Connection refused





AI写代码

测试过后显示连接失败,以上配置是已经成功了

3.4 查看有哪些IP被拉入黑名单(服务端)

1 [root@localhost fail2ban]# iptables -L -n |tail
2 Chain IN_public_log (1 references)
3 target prot optsourcedestination
4
5 Chain OUTPUT_direct (1 references)
6 target prot optsourcedestination
7
8 Chain f2b-SSH (1 references)
9 target prot optsourcedestination
REJECT all -- 192.168.196.23 0.0.0.0/0 reject-with icmp-portunreachable
10
11 RETURN all -- 0.0.0.0/0 0.0.0.0/0
12
13 [root@localhost fail2ban]# fail2ban-client status
14 Status
|- Number of jail: 1 15
`- Jail list: ssh-iptables 16
17 [root@localhost fail2ban]# fail2ban-client status ssh-iptables
18 Statusforthe jail: ssh-iptables
19 |- Filter
20 | |- Currently failed: 0
| |- Total failed: 6 21
| `- File list: /var/log/secure 22
23 `- Actions
24 |- Currently banned: 1
|- Total banned: 2 25
`- Banned IP list: 192.168.196.23




如果不慎是其他认识的人登录失败了,可以使用以下方式将他移除黑名单

[root@localhost fail2ban]# fail2ban-clientsetssh-iptables unbanip 192.168.196.23

总结

防止暴力破解的内容就是这么多了,当然也可以通过脚本的方式来屏蔽一段时间频繁访问的IP,若觉得以上内容还行的,可以点赞支持一下!

链接:https://blog.csdn.net/rhn_111/article/details/129343874

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217974
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90883
  • 端口
    +关注

    关注

    4

    文章

    1098

    浏览量

    33831

原文标题:防止暴力破解ssh的四种方法

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    LabView密码破解暴力模式小程序

    LabView密码破解暴力模式小程序,得重新去下载破解密码的字典
    发表于 12-18 10:33

    labview密码破解

    求助,软件是去年改过的不知道谁设置了密码,都说不知道。暴力破解字典实在太大。速度太慢,故求帮助~~PS :网上说的MD5破解,试了下也没成。大神们,求交流~~
    发表于 01-19 23:37

    labview如何写暴力破解密码 密码4位数 由1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 如何每次读取一个数进行测试完成后进行下一个测试

    labview如何写暴力破解密码 密码4位数 由1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ 如何每次读取一个数进行测试完成后进行下一个测试
    发表于 02-17 09:46

    何为暴力破解

    ps:代码复制黏贴即可,有什么问题下方留言,博主会及时回复 !工具:1:笔记本2:USB无线网卡(必备)3:kali系统4:靠谱字典暴力破解法:何为暴力破解呢,其实就是一个一个密码试,直到正确的密码
    发表于 07-15 09:46

    labview的VI加密暴力破解工具

    VI加密破解工具,有需要可以联系我发送wx:***,破解内容仅用于学习,勿用于商用。
    发表于 09-03 08:53

    对目前流行的ssh密码暴力破解工具进行实战研究、分析和总结

    对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是 Secure Shell的缩写,由IETF的网络小组(Network Working
    的头像 发表于 01-29 15:10 5.5w次阅读
    对目前流行的<b class='flag-5'>ssh</b>密码<b class='flag-5'>暴力破解</b>工具进行实战研究、分析和总结

    为什么不能随便暴力破解比特币私钥

    试图用暴力破解私钥有点像试图数到无限大:越早开始,就越不可能到达那里。尽管几乎不可能做到,但对许多人来说,使用暴力破解一个比特币私钥仍然是一个耐人寻味的想法。 永不消逝的梦想
    发表于 10-30 11:23 9188次阅读

    暴力破解比特币私钥可能会实现吗

    试图用暴力破解私钥有点像试图数到无限大:越早开始,就越不可能到达那里。尽管几乎不可能做到,但对许多人来说,使用暴力破解一个比特币私钥仍然是一个耐人寻味的想法。 永不消逝的梦想
    发表于 10-31 09:35 4219次阅读

    字符串硬核暴力破解法讲解

    1 暴力破解法 在主串A中查找模式串B的出现位置,其中如果A的长度是n,B的长度是m,则n 》 m。当我们暴力匹配时,在主串A中匹配起始位置分别是 0、1、2….n-m 且长度为 m 的 n-m+1
    的头像 发表于 04-04 11:50 3645次阅读
    字符串硬核<b class='flag-5'>暴力破解</b>法讲解

    IP知识百科之暴力破解

    暴力破解 暴力破解是一种针对于密码的破译方法,将密码进行逐个推算直到找出真正的密码为止。设置长而复杂的密码、在不同的地方使用不同的密码、避免使用个人信息作为密码、定期修改密码等是防御暴力破解的有效
    的头像 发表于 09-06 09:28 4822次阅读

    如何通过Python脚本实现WIFI密码的暴力破解

    前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。 无图形界面 先来看看没有图形界面版的爆破脚本。 WIFI爆破 import pywififrom
    的头像 发表于 09-10 17:09 2.6w次阅读
    如何通过Python脚本实现WIFI密码的<b class='flag-5'>暴力破解</b>

    xsec-ssh-firewall ssh密码防暴力破解程序

    xsec-ssh-firewall.zip
    发表于 05-07 09:50 0次下载
    xsec-<b class='flag-5'>ssh</b>-firewall <b class='flag-5'>ssh</b>密码防<b class='flag-5'>暴力破解</b>程序

    暴力破解压缩包密码

    可以暴力破解压缩包密码
    发表于 08-08 14:23 10次下载

    通过Python脚本实现WIFI密码的暴力破解

    本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解
    的头像 发表于 09-19 09:55 7694次阅读

    会用kali破解wifi吗?

    准备好 [kali] 系统,电脑可以链接无线 wifi!! 使用 Aircrack-ng 进行暴力破解,linux 上已经安装此工具!
    的头像 发表于 12-05 11:54 2381次阅读