


保障Linux系統的臨時文件安全
在一個典型的Linux系統中,至少有兩個目錄或分區保持著臨時文件。其中之一是/tmp目錄,再者是/var/tmp。在更新的Linux內核的系統中,還可能有/dev/shm,它是用tmpfs文件系統裝載的。
存儲臨時文件的目錄存在著一個問題,即這些目錄可以成為損害系統安全的僵尸和rootkit的溫床。這是因為在多數情況下,任何人(或任何過程)都可以向這些目錄寫入東西,還有不安全的許可問題。我們知道都sticky bit,該位可以理解為防刪除位。如果希望用戶能夠添加文件但同時不能刪除文件, 則可以對文件使用sticky bit位。設置該位后, 就算用戶對目錄具有寫權限, 也不能刪除該文件。多數Linux發行版本在臨時目錄上設置sticky位,這意味著用戶A不能清除屬于用戶B的一個文件,反之亦然。但是,根據文件自身的許可,用戶A有可能查看并修改那個文件的內容。
一個典型的Linux安裝將/tmp設置為mode 1777,這意味著它設置了sticky位,并且可被所有的用戶讀取、寫入、執行。多數情況下,這如同其設置的安全一樣,主要是因為/tmp目錄僅僅是一個目錄,而不是一個自己的文件系統。/tmp目錄依賴于/分區,這樣一來它也就必須遵循其裝載選項。
一個更加安全的解決方案可能是將/tmp設置在其自己的分區上,這樣一來它就可以獨立于/分區裝載,并且可以擁有更多的限制選項。/tmp分區的/etc/fstab項目的一個例子看起來是這樣的:
/dev/sda7 /tmp ext3 nosuid,noexec,nodev,rw 0 0
這就設置了nosuid、noexec、nodev選項,意味著不允許任何suid程序,從這個分區不能執行任何內容,并且不存在設備文件。
你可以清除/var/tmp目錄,并創建一個symlink指向/tmp目錄,如此一來,/var/tmp中的臨時文件就可以利用這些限制性的裝載選項。
/dev/shm虛擬文件系統也需要保障其安全,這可以通過改變/etc/fstab而實現。典型情況下,/dev/shm通過defaults選項加載,對保證其安全性是很不夠的。就像/tmp的fstab一樣,它應當具備限制性更強的加載選項:
none /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0
最后,如果你沒有能力在現有的驅動器上創建一個最新的/tmp分區,你可以通過創建一個loopback文件系統來利用Linux內核的loopback特性,這個文件系統可被裝載為/tmp,并可以使用相同的限制加載選項。要創建一個1GB的loopback文件系統,需要執行:
# dd if=/dev/zero of=/.tmpfs bs=1024 count=1000000
# mke2fs -j /.tmpfs
# cp -av /tmp /tmp.old
# mount -o loop,noexec,nosuid,rw /.tmpfs /tmp
# chmod 1777 /tmp
# mv -f /tmp.old/* /tmp/
# rmdir /tmp.old
一旦完成,需要編輯/etc/fstab,以便于在啟動時自動加載loopback文件系統:
/.tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0
保障恰當的許可和使用限制性加裁選項等方法能夠防止對系統的許多損害。如果一個僵尸在一個不能執行的文件系統上安了家,那么它從本質上講也是不值得擔心的。
關鍵字:臨時文件、目錄
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解