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