4.3. 密碼保全

密碼是 Red Hat Enterprise Linux 使用來驗證使用者身份的主要方法,這就是為何密碼的安全性對保護使用 者、工作站與網路那麼的重要。

為了安全上的考量,安裝程式將設定系統使用 Message-Digest Algorithm (MD5) 以及 shadow 密碼。 強烈建議您不要更改這些設定。

假如 MD5 密碼在安裝中被取消選取,將會使用舊式的 Data Encryption Standard (DES) 格式。 這種格式將限制密碼的長度為 8 個字母與數字組 成的密碼(不允許標點符號與其他的特殊字元),並且提供一個中等 56 位元的加密方式。

假如在安裝過程中取消選取了 shadow 密碼,所有的密碼都以單向雜湊(one-way hash)儲存在 所有人都可讀取的 /etc/passwd 檔案,這使得系統容易遭受離線的密 碼破解攻擊。 假如一個入侵者以一個一般使用者取得機器的存取,他可以複製 /etc/passwd 檔案到他自己的機器,然後在其上執行各種密碼破解程式。 假如檔案中含有一個非安全的密碼, 要讓怪客破解該密碼只是時間上的問題而已。

為了避免這種的攻擊,shadow 密碼將密碼雜湊儲存在 /etc/shadow 檔案 中,此檔案只有 root 使用者才可以讀取。

這將會迫使一個潛在的攻擊者藉由遠端地登入機器中的網路服務(如 SSH 或 FTP)來試圖破解 密碼。 這種暴力式的攻擊比較緩慢,而且將會遺留下很明顯的跡象,因為幾百個失敗的嘗試登入 將被寫入到系統檔案中。 當然,假如一個怪客在半夜開始攻擊一部含有不夠標準之密碼的系統, 怪客也許會在天亮前獲得存取,然後編輯紀錄檔案以覆蓋他的紀錄。

在格式與儲存之上的問題便是內容的議題,對於保護自己的帳號以免遭受密碼破解之攻擊, 使用者所必須做到最重要的事情便是建立一個強固的密碼。

4.3.1. 建立不易破解的密碼

在建立一個保全的密碼時,最好遵照以下的指示:

請避免使用下列的情況:

  • 請勿僅僅使用文字或數字 — 絕勿在密碼中只使用數字或文字。

    一些不安全的例子包括如下:

    • 8675309

    • juan

    • hackme

  • 請勿使用可辨識的文字 — 例如一般的名稱、字典中的字、甚至是 電視節目或小說中的名詞都最好避免,即使您在其後加上數字。

    一些不安全的例子包括如下:

    • john1

    • DS-9

    • mentat123

  • 請勿使用外國語言的字 — 密碼破解程式通常都會以包含許多語言 字典中的字來做檢查,因此仰賴外國語言來建立安全的密碼也是沒有多大用處的。

    一些不安全的例子包括如下:

    • cheguevara

    • bienvenido1

    • 1dumbKopf

  • 請勿使用駭客的專有名詞 — 假如您覺得在您的密碼中使用駭客 的專有名詞 — 也稱為 l337 (LEET) speak — 是很聰明的,請仔細思量,因為許 多字都含有 LEET speak。

    一些不安全的例子包括如下:

    • H4X0R

    • 1337

  • 請勿使用個人的資料 — 絕不使用關於自己的任何資料當作密碼。 假如駭客知道您的身份,演繹出您密碼的工作將變得容易多了。 下列為當您建立密碼時您需要 避免的資料類型:

    一些不安全的例子包括如下:

    • 您的名字

    • 寵物的名字

    • 家庭成員的名字

    • 任何人的生日

    • 您的電話號碼或區域號碼

  • 請勿使用顛倒的可辨識字 — 好的密碼檢查程式總是會反轉一般 的字,所以顛倒一個不好的密碼也不會使它變得安全。

    一些不安全的例子包括如下:

    • R0X4H

    • nauj

    • 9-DS

  • 請勿寫下您的密碼 — 請絕不將任何密碼寫在紙上,最好能夠記住它。

  • 請勿使用相同的密碼在所有的機器上 — 為每一部機器建立不同 的密碼是很重要的,如此的話,當一部系統被破解時,所有的其他機器才不會有立即的危險。

請遵照以下規則:

  • 請至少建立八個字元長度的密碼 — 密碼的長度越長,將較不容易 被破解。 假如使用 MD5 密碼,必須是 15 個字元或以上的長度,至於 DES 密碼,請使用最長 的長度(八個字元)。

  • 混合使用大小寫字母 — Red Hat Enterprise Linux 是有分辨大小寫字母的,所以 請盡量混合大小寫以強化密碼的強固性。

  • 混合使用字母與數字 — 請增加數字到密碼中,特別是當增加到 中間時(不只是在開頭或結尾的地方),可以強化密碼的強固性。

  • 包括非字母與數字的字元 — 例如 &, $ 與 > 等特殊字元可以大大地增進密碼的強固性(無法在 DES 密碼上使用這些特殊字元)。

  • 請選擇您可以記得住的密碼 — 假如您無法記住您的密碼,全世界 最好的密碼也幫不了忙,請使用縮寫字或其他幫助記憶的裝置來幫您記住密碼。

藉由以上的這些原則,要建立一個符合良好密碼之準則並且規避不良密碼之特性的密碼看來是 件相當困難的事。 很幸運地,您可以採取一些步驟來建立一個容易記住且安全的密碼。

4.3.1.1. 安全密碼建立的方法學

人們使用許多種方法來建立安全的密碼,最受歡迎的其中一種方法是使用縮寫字,例如:

  • 一個記得住的片語,例如:

    "over the river and through the woods, to grandmother's house we go."

  • 再來將該句子轉為縮寫字(包括標點符號)。

    otrattw,tghwg.

  • 於縮寫字中以字母取代數字與符號來增加複雜性,例如以 t 取代 7,以符號 @ 取代 a

    o7r@77w,7ghwg.

  • 將至少一個字母改為大寫來進一步增加複雜性,例如 H

    o7r@77w,7gHwg.

  • 最後,請千萬不要在任何的系統上使用上述例子中的密碼

雖然建立安全的密碼是絕對必要的,適當地管理它們可相當的重要,特別是對於大型公司中的 系統管理員而言。 下列的章節詳述了於一間公司中建立以及管理使用者密碼的完好實作方式。

4.3.2. 在公司中建立使用者密碼

假如公司中的使用者數量相當大,系統管理員有兩個基本的選擇以強制使用好的密碼,他們 可以為使用者建立密碼,或者是讓使用者自己建立他們的密碼,還必須檢驗他們所建立的密碼 是合乎標準的。

為使用者建立密碼將可確保密碼是良好的,不過這個工作將會隨著公司的擴張而變得難以處理, 而且也會增加使用者將他們的密碼寫下來的風險。

由於這些因素,系統管理員較喜歡讓使用者建立他們自己的密碼,不過卻主動地檢驗密碼是 良好的,而且在某些情況下,還會利用密碼的有效期限來強制使用者定期地變更他們的密碼。

4.3.2.1. 強制使用強固的密碼

如要保護網路免於遭受入侵,系統管理員最好能夠檢驗公司內部使用的密碼是強固的,當使用 者被要求建立或更改密碼時,他們可以使用 passwd 這個命令列應用程 式,它也是由 Pluggable Authentication Manager (PAM) 所管理的,因此您可以透過 pam_cracklib.so PAM 模組 來檢查密碼是否容易破解或者是密碼長度是否夠長。 因為 PAM 是可以自訂的,您可以增加更 多的密碼完整性檢查程式,例如 pam_passwdqc (來自 http://www.openwall.com/passwdqc/), 或者是手動撰寫一個新的模組。 如要取得可以使用的 PAM 模組清單,請參考 http://www.kernel.org/pub/linux/libs/pam/modules.html。 如需更多關於 PAM 的資訊,請參考 Red Hat Enterprise Linux 參考手冊 一書中的 Pluggable Authentication Modules (PAM) 章節。

然而,您必須注意到的是在建立時所執行的密碼檢查並不如針對公司中的密碼執行一個密碼 破解程式來發現不好的密碼來得有效。

有許多種密碼破解程式可以在 Red Hat Enterprise Linux 下執行,雖然作業系統中並不收錄它們。 以下為這些 較受歡迎密碼破解程式的一個簡要清單:

注請注意
 

Red Hat Enterprise Linux 中 不含任何得這些工具,而且 Red Hat, Inc. 也不以任何形式來支援它們的使用。

  • John The Ripper — 一個快速且 靈活的密碼破解程式,它允許使用多重文字清單,而且它也可以進行暴力式的密碼破解。 您可以從 http://www.openwall.com/john/ 取得它。

  • Crack — 它或許是最知名的密碼 破解軟體,Crack 也是相當快速的程式,不過卻不像 John The Ripper 那樣容易使用。 您可以於 http://www.crypticide.org/users/alecm/ 取得它。

  • SlurpieSlurpie 類似 John The RipperCrack,不過它是被設計來同時於多部電腦上執行的,以建立 一個分散式的密碼破解攻擊。 您可以在許多其他分散攻擊的安全性評估工具所附的程式中找到 http://www.ussrback.com/distributed.htm

警告警告
 

在試圖於公司中進行密碼破解前,請記得先取得書面的同意書。

4.3.2.2. 密碼效期

密碼效期是系統管理員使用的另一種技術來防止公司內部使用不良的密碼,密碼的效期表示在 一定的期間過後(通常為 90 天),使用者將會被提示以建立一個新的密碼。 在背後的原理為 假如使用者被強迫定期地變更他的密碼,入侵者所破解的密碼將只能使用一段有限的時間。 然而,密碼效期的壞處是使用者將可能會將密碼寫下來。

在 Red Hat Enterprise Linux 中有兩個主要的程式可以使用來指定密碼效期:chage 指令或者是 圖形化的 使用者管理員 (redhat-config-users) 應用程式。

chage 指令的 -M 選項指定密碼有效期限的最多天數, 所以如要設定一個使用者的密碼於 90 天後失效,請輸入下列指令:

chage -M 90 <username>

在以上的指令中,請以使用者的名稱取代 <username>,如要停用密碼的 使用期限,請在 -M 選項後使用 99999 數值(這等於 273 年後)。

圖形化的 使用者管理員 應用程式也可以使用來建立密碼使用期限的規則,如要 使用這個應用程式,請選擇面板上的 『主選單按鈕』 => 『系統設定』 => 『使用者與群組』,或者是在 shell 提示符號下(如 XTerm 或 GNOME 終端機) 輸入 redhat-config-users 指令。 點選 『使用者』 的標簽頁, 然後從使用者清單中選取一個使用者,再從程式選單點選 內容(或從下拉式選單中 選取 『檔案』 => 『內容』)。

然後點選 『密碼資訊』 標簽頁,再輸入密碼失效前的天數,如 圖形 4-1 所示。

圖形 4-1. 『密碼資訊』 方框

如需關於使用者與群組設定的更多資訊(包括於第一次登入時強制變更密碼的指示),請參考 Red Hat Enterprise Linux 系統管理手冊 一書中的 『使用者與群組設定』 章節。 如需關於使用者與資源管理的概要,請參考 Red Hat Enterprise Linux 系統管理的簡介 一書中的 『管理使用者帳號與資源存取』 的章節。