大部分目前 Linux 發行版本預設值並未包含Shadow Suite 安裝。 這些版本包括 Slackware 2.3, Slackware 3.0 和其他受歡迎的發行版本。 主要原因之一是在原始Shadow Suite版權聲明中並未很清楚的描述該軟體是 否需使用者付費。 Linux 使用 GNU 版權通常允續使用者可免費且任意使用相關套件。
Shadow Suite現在維護人員 Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> 已經可以從在 BSD 樣式允需再使用版權之原始作者那接收原始碼。 目前版權發行已 解決,因此可以預期在未來版本之預設值將包括 password shadowing。 即使如此, 你仍需要自行安裝。
如果你的版本是從 CD-ROM 安裝。你可能發現即使目前版本並未有Shadow Suite 安裝,但你仍然可以在該片 CD-ROM 找到你需要安裝的Shadow Suite。
然而,所有Shadow Suite 3.3.1, 3.3.1-2 版本和 shadow-mk 伴隨簽入(login)程式和 其他suid root程式均有安全上問題,因此不應該使用太久。
所有必要檔案均可以透過匿名 FTP 站或網站找到。
在沒有安裝Shadow Suite的 Linux 系統,包括密碼的帳號使用者資訊通常儲存在
/etc/passwd
檔。
儲存的密碼為 加密(encrypted)格式。 然而,如果你問一個密碼專家,他/她將
告訴你真正的密碼檔只是編碼(encoded)而不是加密格式,因為當使用
crypt(3) 時,文字檔倍設為 null 且密碼是鍵值(key)。 因此,接下來我將在這篇文件中使用
編碼。
使用在密碼欄位編碼的演算法於技術上是使用one way hash function。這是一個 在單一方向計算簡單但逆向計算非常困難的演算法。關於這正確的演算法可以在 2.4 節或 於 crypt(3) 操作手冊找到。
當使用者挑選或指定一個密碼,系統將隨機產生一個值,叫做salt,將密碼進行 編碼。 這表示任何特定的密碼可以 4096 中不同方法儲存。 salt 值將儲存被編 碼的密碼 。
當使用者簽入或提供一個密碼, salt 首先接收欲儲存編碼密碼。然後這提供密碼 會和 salt 值一起編碼,且比較已經編碼密碼。如果有 match ,該使用者通過權限檢查。
隨機編碼和復原原始密碼是有計算複雜度的(但不是不可能的)。然而,在某些系統 很多使用者的密碼都設為一般文字(或是一般文字的簡單變化)
系統駭客知道這件事,且將簡單的加密文字和一般使用4096 salt 值密碼之目錄。然
後他們將比較在資料庫之 /etc/passwd
檔之編碼密碼,只要他們找到一個比對,他們
可以找到一個帳號之密碼。這和dictionary attack有關,且用於未經許可存取系統取
得和展開常用的方法之一。
如果你想過一個 8 碼的密碼編碼成 4096 * 13 碼的字串,那麼一個用在描述 400,000 一般文字 、名字、密碼和簡單變化的字典將需要 4GB 硬碟存取空間。 駭客需要做的只是分類字串跟檢查 比對結果。 自從 4GB 硬碟可以以美金 1000.00 以下買到後,對大多數系統駭客的意義可想而 知 。
如果駭客首先發現你的 /etc/passwd
檔,他們只需要將真正包含在
/etc/passwd
檔 salt
值的字典編碼,這方法可由擁有486級電腦或幾個有
幾百 MB 硬碟空間的十來歲的小孩適用。
即使沒有很大的磁碟空間,像 crack(1) 的工具程式通常可以在足夠使用者系統中至少破解一對 密碼(假設系統使用者倍允許挑選他們想要的密碼)。
/etc/passwd
檔也包括一些相關資訊,像使用者 ID 和群組 ID所使用的系統程式;因此
/etc/passwd
檔 必須 保持全世界可讀性. 如果你改變 /etc/passwd
檔以致於沒有人可以讀取,你將發現的第一件事是 ls -l
命令將取代名稱而顯示使用者 ID
。
Shadow Suite 透過將密碼存至另一個檔(通常是 /etc/shadow
檔)來解決該
問題。 /etc/shadow
檔對任何人設定可讀檔,只有 root 權限可以讀寫
/etc/shadow
檔。某些程式(像 xlock)不需要改變密碼,只需要確認密碼即可。這些程式
可以以 suid root 執行或者你可以設定一個群組 shadow 用來唯讀
/etc/shadow
檔,然後這些程式可以執行 sgid shadow。
透過移動密碼至 /etc/shadow
檔,我們可以有力的備有駭客從存取編碼密碼到執行
dictionary attack 的證據。
除此之外, Shadow Suite 新增許多特色:
/etc/login.defs
)安裝 Shadow Suite 貢獻為有更安全系統,但是還有其他方法可以改善 Linux 系統的安全 ,且最終將有一系列的 Linux 安全 HOWTO's 將討論其他安全基準和相關文件版本•
針對目前其他 Linux 安全文件資訊,請參照網址: Linux Security home page.
有一些狀況跟設定運用在安裝 Shadow Suite 將 不是 好主意: There are a few circumstances and configurations in which installing the Shadow Suite would NOT be a good idea:
一個 non-shadowed /etc/passwd
檔格式如下所示:
username:passwd:UID:GID:full_name:directory:shell
其中
username
使用者(簽入)名稱
passwd
編碼密碼
UID
使用者編號
GID
預設存組編號
full_name
使用者全名 - 事實上這個欄位稱作 GECOS (General Electric Comprehensive Operating System) 欄位且可以儲存全名外的資訊。Shadow commands and manual pages refer to this field as the comment field.
directory
使用者根目錄 (絕對路徑)
shell
使用者簽入的環境 (絕對路徑)
username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
中,Np
是 salt 且 ge08pfz4wuk
是編碼密碼。
已編碼的 salt/password 就像 kbeMVnZM0oL7I
且這兩個字串是一樣的密碼。對相同
密碼可能有 4096 種可能的編碼。(本範例的密碼是 "passwaor",這是比較 不好 的密碼)。
只要 shadow suite 已經安裝, /etc/passwd
檔將被替代成:
username:x:503:100:Full Name:/home/username:/bin/sh
本範例之第二欄位 x
現在只是一個 place holder。 /etc/passwd
檔的格式
並未真的改變,只是不再包含 編碼密碼。這表示任何程式可以讀取 /etc/passwd
檔,但並不真的需要確認密碼是不是正確地運作。
這些密碼現在被重新放在 shadow 檔(通常是在 /etc/shadow
檔)。
/etc/shadow
檔包括下列資訊:
username:passwd:last:may:must:warn:expire:disable:reserved
其中
username
使用者名稱
passwd
編碼密碼
last
密碼上次更動日期,以從1970年1月1日算起的天數代表
may
密碼改變前天數
must
密碼最常使用天數
warn
代表期限前幾天就事先警告使用者
expire
超過密碼過期天數後,就關閉該帳號
disable
帳號關閉,以從1970年1月1日算起的天數代表
reserved
預備欄位
username:Npge08pfz4wuk:9479:0:10000::::
從 crypt(3) 使用者文件得到:
"crypt 是密碼加密方程式。 It is based on the Data Encryption Standard algorithm with variations intended (among other things) to discourage use of hardware implementations of a key search.
[The] key 是使用者輸入的密碼。 [編碼字串全是 NULLs]
[The] salt 是從 [a-zA-Z0-9./] 集合中選出的兩個位元字串。 該字串是用於擾亂在 4096 種不同方法之一個演算法。
透過得到 key 的每個位元的最低 7 bit[s],可以建立 56-bit key 。 這56-bit key 是用在重複加密一個常數字串(通常是包含所有靈的字串)。 傳回值指到加密密碼是一連串 可印出之13個 ASCII 字元(最前面的一兩個字元表示 salt 本身)。 透過每次的呼叫可將 傳回直指到靜態資料。
警告訊息: Key space 包括 2**56 即等於 7.2e16 可能的值。與用重大的平行電腦
將 Key space 極盡的搜尋是可能。像 crack(1)
軟體用來搜尋部分的由人
產生之密碼的 key space 是可獲得的。因此,密碼的選擇至少應該避免使用一般字及名字。
一個用來檢查解開密碼選擇的 passwd(1)
程式使用是值得推薦的。
DES 演算法本身有一些使 crypt(3)
在任何其他密碼權限區隔介面很差選擇的使用
方面劇變。如果你計畫使用 crypt(3)
介面來加密計畫,以下描述千萬別這麼作:
得要一本加密好書和廣泛獲得 DES 程式庫 ." 一起使用。
大多 Shadow Suites 包括 16 位元的密碼長度兩倍之原始碼。 在 des
專
家建議避免使用當開始對較常密碼先簡單的編碼左半然後右半。由於 crypt
運作方法
,這將造成 較差的 安全編碼密碼。除此之外,使用者有可能記住 16 位元密碼是
一件比較差的事情。
目前有允許權限理論用以取代某些更安全和支援較長密碼(例如 MD5 演算法)且保有和
crypt
方法相容的發展工作正在進行。
如果你正在尋找一本加密的好書,建議如下:
"Applied Cryptography: Protocols, Algorithms, and Source Code in C" by Bruce Schneier <schneier@chinet.com> ISBN: 0-471-59756-2