Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

強化 Linux 安全:限制 /tmp 分區執行權限完整指南

編輯:Linux 教學

駭客入侵後常將惡意程式(Rootkit、反向 Shell 等)寫入 /tmp 或 /var/tmp 並嘗試執行。由於這兩目錄預設全域可寫,若能禁止其執行位元,即可大幅降低提權成功率。本文說明如何針對獨立分區與非獨立分區兩種情境,分別掛載 noexec、nosuid 選項,並處理 /var/tmp 符號連結。

核心原理:為何限制執行權限有效?

  • 編譯型二進位(ELF)需執行位元才能由核心載入;noexec 掛載選項會讓 execve() 直接回傳 EACCES。
  • 解釋型腳本(Perl、Python、PHP、Bash)透過直譯器執行,不受 noexec 限制,故仍需配合 SELinux/AppArmor 或檔案完整性監控(AIDE、Tripwire)纵深防禦。

情境一:系統已有獨立 /tmp 分區

1. 修改 /etc/fstab

# 原始
LABEL=/tmp /tmp ext4 defaults 1 2
# 修改為
LABEL=/tmp /tmp ext4 rw,nosuid,noexec,relatime 1 2

relatime 可減少 atime 寫入,提升效能。

2. 即時重掛載生效

mount -o remount,rw,nosuid,noexec /tmp

若系統繁忙無法重掛載,可排程於維護視窗重啟。

情境二:無獨立 /tmp 分區(建立回環裝置)

以 100 MB 為例,實際大小視記憶體與負載調整:

# 1. 建立稀疏檔案(不佔實際空間,或用 fallocate)
dd if=/dev/zero of=/var/tmpFS bs=1M count=100
# 或 fallocate -l 100M /var/tmpFS

# 2. 格式化為 ext4
mkfs.ext4 /var/tmpFS

# 3. 備份原 /tmp 資料
cp -a /tmp /tmp_backup

# 4. 掛載並還原資料
mount -o loop,noexec,nosuid,rw /var/tmpFS /tmp
cp -a /tmp_backup/* /tmp/

# 5. 恢復權限與 sticky bit
chmod 1777 /tmp

將上述掛載指令加入 /etc/rc.local 或 systemd tmp.mount 單元以實現開機自動掛載。

處理 /var/tmp:建議改為指向 /tmp

mv /var/tmp/* /tmp/
rm -rf /var/tmp
ln -s /tmp /var/tmp

如此 /var/tmp 同樣受 noexec 保護,且避免雙目錄管理。

驗證與偵測繞過嘗試

  • mount | grep /tmp 確認 noexec,nosuid 生效。
  • 嘗試 /tmp/test_bin 應回傳 Permission denied。
  • 監控 auditd 記錄 execve 失敗事件:auditctl -a exit,always -F arch=b64 -S execve -F dir=/tmp -F key=tmp_exec。

常見誤區與注意事項

  1. 套件管理器安裝過程 可能需在 /tmp 執行腳本(如 dpkg 的 postinst),升級前可暫時 mount -o remount,exec /tmp。
  2. 部分編譯器(gcc、go build)預設輸出至 /tmp,需設定 TMPDIR 指向可執行目錄。
  3. systemd-tmpfiles 會定期清理,確保規則不衝突。

實施上述措施後,惡意程式在 /tmp、/var/tmp 落地即無法直接執行,迫使攻擊者尋找更困難的落點,顯著提升系統防禦深度。

Copyright © Windows教程網 All Rights Reserved