首頁(yè)技術(shù)文章正文

C/C++:口令暴力破解及其防護(hù)

更新時(shí)間:2018-03-22 來(lái)源:黑馬程序員 瀏覽量:

1、概述

對(duì)于服務(wù)器操作系統(tǒng)Linux來(lái)講,一般通過(guò)ssh來(lái)進(jìn)行遠(yuǎn)程管理,

像Telnet、Rlogin等傳統(tǒng)遠(yuǎn)程管理工具,由于其采用明文傳輸,數(shù)據(jù)信息容易被竊聽(tīng), 在多數(shù)用戶業(yè)務(wù)系統(tǒng)中,考慮到安全合規(guī)要求,一般會(huì)被禁用。

本文通過(guò)對(duì)常用的ssh口令暴力破解工具h(yuǎn)ydra進(jìn)行介紹,并在口令破解的基礎(chǔ)上, 介紹安全防護(hù)技術(shù)。

2、環(huán)境

     1521704526231_1.jpg

驗(yàn)證環(huán)境分為攻擊機(jī)和靶機(jī), 攻擊機(jī)采用Kali Linux系統(tǒng)靶機(jī)

攻擊機(jī)

1521704535903_2.jpg

3、 Hydra工具應(yīng)用

Hydra 是Kali Linux中一款很受歡迎的口令破解工具,當(dāng)前最新版本V8.6, 基本用法可以通過(guò)man hydra 來(lái)查看, 在這個(gè)工具使用過(guò)程中,比較重要的一點(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ì)過(guò)程

-o: 輸出login/passwd 對(duì)到指定的文件

IP: 靶機(jī)IP地址

ssh: 被攻擊的協(xié)議(服務(wù)名稱, telnet、ftp、pop3、ssh…)

攻擊驗(yàn)證命令:

1521704543982_3.jpg

口令破解成功的話, 會(huì)有如上的提示

4、口令暴力破解安全防護(hù)技術(shù)

4.1 利用ssh自身的安全防護(hù)機(jī)制

4.1.1 禁止默認(rèn)用戶(root)登錄

一般來(lái)說(shuō), 在口令破解時(shí)需要提供用戶名字典,這個(gè)字典的建立通常會(huì)包括一些系統(tǒng)中默認(rèn)的用戶, 最典型的就是linux系統(tǒng)的root用戶,最易被攻擊

1521704552326_4.jpg

如何需要進(jìn)制其他用戶(非root用戶) 還可以選擇使用 DenyUsers (黑名單) 或者 AllowUsers(白名單)

1521704561170_5.jpg

上述可以用來(lái)禁止一些系統(tǒng)默認(rèn)用戶root 、 xxxuser1 、 xxxuser2登錄。

補(bǔ)充說(shuō)明

- 修改sshd_config 后,需要重啟服務(wù),讓配置生效

1521704570935_6.jpg

禁止root用戶登錄,并不是禁用root用戶,而用戶可以以特定用戶登錄后,通過(guò)su切換至root用戶,以使用root 用戶特權(quán)

4.1.2 ssh鑒權(quán)次數(shù)限制

對(duì)于一些用戶,需要允許其登錄,不能簡(jiǎn)單的通過(guò)DenyUsers禁止來(lái)進(jìn)行防護(hù),在這種情況下,可以通過(guò)ssh鑒權(quán)失敗次數(shù)來(lái)

達(dá)到防止字典攻擊的目的

1521704578889_7.jpg

補(bǔ)充說(shuō)明

此種方式在應(yīng)對(duì)口令破解中,可以增加破解的時(shí)間開(kāi)銷, 并不能完全避免口令被暴力破解。

但是,由于口令破解的時(shí)間加長(zhǎng),也就給了IDS/IPS(入侵檢測(cè)系統(tǒng))反應(yīng)的時(shí)間。便于系統(tǒng)運(yùn)維人員采取措施。

4.2 利用pam的安全機(jī)制

PAM,Pluggable Authentication Modules 是Sun提出的一種認(rèn)證機(jī)制。它通過(guò)提供一些

動(dòng)態(tài)鏈接庫(kù)和一套統(tǒng)一的API,將系統(tǒng)提供的服務(wù) 和該服務(wù)的認(rèn)證方式分開(kāi),使得系統(tǒng)管理員可以靈活地根據(jù)需要給不同的服務(wù)配置不同的認(rèn)證方式而無(wú)需更改服務(wù)程序,同時(shí)也便于向系 統(tǒng)中添加新的認(rèn)證手段。

簡(jiǎn)單的說(shuō),就是通過(guò)配置pam, 來(lái)改變服務(wù)(ssh)的認(rèn)證方式, 應(yīng)對(duì)口令破解一般可以采用兩種策略

4.2.1 口令增強(qiáng)

口令增強(qiáng)的目的是通過(guò)增強(qiáng)口令的復(fù)雜度,從而增加口令被破解的難度。本項(xiàng)功能實(shí)現(xiàn)采用pam_cracklib 模塊

1521704587748_8.jpg

其中選項(xiàng)含義:

retry=3:用戶最多可以3次輸入口令后報(bào)錯(cuò)。默認(rèn)是1次。

minlen=12:最小口令長(zhǎng)度為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)

1521704595795_9.jpg

當(dāng)用戶鑒權(quán)失敗到達(dá)指定次數(shù)時(shí),鎖定用戶帳號(hào)一定時(shí)間。 在用戶帳號(hào)的鎖定時(shí)間內(nèi),不接受用戶口令鑒權(quán)。此項(xiàng)功能通過(guò)pam_tally實(shí)現(xiàn)

其中選項(xiàng)含義為:

deny=5 : 用戶鑒權(quán)失敗超過(guò)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é)語(yǔ)

本文介紹了hydra 工具的基本用法,以及在linux下,應(yīng)對(duì)口令破解的幾種防護(hù)方法。未作原理性展開(kāi)描述。


本文版權(quán)歸黑馬程序員C/C++學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!


作者:黑馬程序員C/C++培訓(xùn)學(xué)院


首發(fā):http://c.itheima.com/


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!