第十一章 用chattr提高ext2文件係統的安全(3 / 3)

chattr-R+i/bin/boot/etc/lib/sbin

chattr-R+i/usr/bin/usr/include/usr/lib/usr/sbin

chattr+a/var/log/messages/var/log/secure(...)

如果很少對帳戶進行添加、變更或者刪除,把/home本身設置為immutable屬性也不會造成什麼問題。在很多情況下,整個/usr目錄樹也應該具有不可改變屬性。實際上,除了對/usr目錄使用chattr-R+ii/usr/命令外,還可以在/etc/fstab文件中使用ro選項,使/usr目錄所在的分區以隻讀的方式加載。另外,把係統日誌文件設置為隻能添加屬性(append-only),將使入侵者無法擦除自己的蹤跡。

當然,如果使用這種安全措施,需要係統管理員修改管理方式。

4.1.安裝、升級軟件

由於軟件管理程序需要加入和刪除某些文件和目錄,因此在進行軟件安裝和升級之前需要刪除某些目錄和文件的immutable和append-only屬性。對於Linux係統,我們一般使用rpm管理軟件包,你可以使用以下命令查看要安裝或者升級的軟件包都有哪些文件:

rpm-qiplfoopackage.rpm

然後曲調有關目錄和文件的immutable和append-only屬性。大多數軟件包需要rpm命令對以下目錄的一個或者多個進行寫操作:

/bin

/sbin

/usr/bin

/usr/sbin

/usr/man

/lib

/etc

注意,如果你需要升級/usr/sbin/someprogram,你應該去掉someprogram文件以及目錄/usr/sbin的immutable屬性。

4.2.管理用戶和用戶組

如果要進行用戶和用戶組,以下的目錄和文件需要能夠被讀寫:

/etc

/etc/.pwd.lock

/etc/passwd

/etc/passwd-

/etc/shadow

/etc/shadow-

/etc/group

/etc/group-

/etc/gshadow

/etc/gshadow-

passwd(1)、chsh(1)、chfn(1)、vipw(8)、vigr(8)和useradd(8)等命令需要在/etc目錄下建立臨時的拷貝,修改這個拷貝,然後刪除原始文件,最後把新拷貝。

5.不能使用chattr命令的目錄

雖然屬性能夠提高係統的安全性,但是它並不適合所有的目錄。如果在係統中濫用chattr,可能造成很多問題,甚至使係統無法工作。

/

很顯然,根分區不能有immutable屬性。如果根分區具有immutable屬性,係統將根本無法工作。

/dev

在啟動時,syslog需要刪除並重新建立/dev/log套接字設備。如果對/dev/目錄設置了immutable和append-only屬性,就可能出現問題,除非在啟動syslogd時使用-p選項指定其它的套接字,例如:/var/run/syslog.sock。即使這樣也還存在一些問題,syslog客戶程序需要/dev/log套接字設備,因此需要建立一個自相真正套接字的符號連接。總而言之,為了減少麻煩,這個目錄還是不要設置immutable和append-only屬性。

/tmp

有很多應用程序和係統程序需要在這個目錄下建立臨時文件,因此這個目錄也不能設置immutable和append-only屬性。

/var

這個目錄不能設置immutable屬性。對append-only屬性的使用要根據實際情況。例如,為var/log目錄下的日誌文件設置了append-only屬性,會使日誌輪換(logrotate)無法進行,但不會造成太大問題,你需要權衡是否使用日誌輪換的利弊,以絕對是否對日誌文件設置append-only屬性。再比如,sendmail程序會定時地截斷或者覆蓋/var/log/sendmail.st文件,因此也不能設置append-only屬性。

總結

雖然ext2文件係統的屬性已經出現了很長時間,但是對它的應用和係統的介紹卻不是很多。很裏地使用文件係統的屬性,對提高係統的安全性有很大好處。