更新時(shí)間:2018-03-22 來源:黑馬程序員 瀏覽量:
1、概述
對(duì)于服務(wù)器操作系統(tǒng)Linux來講,一般通過ssh來進(jìn)行遠(yuǎn)程管理,
像Telnet、Rlogin等傳統(tǒng)遠(yuǎn)程管理工具,由于其采用明文傳輸,數(shù)據(jù)信息容易被竊聽, 在多數(shù)用戶業(yè)務(wù)系統(tǒng)中,考慮到安全合規(guī)要求,一般會(huì)被禁用。
本文通過對(duì)常用的ssh口令暴力破解工具h(yuǎn)ydra進(jìn)行介紹,并在口令破解的基礎(chǔ)上, 介紹安全防護(hù)技術(shù)。
2、環(huán)境
驗(yàn)證環(huán)境分為攻擊機(jī)和靶機(jī), 攻擊機(jī)采用Kali Linux系統(tǒng)靶機(jī)
攻擊機(jī)
3、 Hydra工具應(yīng)用
Hydra 是Kali Linux中一款很受歡迎的口令破解工具,當(dāng)前最新版本V8.6, 基本用法可以通過man hydra 來查看, 在這個(gè)工具使用過程中,比較重要的一點(diǎn),就是利用一個(gè)高效的口令字典,hydra本身也可以用于生成口令字典。但一般會(huì)用cupp進(jìn)行生成, 關(guān)于cupp的詳細(xì)用法,后續(xù)在整理一篇文檔進(jìn)行介紹。本文重點(diǎn)介紹Hydra暴力破解及其安全防護(hù)策略。
基本用法
root@kali:~# hydra -l 用戶 -P 密碼字典 -t 32 -e nsr -vV -o ssh_ok.log IP ssh
-l/-L 指定用戶名-l, 或者-L 指定用戶名字典(用戶名列表)
-p/-P 指定用戶口令-p,或者-P 指定用戶口令字典(用戶口令列表)
-t : 指定并行任務(wù)數(shù)量,默認(rèn)16
-e: 額外檢查,n 代表空口令, s代碼用戶名, r代碼用戶名稱逆序(反向)
-vV: 顯示詳細(xì)過程
-o: 輸出login/passwd 對(duì)到指定的文件
IP: 靶機(jī)IP地址
ssh: 被攻擊的協(xié)議(服務(wù)名稱, telnet、ftp、pop3、ssh…)
攻擊驗(yàn)證命令:
口令破解成功的話, 會(huì)有如上的提示
4、口令暴力破解安全防護(hù)技術(shù)
4.1 利用ssh自身的安全防護(hù)機(jī)制
4.1.1 禁止默認(rèn)用戶(root)登錄
一般來說, 在口令破解時(shí)需要提供用戶名字典,這個(gè)字典的建立通常會(huì)包括一些系統(tǒng)中默認(rèn)的用戶, 最典型的就是linux系統(tǒng)的root用戶,最易被攻擊
如何需要進(jìn)制其他用戶(非root用戶) 還可以選擇使用 DenyUsers (黑名單) 或者 AllowUsers(白名單)
上述可以用來禁止一些系統(tǒng)默認(rèn)用戶root 、 xxxuser1 、 xxxuser2登錄。
補(bǔ)充說明
- 修改sshd_config 后,需要重啟服務(wù),讓配置生效
禁止root用戶登錄,并不是禁用root用戶,而用戶可以以特定用戶登錄后,通過su切換至root用戶,以使用root 用戶特權(quán)
4.1.2 ssh鑒權(quán)次數(shù)限制
對(duì)于一些用戶,需要允許其登錄,不能簡單的通過DenyUsers禁止來進(jìn)行防護(hù),在這種情況下,可以通過ssh鑒權(quán)失敗次數(shù)來
達(dá)到防止字典攻擊的目的
補(bǔ)充說明
此種方式在應(yīng)對(duì)口令破解中,可以增加破解的時(shí)間開銷, 并不能完全避免口令被暴力破解。
但是,由于口令破解的時(shí)間加長,也就給了IDS/IPS(入侵檢測系統(tǒng))反應(yīng)的時(shí)間。便于系統(tǒng)運(yùn)維人員采取措施。
4.2 利用pam的安全機(jī)制
PAM,Pluggable Authentication Modules 是Sun提出的一種認(rèn)證機(jī)制。它通過提供一些
動(dòng)態(tài)鏈接庫和一套統(tǒng)一的API,將系統(tǒng)提供的服務(wù) 和該服務(wù)的認(rèn)證方式分開,使得系統(tǒng)管理員可以靈活地根據(jù)需要給不同的服務(wù)配置不同的認(rèn)證方式而無需更改服務(wù)程序,同時(shí)也便于向系 統(tǒng)中添加新的認(rèn)證手段。
簡單的說,就是通過配置pam, 來改變服務(wù)(ssh)的認(rèn)證方式, 應(yīng)對(duì)口令破解一般可以采用兩種策略
4.2.1 口令增強(qiáng)
口令增強(qiáng)的目的是通過增強(qiáng)口令的復(fù)雜度,從而增加口令被破解的難度。本項(xiàng)功能實(shí)現(xiàn)采用pam_cracklib 模塊
其中選項(xiàng)含義:
retry=3:用戶最多可以3次輸入口令后報(bào)錯(cuò)。默認(rèn)是1次。
minlen=12:最小口令長度為12。
difok=3:新口令至少有3個(gè)字符不能和舊口令相同。ucredit=-1:至少1位大寫字母, 需要注意的是-1(負(fù)1) lcredit=-1: 至少1位小寫字母
dcredit=-1:至少1位數(shù)字ocredit=-1:至少1位特殊字符
enforce_for_root: 這個(gè)是新增加的一個(gè)選項(xiàng),作用是root修改用戶口令時(shí),也受口令復(fù)雜度的限制, 老版本不一定支持。
4.2.2 鑒權(quán)失敗鎖定用戶帳號(hào)
當(dāng)用戶鑒權(quán)失敗到達(dá)指定次數(shù)時(shí),鎖定用戶帳號(hào)一定時(shí)間。 在用戶帳號(hào)的鎖定時(shí)間內(nèi),不接受用戶口令鑒權(quán)。此項(xiàng)功能通過pam_tally實(shí)現(xiàn)
其中選項(xiàng)含義為:
deny=5 : 用戶鑒權(quán)失敗超過5次鎖定
unlock_time=300: 鎖定帳號(hào)300秒
onerr=succeed: 當(dāng)鑒權(quán)失敗時(shí),返回PAM_SUCCESS
audit: 當(dāng)用戶名不存在時(shí),將用戶名寫入入系統(tǒng)log
5、結(jié)語
本文介紹了hydra 工具的基本用法,以及在linux下,應(yīng)對(duì)口令破解的幾種防護(hù)方法。未作原理性展開描述。
本文版權(quán)歸黑馬程序員C/C++學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:黑馬程序員C/C++培訓(xùn)學(xué)院
首發(fā):http://c.itheima.com/