LINUX暴力破解与防止被暴力破解

破解工具:hydra、Medusa、patator、BrutesPray等
一、使用nmap扫描指定服务器ssh端口

[root@localhost ~]# wget https://nmap.org/dist/nmap-7.70.tar.bz2
[root@localhost ~]# tar -xvf nmap-7.70.tar.bz2
[root@localhost ~]# cd nmap-7.70
[root@localhost ~]# ./configure
[root@localhost ~]# make 
[root@localhost ~]# make install

安装完成。
使用方法:

[root@localhost ~]# nmap 192.168.1.67
Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-04 14:18 CST
Warning: File ./nmap-services exists, but Nmap is using /usr/local/bin/../share/nmap/nmap-services for security and consistency reasons.  set NMAPDIR=. to give priority to files in your local directory (may affect the other data files too).
Nmap scan report for 192.168.1.67
Host is up (0.050s latency).
Not shown: 980 closed ports
PORT     STATE    SERVICE
22/tcp   open     ssh

二、使用和安装medusa

[root@localhost ~]# yum -y install medusa

Medusa参数
Medusa [-hhost|-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密码
(1)通过文件来指定host和user,host.txt为目标主机名称或者IP地址,user.txt指定需要暴力破解的用户名,密码指定为password

[root@localhost ~]# ./medusa -M ssh -H host.txt -U users.txt -p password

(1)对单一服务器进行密码字典暴力破解
如图5所示,破解成功后会显示success字样,具体命令如下:

[root@localhost ~]# medusa -M ssh -h 192.168.1.67 -n 22 -u root -Pnewpass.txt

防止暴力破解

1、密码足够复杂:
2、修改默认端口号
3、不使用root用户名登录

方法1:
1、密码足够复杂:
密码的长度要大于8位最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成。
方法2:修改默认端口号 sshd 默认端口号: 22

[root@localhost ~]# vim /etc/ssh/sshd_config

改Port 22
为:Port 81或者5位数

[root@localhost ~]# systemctl restart sshd

注:我们改成81,这里81给人的感觉像是web端口
扫描:

[root@localhost ~]# nmap 192.168.1.67
Starting Nmap 5.21 ( http://nmap.org ) at 2015-05-22 21:13 CST
Nmap scan report for xuegod63.cn (192.168.1.67)
Host is up (0.000019s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE
81/tcp  open  hosts2-ns
111/tcp open  rpcbind

#看到端口是81,
测试ssh远程登录:

[root@localhost ~]# ssh [email protected]
ssh: connect to host 192.168.1.67 port 22: Connection refused

注: 发现默认的方法已经连接不上
正确的方法:

[root@localhost ~]# ssh [email protected] -p 81

注:改端口号的目的是为了,避免批量扫描

方法3:不使用root用户名登录,这样猜不到你的用户名。也就无从暴力破解
不使用用户名为root的帐号登录系统,但是要获得root超级管理员权限。 怎么办?注:判断一个用户是不是超级管理员,看的是用户的ID是否为0。

例:创建一个普通帐号,然后变成超级管理权限

[root@localhost ~]# useradd hjj   #创建hjj用户
[root@localhost ~]# echo 123456 | passwd --stdin hjj   #hjj 密码是123456
Changing password for user hjj .
passwd: all authentication tokens updated successfully.
[root@localhost ~]# vim /etc/passwd
改:root:x:0:0:root:/root:/bin/bash
为:root:x:0:0:root:/sbin/nologin   #不让root登录系统
 
改:hjj:x:1000:1000::/home/hjj :/bin/bash
为:hjj:x:0:0::/home/hjj :/bin/bash  #改ID500为0,hjj就成root身份

测试:

[root@localhost ~]# ssh [email protected] -p 81   #root登录不成功
[email protected]'s password: 123456
Last login: Sun May 10 09:43:55 2015 from xuegod63.cn
This account is currently not available.
Connection to 192.168.1.63 closed.
[root@localhost ~]# ssh hjj @192.168.1.67 -p 81  #hjj用户可以登录
[email protected]'s password: 123456

[root@localhost ~]# whoami   #查看当前登录系统的用户名
root
[root@localhost ~]# id hjj 
uid=0(root) gid=0(root) groups=0(root)

设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,此IP可以重新登录。
1、下载fail2ban
官方地址:http://www.fail2ban.org

	[root@localhost ~]# tar  -zxvf fail2ban-0.8.14.tar.gz
	[root@localhost fail2ban-0.8.14]# cd fail2ban-0.8.14
	[root@localhost fail2ban-0.8.14]# vim README.md  #查看以下内容

需要安装python开发环境,并且版本要大于2.4

[root@localhost fail2ban-0.8.14]# python -V
Python 2.7.2.
安装:
[root@localhost ~]# cd fail2ban-0.8.14
[root@localhost fail2ban-0.8.14]#python setup.py install
[root@localhost fail2ban-0.8.14]# cp files/redhat-initd /etc/init.d/fail2ban

应用实例
设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,此IP可以重新登录。

[root@localhost ~]# vim /etc/fail2ban/jail.conf  #改以下红色标记内容
96行 enabled  = true
97行 filter   = sshd
98行 action   = iptables[name=SSH, port=ssh, protocol=tcp]
99行            sendmail-whois[name=SSH, [email protected], sender=fail2ba    
100行 logpath  = /var/log/secure
101行 
findtime  = 300
maxretry = 3
bantime  = 3600

注释:
enabled = true #是否激活此项(true/false)修改成 true
logpath = /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件。
#完成:5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
findtime = 300 #在5分钟内内出现规定次数就开始工作,默认时间单位:秒
maxretry = 3 #3次密码验证失败
bantime = 3600 #禁止用户IP访问主机1小时
启动服务:

[root@localhost fail2ban-0.8.14]#service fail2ban start

哪台机器在暴力破解你的服务器?
查看fail2ban服务运行状态:

[root@localhost fail2ban]# fail2ban-client status  #配置好之后我们检测下fail2ban是否工作。
Status
|- Number of jail:	1
`- Jail list:		ssh-iptables

[root@localhost fail2ban]# fail2ban-client status ssh-iptables  
#具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有成功。
Status for the jail: ssh-iptables
|- filter
|  |- File list:	/var/log/secure 
|  |- Currently failed:	0
|  `- Total failed:	3
`- action
   |- Currently banned:	1
   |  `- IP list:	192.168.1.63
   `- Total banned:	1

猜你喜欢

转载自blog.csdn.net/qq_35012243/article/details/84788728
今日推荐