如何安全設定和檢測你的密碼安全性?

技術小甜發表於2017-11-15






 自去年CSDN網站、天涯、開心網、人人網等網站被曝大量使用者的密碼被洩漏以來,密碼的安全問題已引起使用者和業界的極大關注和重視。你的密碼安全嗎?上網際網路站還會不會洩漏密碼?……這些問題都引起了廣大使用者的恐慌。站在一個資訊保安工作者的角度來講,這個問題雖然嚴重,但還沒有到草木皆兵的地步。因此,本文將客觀地分析密碼安全問題的原因,提供給使用者安全設定密碼的基本原則,並介紹如何使用密碼分析工具來驗證密碼安全性的方法,以幫助使用者安全設定自己的密碼。

一、密碼安全問題的原因分析

       從密碼洩露或者被竊取的原因來分析,主要有如下幾方面的原因:
l        密碼明文儲存:在2000年左右,隨著網際網路的飛速發展,網際網路站也在如雨後春筍般地湧現出來,當時網站對安全問題沒有重視,因此出現了部分網站對使用者的註冊資訊(其中也包括密碼)均採用明文儲存的方式。在這樣的前提下,一旦網站的資料庫被黑客攻擊,或者是內部人員的資料庫拷貝,都會造成大量使用者資訊的洩露;
l        弱密碼設定:使用者的弱密碼設定應該是當前密碼洩露或者被竊取的主要原因。很多使用者都採用非常簡單的,與自己身份或者生日等強相關的資訊來設定非常簡單的密碼(如僅用數字、字母或者數字等),這就給不法使用者或者黑客留下了可趁之機。更為重要的是,即算現在網站都採用密文加密並儲存的方式來保證使用者密碼安全,一旦資料庫被黑客攻擊,黑客仍然可以基於若密碼,採用“彩虹表”來對使用者密碼進行猜測,而且這樣成功地機率非常高;
並且,從當前的情況來看,弱密碼設定在密碼出現安全問題的情況下所佔的比重超過80%,因此,網際網路使用者尤其需要重視該問題。那麼,該如何來避免使用弱密碼呢?下面給出一些基本原則。

二、密碼安全設定的基本原則

目前密碼破解程式大多采用字典攻擊以及暴力攻擊手段,而其中使用者密碼設定不當,則極易受到字典攻擊的威脅。很多使用者喜歡用自己的英文名、生日或者賬戶等資訊來設定密碼,這樣,黑客可能通過字典攻擊或者是社會工程的手段來破解密碼。所以建議使用者在設定密碼的過程中,應儘量使用非字典中出現的組合字元,並且採用數字與字元相結合、大小寫相結合的密碼設定方式,增加密碼被黑客破解的難度。而且,也可以使用定期修改密碼、使密碼定期作廢的方式,來保護自己的登入密碼。
具體列出幾條設定安全密碼的參考原則如下(5個需要遵循):
1)      口令長度至少為八個字元:口令越長越好。若使用MD5口令,它應該至少有15個字元。若使用DES口令,使用最長長度(8個字元)。
2)      混和大小寫字母:混和大小寫會增加口令的強健程度。
3)      混和字母和數字:在口令中新增數字,特別是在中間新增(不只在開頭和結尾處)能夠加強口令的強健性。
4)      包括字母和數字以外的字元:&$、和 > 之類的特殊字元可以極大地增強口令的強健性(若使用 DES 口令則不能使用此類字元)。
5)      挑選一個自己可以記住的口令:如果自己記不住自己的口令,那麼它再好也沒有用;使用簡寫或其它記憶方法來幫助自己記憶口令。
 
另外,還有一些原則需要牢記(8個需要避免):
1)      不要只使用單詞或數字,決不要在口令中只使用單詞或數字。
2)      不要使用現成詞彙:像名稱、詞典中的詞彙、甚至電視劇或小說中的用語,即使在兩端使用數字,都應該避免使用。
3)      不要使用外語中的詞彙:口令破譯程式經常使用多種語言的詞典來檢查其詞彙列表。依賴外語來達到保護口令的目的通常不起作用。
4)      不要使用黑客術語。
5)      不要使用個人資訊:千萬不要使用個人資訊。如果攻擊者知道自己的身份,推匯出自己所用口令的任務就會變得非常容易。以下是自己在建立口令時應該避免使用的資訊型別。
6)      不要倒轉現存詞彙:優秀的口令破譯者總是倒轉常用詞彙,因此倒轉薄弱口令並不會使它更安全。
7)      不要筆錄自己的口令:決不要把口令寫在紙上。把它牢記在心才更為安全。
8)      不要在所有機器上都使用同樣的口令:在每個機器上使用不同的口令是及其重要的。這樣,如果一個系統洩密了,所有其它系統都不會立即受到威脅。並且,不法使用者也很難以一個系統為突破口,來威脅到你其他系統的安全。

三、使用密碼分析工具驗證密碼的安全性

除了上述密碼安全設定的基本原則,使用者還可以使用下面介紹的一款非常實用的密碼安全分析工具——John the Ripper來驗證其密碼設定是否安全可靠。
John the Ripper是一個工具軟體,用於在已知密文的情況下嘗試破解出明文的破解密碼軟體。主要支援對DESMD5兩種加密方式的密文進行破解工作。它可以工作於多中不同的機型以及多種不同的作業系統之下,目前已經測試過能夠正常執行的作業系統有:Linux x86freeBSDx86SolarisSPARCOSF/1 AlphaDOSWinNT/WinXP/Win 7系列等。
John the Ripper 1.7是目前比較好的破解密碼工具,在解密過程中會自動定時存檔,使用者可以強迫中斷解密過程(使用Ctrl+C組合鍵),下次還可以從中斷的地方繼續進行下去(john-restore命令)。任何時候敲擊鍵盤,使用者都可以看到整個解密的進行情況,所有已經被破解的密碼會被儲存在當前目錄下的JOHN.POT檔案中,SHADOW中所有密文相同的使用者會被歸成一類,這樣JOHN就不會進行無謂的重複勞動了。在程式的設計中,關鍵的密碼生成的條件被放在JOHN.INI檔案中,使用者可以自行改設定,不僅支援單詞型別的變化,而且支援自己編寫C的小程式限制密碼的取值方式。
 
在使用該軟體前,我們可以從網上http://www.openwall.com/john/下載其最新版本john-1.7.9 Windows下的安裝非常簡單,以下主要介紹其在Linux下的安裝方法。
首先下載john-1.7.9for Linux版本,它包含DOCSRCRUN三個目錄,在SRC目錄下,在x86機器上執行如下命令即可:
#make
#make clean linux-x86-any
 
安裝好後,可以切換到RUN目錄下,進行測試,如下所示:
#cd ../run
#./john –jason
 
安裝好後,我們可以靈活使用如下幾種方式來對自己的賬戶密碼進行測試(在WindowsLinux系統上如下方法都適用,只不過命令操作方式略有不同而已):
 
通常情況下,許多使用者的密碼命名方式非常簡單,比如12345helloworld等,或者很多都是與使用者名稱相同的密碼口令,那麼我們一般可以先採用簡單解密方式來對系統中的密碼進行簡單的初步試探,如果發現能夠成功破解,那麼就需要對這些密碼口令的強度進行加強,如下所示:
//使用簡單解密方式對系統賬戶進行測試
#./john –single /etc/shadow
Loaded 3 password hashes with 3 different salts (FreeBSD MD5 [32/32])
jason             (jason)
guesses: 1  time: 0:00:00:00 100%  c/s: 6975  trying: 999991900
 
在上述命令中,我們發現系統存在一個jason使用者,其使用者名稱和密碼均為jason,因而通過最簡單的方式便能將其發現和利用,如果為黑客破解則將造成不可設想的後果,因而我們的使用者應該立即根據此種情況進行口令加強。
 
其次,使用者可以使用字典檔案來對系統使用者的惡密碼強度進行試探和測試。人們常用hellosupermancoolerasdfgh123456等作為自己的密碼。而-rules引數則在此基礎上再加上些變化,如字典中有單詞cool,則JOHN還會嘗試使用coolerCoOlCool等單詞變化進行解密。一般視SHADOW中的使用者多少及自己的字典大小、自己的機器速度,解密時間從幾小時到幾天不等。下面給出使用該方式進行解密的例子,假設我們已經生成了一個password.lst檔案,其中包含了常用的以字典單詞為依據的密碼,那麼我們對系統中的使用者密碼使用該方式進行試探破解,由於字典中保留了duango這樣一個單詞,因而使用者jason的密碼所以也被試探出來,網路管理員同樣需要對該密碼進行加固,比如新增適當的字尾、字母和數字等:
//使用字典解密方式對系統賬戶進行測試
# ./john –wordlist=password.lst /etc/shadow
Loaded 3 password hashes with 3 different salts (FreeBSD MD5 [32/32])
duango           (jason)
guesses: 1  time: 0:00:00:01 100%  c/s: 7065  trying: duango
 
當然,上述兩種只是非常直觀和簡單的方法,但是如果字典足夠完整和實用的話,那麼就能夠查出絕大多數的脆弱口令,在實踐中,我們還可以綜合使用如下的一些選項,來對系統密碼強度進行更為充分的檢查和驗證:
l        rules:在解密過程中使用單詞規則變化功能。如將嘗試cool單詞的其他可能,如COOLERCool等,詳細規則可以在JOHN.INI檔案中的[List.Rules:Wordlist]部分查到。
l        incremental[:<模式名稱>]:使用遍歷模式,就是組合密碼的所有可能情況,同樣可以在JOHN.INI檔案中的[Incremental:*****]部分查到,我們在下面詳細解釋。
l        external:<模式名稱>:使用自定義的擴充套件解密模式,使用者可以在john.ini中定義自己需要的密碼組合方式。JOHN也在INI檔案中給出了幾個示例,在INI檔案的[List.External:******]中所定義的自動破解功能。
l        restore[:<檔名>]:繼續上次的破解工作,JOHN被中斷後,當前的解密進度情況被存放在RESTORE檔案中,自己可以複製這個檔案到一個新的檔案中。如果引數後不帶檔名,JOHN預設使用RESTORE檔案。
 
通過上述軟體測試,就可以確定使用者的密碼設定強度,如果容易為該軟體破解,則需要儘快更換相應密碼,從而提高密碼的安全性。













本文轉自samsunglinuxl51CTO部落格,原文連結: http://blog.51cto.com/patterson/846731,如需轉載請自行聯絡原作者




相關文章