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

C/C++:口令暴力破解及其防護

更新時間:2018-03-22 來源:黑馬程序員 瀏覽量:

1、概述

對于服務器操作系統(tǒng)Linux來講,一般通過ssh來進行遠程管理,

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

本文通過對常用的ssh口令暴力破解工具hydra進行介紹,并在口令破解的基礎上, 介紹安全防護技術(shù)。

2、環(huán)境

     1521704526231_1.jpg

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

攻擊機

1521704535903_2.jpg

3、 Hydra工具應用

Hydra 是Kali Linux中一款很受歡迎的口令破解工具,當前最新版本V8.6, 基本用法可以通過man hydra 來查看, 在這個工具使用過程中,比較重要的一點,就是利用一個高效的口令字典,hydra本身也可以用于生成口令字典。但一般會用cupp進行生成, 關(guān)于cupp的詳細用法,后續(xù)在整理一篇文檔進行介紹。本文重點介紹Hydra暴力破解及其安全防護策略。

基本用法

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 : 指定并行任務數(shù)量,默認16

-e: 額外檢查,n 代表空口令, s代碼用戶名, r代碼用戶名稱逆序(反向)

-vV: 顯示詳細過程

-o: 輸出login/passwd 對到指定的文件

IP: 靶機IP地址

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

攻擊驗證命令:

1521704543982_3.jpg

口令破解成功的話, 會有如上的提示

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

4.1 利用ssh自身的安全防護機制

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

一般來說, 在口令破解時需要提供用戶名字典,這個字典的建立通常會包括一些系統(tǒng)中默認的用戶, 最典型的就是linux系統(tǒng)的root用戶,最易被攻擊

1521704552326_4.jpg

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

1521704561170_5.jpg

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

補充說明

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

1521704570935_6.jpg

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

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

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

達到防止字典攻擊的目的

1521704578889_7.jpg

補充說明

此種方式在應對口令破解中,可以增加破解的時間開銷, 并不能完全避免口令被暴力破解。

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

4.2 利用pam的安全機制

PAM,Pluggable Authentication Modules 是Sun提出的一種認證機制。它通過提供一些

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

簡單的說,就是通過配置pam, 來改變服務(ssh)的認證方式, 應對口令破解一般可以采用兩種策略

4.2.1 口令增強

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

1521704587748_8.jpg

其中選項含義:

retry=3:用戶最多可以3次輸入口令后報錯。默認是1次。

minlen=12:最小口令長度為12。

difok=3:新口令至少有3個字符不能和舊口令相同。ucredit=-1:至少1位大寫字母, 需要注意的是-1(負1) lcredit=-1: 至少1位小寫字母

dcredit=-1:至少1位數(shù)字ocredit=-1:至少1位特殊字符

enforce_for_root: 這個是新增加的一個選項,作用是root修改用戶口令時,也受口令復雜度的限制, 老版本不一定支持。

4.2.2 鑒權(quán)失敗鎖定用戶帳號

1521704595795_9.jpg

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

其中選項含義為:

deny=5 : 用戶鑒權(quán)失敗超過5次鎖定

unlock_time=300: 鎖定帳號300秒

onerr=succeed: 當鑒權(quán)失敗時,返回PAM_SUCCESS

audit: 當用戶名不存在時,將用戶名寫入入系統(tǒng)log

5、結(jié)語

本文介紹了hydra 工具的基本用法,以及在linux下,應對口令破解的幾種防護方法。未作原理性展開描述。


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


作者:黑馬程序員C/C++培訓學院


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


分享到:
在線咨詢 我要報名
和我們在線交談!