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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章