天天看點

鎖定關鍵檔案,增強Linux安全性

原文發表于《網絡安全和資訊化》2017年第2期,重新修訂之後轉發到部落格。

檔案的擴充屬性與檔案的權限是兩個完全獨立的概念,但是通過設定擴充屬性,可以限制使用者的權限。

為了便于了解,這裡以Windows系統為例進行說明。在Windows系統中,選中某個檔案之後,右鍵單擊選擇“屬性”,在“正常”設定中可以選擇為檔案設定“隻讀”屬性,如圖所示。當設定了隻讀屬性之後,任何使用者無論他對該檔案是否具有寫入權限,都無法更改該檔案的内容。因而,擴充屬性可以被看作是一種優先級比系統權限更高的保護措施。

鎖定關鍵檔案,增強Linux安全性

Linux系統的擴充屬性,原理與Windows系統基本相同,而且Linux中可以設定的擴充屬性遠比Windows系統要更為豐富,不過最常用的隻有隻讀屬性(用i表示)和追加屬性(用a表示),如果一個檔案被設定了追加屬性,那麼就隻能向檔案中增加新的資料,而無法删除原有的資料。追加屬性通常用于保護日志檔案的安全。

root使用者在Linux系統中的權限不受任何制約,但屬性設定不同于權限設定,即使root使用者也無法突破擴充屬性的限制。當然root使用者可以設定或取消檔案的擴充屬性,但無論怎樣,擴充屬性都在系統權限之外,又為我們提供了一種安全保護措施。

在Linux系統中設定擴充屬性需要通過chattr指令,指令格式:

<code>chattr [-R] +/- i/a 檔案</code>

 -R:遞歸修改所有的檔案及子目錄,這是一個可選項。

 +:增加擴充屬性;

 -:減少擴充屬性;

 i:隻讀屬性,增加該屬性之後,任何人包括root使用者也無權寫入更改;

 a:追加屬性,增加該屬性之後,隻能向檔案中添加資料,而不能删除原有資料。

通過chattr指令可以鎖定系統中一些重要的檔案或目錄。例如,為/etc/passwd和/etc/shadow檔案增加隻讀屬性,這樣任何人都無法在系統中添加新的使用者,也無法删除系統中原有的使用者。

<code>[root@localhost ~]# chattr +i /etc/passwdd /etc/shadow</code>

此時再建立使用者就會出現錯誤提示。

lsattr指令可用于顯示檔案的擴充屬性。

如果管理者需要對系統中的使用者進行操作,則可以去掉/etc/passwd和/etc/shadow檔案的隻讀屬性。

為了增強系統安全性,通常可以為以下這些目錄和檔案增加隻讀屬性:

另外可以對一些重要的日志檔案設定追加屬性:

<code>chattr +a /var/log/messages /var/log/wtmp</code>

需要注意的是,鎖定系統關鍵檔案,雖然能夠提高系統安全性,但是也會帶來一些不便。例如,在軟體的安裝、更新時可能就需要先去掉有關目錄和檔案的隻讀和追加屬性。另外,如果對日志檔案設定了追加屬性,可能會使日志輪換(logrotate)無法進行。是以在使用chattr指令前,需要結合伺服器的應用環境來權衡是否需要設定隻讀和追加屬性。

另外,擴充屬性并不适用于所有的檔案或目錄。比如不能通過設定擴充屬性來保護/、/dev、/tmp、/var等目錄。首先根目錄不能設定隻讀屬性,如果根目錄具有隻讀屬性,那麼系統将無法工作。/dev目錄在啟動時,syslog需要删除并重建立立/dev/log套接字裝置,如果設定了隻讀屬性,那麼就可能會出問題。/tmp目錄會有很多應用程式和系統程式需要在這個目錄下建立臨時檔案,因而也不能設定隻讀屬性。/var是系統和程式的日志目錄,如果設定為隻讀屬性,那麼系統寫日志将無法進行,是以也不能通過chattr指令保護。

更多内容可參考視訊課程:Linux使用者和權限管理 http://edu.51cto.com/sd/36ff3

繼續閱讀