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文件係統的屬性已經出現了很長時間,但是對它的應用和係統的介紹卻不是很多。很裏地使用文件係統的屬性,對提高係統的安全性有很大好處。