Unix系統(tǒng)文件系統(tǒng)安全 續(xù)
Unix系統(tǒng)安全考慮
將設(shè)備處理成文件,使得unix程式獨立于設(shè)備,即程式不必一定要了解正使用的設(shè)備的所有特性,存取設(shè)備也不必記錄長度,塊大小,傳輸速度,網(wǎng)絡(luò)協(xié)議等這樣一些信息,所有煩人的細節(jié)由設(shè)備驅(qū)動程式去關(guān)心考慮,要存取設(shè)備,程式只須打開設(shè)備文件,然后作為普通的unix文件來使用.
從安全的觀點來看這樣處理非常好,因為所有設(shè)備上進行的i/o操作只經(jīng)過了少量的渠道(即設(shè)備文件).用戶不能直接地存取設(shè)備.所以如果正確地設(shè)置了磁盤分區(qū)的存取許可,用戶就只能通過unix文件系統(tǒng)存取磁盤.文件系統(tǒng)有內(nèi)部安全機制(文件許可).不幸的是,如果磁盤分區(qū)設(shè)備得不正確,所有用戶都能夠?qū)懸粋€程式讀磁盤分區(qū)中的每個文件,作法非常簡單:讀一i節(jié)點,然后以磁盤地址表中塊號出現(xiàn)的順序,依次讀這些塊號指出的存有文件內(nèi)容的塊.
故除了root以外,決不要使盤分區(qū)對所有人可寫.因為所有者,文件存取許可方式這樣一些信息存放于i節(jié)點中,所有人只要具有已安裝分區(qū)的寫許可,就能設(shè)置所有文件的suid許可,而不管文件的所有者是誰,也不必用chmod()命令,還可避過系統(tǒng)建立的安全檢查.
以上所述對內(nèi)存文件mem,kmem和對換文件swap也是相同的.這些文件含有用戶信息,一個"耐心"的程式能將用戶信息提取出來.要避免磁盤分區(qū)(及其他設(shè)備)可讀可寫,應(yīng)當在建立設(shè)備文件前先用umask命令設(shè)置文件建立屏蔽值.
一般情況下,unix系統(tǒng)上的終端口對所有人都是可寫的,從而使用戶能用write命令發(fā)送信息.雖然write命令易引起安全方面的問題,但大多數(shù)用戶覺得用write得到其他用戶的信息非常方便,所以系統(tǒng)將終端設(shè)備的存取許可設(shè)置成對所有用戶可寫.
/dev目錄應(yīng)當是755存取許可方式,且屬root所有.
不允許除root外的所有用戶讀或?qū)懕P分區(qū)的原則有一例外,即一些程式(通常是數(shù)據(jù)庫系統(tǒng))需求對磁盤分區(qū)直接存取,解決這個問題的經(jīng)驗的盤分區(qū)應(yīng)當由這種程式專用(不安裝文件系統(tǒng)),而且應(yīng)當告知使用這種程式的用戶,文件安全保護將由程式自己而不是unix文件系統(tǒng)完成.
Unix系統(tǒng)之find命令
find命令用于搜索目錄樹,并對目錄樹上的所有文件執(zhí)行某種操作,參數(shù)是目錄名表(指出從哪些起點開始搜索),還可給出一個或多個選項,規(guī)定對每個文件執(zhí)行什么操作.
find . -print 將列出當前工作目錄下的目錄樹的每一個文件.find / -user bob -print 將列出在系統(tǒng)中可找到的屬于bob用戶的所有文件.
find /usr/bob -perm 666 -print 將列出/usr/bob目錄樹下所有存取許可為666的文件.若將666改為-666則將列出所有具有包含了666在內(nèi)的存取許可方式的文件(如777).
find /usr/bob -type b -print 將列出/usr/bob目錄樹下所有塊特別文件(c為字符特別文件).
find / -user root -perm -4000 -exec ls -l {} ; 是個較復(fù)雜一點的命令,-exec command ;允許對所找到的每個文件運行指定的命令command.若command中含有{},則{}將由find所找到的文件名替換.command必須以;結(jié)束.
以上舉例介紹find的用法,各選項可組合使用以達到更強的功能.
Unix系統(tǒng)之secure程式
系統(tǒng)管理員應(yīng)當做一個程式以定期檢查系統(tǒng)中的各個系統(tǒng)文件,包括檢查設(shè)備文件和suid,sgid程式,尤其要注意檢查suid,sgid程式,檢查/etc/passwd和/etc/group文件,尋找久未登錄的戶頭和校驗各重要文件是否被修改.(源程式清單將在今后發(fā)表)
Unix系統(tǒng)之ncheck命令
用于檢查文件系統(tǒng),只用一個磁盤分區(qū)名作為參數(shù),將列出i節(jié)點號及相應(yīng)的文件名.i節(jié)點相同的文件為建鏈文件.注意:所列出的清單文件名和mount命令的***個域相同的文件名前部分將不會列出來.因為是做文件系統(tǒng)內(nèi)部的檢查,ncheck并不知道文件系統(tǒng)安裝點以上部分的目錄.也可用此命令來搜索文件系統(tǒng)中所有的suid和sgid程式和設(shè)備文件,使用-s選項來完成此項功能
Unix系統(tǒng)之安裝和拆卸文件系統(tǒng)
unix文件系統(tǒng)是可安裝的,這意味著每個文件系統(tǒng)能連接到整個目錄樹的任意節(jié)點上(根目錄總是被安裝上的).安裝文件系統(tǒng)的目錄稱為安裝點./etc/mount命令用于安裝文件系統(tǒng),用這條命令可將文件系統(tǒng)安裝在現(xiàn)有目錄結(jié)構(gòu)的任意處.
安裝文件系統(tǒng)時,安裝點的文件和目錄都是不可存取的,因此未安裝文件系統(tǒng)時,不要將文件存入安裝點目錄.文件系統(tǒng)安裝后,安裝點的存取許可方式和所有者將改動為所安裝的文件根目錄的許可方式和所有者.
安裝文件系統(tǒng)時要小心:安裝點的屬性會改動!還要注意新建的文件,除非新文件系統(tǒng)是由標準文件建立的,系統(tǒng)標準文件會設(shè)置適當?shù)拇嫒≡S可方式,否則新文件系統(tǒng)的存取許可將是777!
可用-r選項將文件系統(tǒng)安裝成只讀文件系統(tǒng).需要寫保護的帶驅(qū)動器和磁盤應(yīng)當以這種方式來安裝.
不帶所有參數(shù)的/etc/mount可獲得系統(tǒng)中所安裝的文件系統(tǒng)的有關(guān)信息.包括:文件系統(tǒng)被安裝的安裝點目錄,對應(yīng)/dev中的哪個設(shè)備,只讀或可讀寫,安裝時間和日期等.
從安全的觀點來講,可安裝系統(tǒng)的危險來自用戶可能請求系統(tǒng)管理員為其安裝用戶自己的文件系統(tǒng).如果安裝了用戶的文件系統(tǒng),則應(yīng)在允許用戶存取文件系統(tǒng)前,先掃描用戶的文件系統(tǒng),搜索suid/sgid程式和設(shè)備文件.在除了root外所有人不能執(zhí)行的目錄中安裝文件系統(tǒng),用find命令或secure列出可疑文件,刪除不屬用戶所有的文件的suid/sgid許可.
用戶的文件系統(tǒng)用完后,可用umount命令卸下文件系統(tǒng).并將安裝點目錄的所有者改回root,存取許可改為755.
Unix系統(tǒng)之系統(tǒng)目錄和文件
unix系統(tǒng)中有許多文件不允許用戶寫,如:/bin,/usr/bin,/usr/lbin,/etc/passwd,/usr/lib/crontab,/unix,/etc/rc,/etc/inittab這樣一些文件和目錄(大多數(shù)的系統(tǒng)目錄),可寫的目錄允許移動文件,會引起安全問題.系統(tǒng)管理員應(yīng)經(jīng)常檢查系統(tǒng)文件和目錄的許可權(quán)限和所有者.可做一個程式根據(jù)系統(tǒng)提供的規(guī)則文件(在/etc/permlist文件中)所描述的文件所有者和許可權(quán)規(guī)則檢查各文件.(源程式清單將在今后發(fā)表)。注意:如果系統(tǒng)的安全管理不好,或系統(tǒng)是新安裝的,其安全程式不夠高,能用make方式在安全強的系統(tǒng)上運行上述程式,將許可規(guī)則文件拷貝到新系 統(tǒng)來,再以設(shè)置方式在新系統(tǒng)上運行上述程式,就可提高本系統(tǒng)的安全程式.但要記住,兩個系統(tǒng)必須運行相同的unix系統(tǒng)版本
【編輯推薦】
- Unix系統(tǒng)安全管理
- Unix系統(tǒng)文件系統(tǒng)安全
- Unix系統(tǒng)的安全策略
- Unix系統(tǒng)的安全策略之常用命令解析
- 淺析Unix主機系統(tǒng)安全漏洞存在的必然性