Linux作為一種多任務、多用戶的操作系統,在同一時間段上可能為眾多用戶使用,且用戶的管理直接關系到整個系統的安全,用戶需要對其中的密碼管理和帳戶文件管理進行著重的強調和保護。
Linux用戶管理主要分為兩方面:密碼管理,以及用戶與用戶組的管理。下面將對這兩方面分別進行闡述。
本文隸屬于專題:Linux系統全方位管理
1. 密碼管理
密碼是用戶登錄Linux系統的鑰匙,如果沒有鑰匙總是要費一番力氣后,才能登錄到目標操作系統。無論入侵者采用何種遠程攻擊,如果無法獲得管理員或超級管理員的用戶密碼,就無法完全控制整個系統。若想訪問系統,最簡單也是必要的方法就是竊取用戶的密碼。因此,對系統管理員賬戶來說,最需要保護的就是密碼,如果密碼被盜,也就意味著災難的降臨。
入侵者大多是通過各種系統和設置漏洞,獲得管理員密碼來獲得管理員權限的,然后,再實現對系統的惡意攻擊。賬號的弱密碼設置會使入侵者易于破解而得以訪問計算機和網絡,而強密碼則難以破解,即使是密碼破解軟件也難以在短時間內辦到。密碼破解軟件一般使用3種方法進行破解:字典猜解、組合猜解和暴力猜解。毫無疑問,破解強密碼遠比破解弱密碼困難得多。因此,系統管理員賬戶必須使用強密碼。
據統計,大約80%的安全隱患是由于密碼設置不當引起的。因此,密碼的設置無疑是十分講究技巧的。在設置密碼時,請遵守密碼安全設置原則,該原則適用于任何使用密碼的場合,既包括Windows操作系統,也包括UNIX/Linux操作系統。
John the Ripper是一個工具軟件,用于在已知密文的情況下嘗試破解出明文的破解密碼軟件。目前的最新版本是JOHN1.7版,主要支持對DES、MD5兩種加密方式的密文進行破解工作。它可以工作于多中不同的機型以及多種不同的操作系統之下,目前已經測試過能夠正常運行的操作系統有:Linux x86、freeBSD、x86、Solaris、SPARC、OSF/1 Alpha、DOS、WinNT/WinXP系列等。
John the Ripper官網:http://www.openwall.com/john/
John the Ripper 1.7是目前比較好的破解密碼工具,在解密過程中會自動定時存盤,用戶可以強迫中斷解密過程(使用ctrl+c組合鍵),下次還可以從中斷的地方繼續進行下去(john-restore命令)。任何時候敲擊鍵盤,用戶都可以看到整個解密的進行情況,所有已經被破解的密碼會被保存在當前目錄下的JOHN.POT文件中,SHADOW中所有密文相同的用戶會被歸成一類,這樣JOHN就不會進行無謂的重復勞動了。在程序的設計中,關鍵的密碼生成的條件被放在JOHN.INI文件中,用戶可以自行修改設置,不僅支持單詞類型的變化,而且支持自己編寫C的小程序限制密碼的取值方式。
在使用該軟件前,我們可以從網上下載其最新版本john-1.7.3.4 for Linux版本,它包含DOC、SRC和RUN三個目錄,在SRC目錄下,在機器上執行如下命令即可:
#make
#make clean linux-x86-any
安裝好后,可以切換到RUN目錄下,進行測試,如下所示:
#cd ../run
#./john –test
John the ripper提供了如下多達10余種的命令,供用戶選擇使用:
pwfile:<file>[,..]:用于指定存放密文所在的文件名,(可以輸入多個,文件名一我“,”分隔,也可以使用*或者 這兩個通配符引用一批文件)。也可以不使用此參數,將文件名放在命令行的最后即可。
wordfile:<字典文件名>-stdin:指定的用于解密用的字典文件名。也可以使用STDIO來輸入,就是在鍵盤中輸入。
rules:在解密過程中使用單詞規則變化功能。如將嘗試cool單詞的其他可能,如COOLER、Cool等,詳細規則可以在JOHN.INI文件中的[List.Rules:Wordlist]部分查到。
incremental[:<模式名稱>]:使用遍歷模式,就是組合密碼的所有可能情況,同樣可以在JOHN.INI文件中的[Incremental:*****]部分查到。
single:使用單一模式進行解密,主要是根據用戶名產生變化來猜測解密,可以消滅比較低級的用戶。其組合規則可以在JOHN.INI文件中的[List.Rules:Single]部分查到,我們在下面詳細解釋。
external:<模式名稱>:使用自定義的擴展解密模式,用戶可以在john.ini中定義自己需要的密碼組合方式。JOHN也在INI文件中給出了幾個示例,在INI文件的[List.External:******]中所定義的自訂破解功能。
restore[:<文件名>]:繼續上次的破解工作,JOHN被中斷后,當前的解密進度情況被存放在RESTORE文件中,用戶可以拷貝這個文件到一個新的文件中。如果參數后不帶文件名,JOHN默認使用RESTORE文件。
makechars:<文件名>:制作一個字符表,用戶所指定的文件如果存在,則將會被覆蓋。JOHN嘗試使用內在規則在相應密鑰空間中生成一個最有可能擊中的密碼組合,它會參考在JOHN.POT文件中已經存在的密鑰。
show:顯示已經破解出的密碼,因為JOHN.POT文件中并不包含用戶名,同時用戶應該輸入相應的包含密碼的文件名,JOHN會輸出已經被解密的用戶連同密碼的詳細表格。
test:測試當前機器運行JOHN的解密速度,需要1分鐘,它會得出在當前的情況下解密的各種可能情況下相應的解密速度,如同時解密100個用戶時的平均速度,使用 遍歷法解密模式時解密的速度。salts指用戶個數,如果給出的對于100個用戶解密的平均速度為18000次/秒,那么表明同時對100個用戶解密,解 密的速度為每個180次/秒。因為絕大多數的時間被用于密鑰比較過程中了。所以應該對用戶進行挑選。
users:<login|uid>[,..]:只破解某類型的用戶或者屬于某個組的用戶。如果得到的PASSWD文件沒有包含密文,那么在得到SHADOW后應該進行組合,JOHN的附帶程序 UNSHADOW.EXE可以完成這一過程,當然了,用戶也可以手工做。一般的能夠進入CSH的用戶都是解密的首選對象。也可以要UID=0的ROOT級別 的用戶。
shells:[!]<shell>[,..]:和上面的參數一樣,這一選項可以選擇對所有可以使用shell的用戶進行解密,對其他用戶不予理睬。“!”就是表示不要某些類型的用戶。例如:“-shells:csh”。
salts:[!]<count>:只選擇解密用戶大于<count>的帳號,可以使用戶得到選擇的權利,盡快的得到所需要的用戶的PASS。
lamesalts:指定用戶中密碼所使用的cleartext。(我不大清楚此功能的作用)。
timeout:<幾分鐘>:指定解密持續的時間是幾分鐘,到時間JOHN自動停止運行。
list:在解密過程中在屏幕上列出所有正在嘗試使用的密碼,建議不要使用,它會將大部分時間浪費在顯示上,極大地拖慢解密速度。一般只是適用于重定向輸出到文件后,檢驗用戶所設定的某些模式是否正常。
beep-quiet:當解密出密碼時是否要讓PC喇叭叫一下,以提醒用戶。
noname-nohash:不使用內存來保存“用戶名”等內容。
des-md5:指定使用的解密方式是解DES還是MD5,對于解密DES密碼不用理會這一選項。
除了口令破解程序之外,在這個軟件包中,還包含了其他幾個實用工具,它們對于實現口令破解都有一定的幫助,這些工具都放置在run目錄下,下面分別予以簡要介紹。
(1)unshadow PASSWORD-FILE SHADOW-FILE
unshadow命令將passwd文件和shadow文件組合在一起,其結果用于John破解程序。通常應該使用重定向方法將這個程序的結果保存在文件中,之后將文件傳遞給John破解程序。
(2)unafs DATABASE-FILE CELL-NAME
unafs從二進制AFS數據庫中提取口令散列值,并生成John可用的輸出,通常應該把這個輸出重定向到文件中。
(3)unique OUTPUT-FILE
刪除字典表中的重復詞匯,但不改變字典表中各詞條項的順序。
安裝好后,我們可以靈活使用如下幾種方式來對自己的賬戶密碼進行測試:
通常情況下,許多用戶的密碼命名方式非常簡單,比如foo、hello、world等等,或者很多都是與用戶名相同的密碼口令,那么我們一般可以先采用簡單解密方式來對系統中的密碼進行簡單的初步試探,如果發現能夠成功破解,那么就需要對這些密碼口令的強度進行加強,如下所示:
#./john –single “/etc/shadow”
Loaded 2 password hashes with 3 different salts (FreeBSD MD5 [32/32])
liyang (liyang)
guesses: 1 time: 0:00:00:00 100% c/s: 6975 trying: 999991900
在上述命令中,我們發現系統存在一個liyang用戶,其用戶名和密碼均為liyang,因而通過最簡單的方式便能將其發現和利用,如果為黑客破解則將造成不可設想的后果,因而我們的用戶應該立即根據此種情況進行口令加強。
其次,用戶可以使用字典文件來對系統用戶的惡密碼強度進行試探和測試。人們常用hello、superman、cooler、asdfgh、123456等作為自己的密碼。而-rules參數則在此基礎上再加上些變化,如字典中有單詞cool,則JOHN還會嘗試使用cooler、CoOl、Cool等單詞變化進行解密。一般視SHADOW中的用戶多少及用戶的字典大小、用戶的機器速度,解密時間從幾小時到幾天不等。下面給出使用該方式進行解密的例子,假設我們已經生成了一個password.lst文件,其中包含了常用的以字典單詞為依據的密碼,那么我們對系統中的用戶密碼使用該方式進行試探破解,由于字典中保留了young這樣一個單詞,因而用戶google的密碼所以也被試探出來,網絡管理員同樣需要對該密碼進行加固,比如添加適當的后綴、字母和數字等:
# ./john --wordlist=password.lst "/etc/shadow"
Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/32])
young (google)
guesses: 1 time: 0:00:00:01 100% c/s: 3571 trying: zhongguo2. 管理用戶及組文件安全
Linux操作系統采用了UNIX傳統的方法,把全部的用戶信息保存為普通的文本文件。用戶可以通過對這些文件進行修改來管理用戶和組。
(1) 用戶賬號文件——passwd
/etc/passwd文件是UNIX安全的關鍵文件之一。該文件用于用戶登錄時校驗用戶的登錄名、加密的口令數據項、用戶ID(UID)、默認的用戶分組ID(GID)、用戶信息、用戶登錄子目錄以及登錄后使用的shell。這個文件的每一行保存一個用戶的資料,而用戶資料的每一個數據項采用冒號“:”分隔。如下所示:
LOGNAME:PASSWORD:UID:GID:USERINFO:HOME:SHELL
每行的頭兩項是登錄名和加密后的口令,后面的兩個數是UID和GID,接著的一項是系統管理員想寫入的有關該用戶的任何信息,最后兩項是兩個路徑名:一個是分配給用戶的HOME目錄,另一個是用戶登錄后將執行的shell(若為空格則默認為/bin/sh)。
下面是一個實際的系統用戶的例子:
cracker:x:6018: 6018: cracker:/home/ cracker:/bin/bash
該用戶的基本信息為:
登錄名:cracker
加密的口令表示:x
UID:6018
GID:6018
用戶信息:cracker
HOME目錄:/home/ cracker
登錄后執行的shell:/bin/bash
用戶的登錄名是用戶用來登錄的識別,由用戶自行選定,主要由方便用戶記憶或者具有一定含義的字符串組成。
所有用戶的口令的存放都是加密的,通常采用的是不可逆的加密算法,比如DES(Data Encryption Standard,數據加密標準)。當用戶在登錄提示符處輸入它們的口令時,輸入的口令將由系統進行加密。再把加密后的數據與機器中用戶的口令數據項進行比較。如果這兩個加密數據匹配,就可以讓這個用戶進入系統。在/etc/passwd文件中,UID信息也很重要。系統使用UID而不是登錄名區別用戶。一般來說,用戶的UID應當是獨一無二的,其他用戶不應當有相同的UID數值,只有UID等于0時可以例外。任何擁有0值UID的用戶都具有根用戶(系統管理員)訪問權限,因此具備對系統的完全控制。通常,UID為0這個特殊值的用戶的登錄名是“root”。根據慣例,從0到99的UID保留用做系統用戶的UID。如果在/etc/passwd文件中有兩個不同的入口項有相同的UID,則這兩個用戶對文件具有相同的存取權限。
每一個用戶都需要有地方保存專屬于自己的配置文件。這需要讓用戶工作在自己定制的操作環境中,以免改變其他用戶定制的操作環境,這個地方就叫做用戶登錄子目錄。在這個子目錄中,用戶不僅可以保存自己的配置文件,還可以保存自己日常工作用到的各種文件。出于一致性的考慮,大多
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【www.laynepeng.cn】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|