引言:在Linux系統(tǒng)中,如果攻擊者通過遠(yuǎn)程或者本地攻擊手段獲得了系統(tǒng)的root權(quán)限,那么對運(yùn)維人員將是一場災(zāi)難。在這種情況下,文件系統(tǒng)將是保護(hù)系統(tǒng)安全的最后一道防線,通過對文件系統(tǒng)進(jìn)行合理的屬性設(shè)置,可以最大限度地減小攻擊者對系統(tǒng)的破壞程度。
在Linux系統(tǒng)中,如果一個(gè)用戶以root的權(quán)限登錄或某個(gè)進(jìn)程以root的權(quán)限運(yùn)行,那么其使用權(quán)限就不再有任何的限制了。因此,如果攻擊者獲得了系統(tǒng)的root權(quán)限,那么對運(yùn)維人員將是一場災(zāi)難。這種情況下,文件系統(tǒng)將是保護(hù)系統(tǒng)安全的最后一道防線,通過對文件系統(tǒng)合理的屬性設(shè)置可最大限度地減小攻擊者對系統(tǒng)的破壞。對某個(gè)文件或目錄設(shè)置了較為嚴(yán)格的擴(kuò)展屬性后,即使root用戶也無法修改或刪除。
在Linux系統(tǒng)中對文件或目錄設(shè)置擴(kuò)展屬性主要是通過chattr命令,主要用法:
chattr [-R] +/- i/a文件
-R:遞歸修改所有的文件及子目錄,是一個(gè)可選項(xiàng);
+:表示增加擴(kuò)展屬性;
-:表示減少擴(kuò)展屬性;
i:表示只讀屬性,增加該屬性之后,任何人包括root用戶也無權(quán)寫入更改;
a:表示追加屬性,增加該屬性后,只能向文件中添加數(shù)據(jù),而不能刪除,多用于服務(wù)器日志文件安全。
通過chattr命令鎖定系統(tǒng)重要的文件或目錄是保護(hù)文件系統(tǒng)安全最直接、最有效的手段。
例 如,將/etc/passwd和/etc/shadow文件增加只讀屬性。
此時(shí)再創(chuàng)建用戶就會(huì)出現(xiàn)錯(cuò)誤提示。
useradd:無法打開密碼文件
lsattr命令可用于顯示chattr命令設(shè)置的擴(kuò)展屬性。
如管理員要對系統(tǒng)中用戶進(jìn)行操作,可去掉/etc/passwd和/etc/shadow文件的只讀屬性。
為增強(qiáng)系統(tǒng)安全性,通常可以為以下目錄和文件增加只讀屬性:另外可對一些重要的日志文件設(shè)置追加屬性,常見的有:
鎖定系統(tǒng)關(guān)鍵文件雖然能夠提高系統(tǒng)安全性,但也會(huì)帶來一些不便。例如,在軟件的安裝、升級時(shí)可能需要去掉有關(guān)目錄和文件的只讀和追加屬性,同時(shí)對日志文件設(shè)置了追加屬性后,可能會(huì)使日志輪換(logrotate)無法進(jìn)行。因此在使用chattr命令前,需要結(jié)合服務(wù)器的應(yīng)用環(huán)境來權(quán)衡是否需要設(shè)置只讀和追加屬性。
另外,雖然通過chattr命令修改文件屬性能提高文件系統(tǒng)的安全性,但它并不適合所有的目錄。比如不同通過chattr命令來保護(hù)/dev、/tmp、/var等目錄。
首先根目錄不能設(shè)置只讀屬性,如根目錄具有只讀屬性,系統(tǒng)將無法工作。
/dev目錄在啟動(dòng)時(shí),syslog需刪除并重新建立/dev/log套接字設(shè)備,如設(shè)置了只讀屬性可能會(huì)出問題。
/tmp目錄會(huì)有很多應(yīng)用程序和系統(tǒng)程序需要在這個(gè)目錄下建立臨時(shí)文件,因而也不能設(shè)置只讀屬性。
/var是系統(tǒng)和程序的日志目錄,如果設(shè)置為只讀屬性,那么系統(tǒng)寫日志將無法進(jìn)行,所以也不能通過chattr命令保護(hù)。