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