Systemd

有沒有辦法用 systemd 控製文件系統訪問?

  • May 1, 2017

因此,我正在深入研究 systemd 的複雜性,以及它使用 cpu、io 和記憶體等 cgroup 來計量資源的能力。

還有一種方法可以控制程序可以使用 systemd 訪問的目錄嗎?例如,/usr/bin通常標記為o+rX,我希望將網路伺服器程序鎖定在該目錄之外。已經有很多軟體漏洞,您可以從磁碟讀取任意文件,這將增強分層的安全性方法。

我確信這可以通過一些非常花哨的文件系統權限來完成,但想知道是否有更好的方法。感謝伺服器故障!

實際上,您有許多選項,您可以在單元文件中為您的服務定義這些選項。它們都以相同的原理工作,通過在為服務設置的命名空間 systemd 中使用綁定掛載。文件系統的某些部分要麼以只讀方式掛載,要麼通過掛載空目錄呈現為完全不可見/不可訪問。

PrivateTmp可以說是最常見的。

啟用PrivateTmp為已執行的程序設置一個新的文件系統命名空間,並在其中掛載私有目錄/tmp/var/tmp目錄,這些目錄不被命名空間外的程序共享。

ProtectSystem

如果,則為本單元呼叫的程序以只讀方式**true掛載/usr和目錄。 如果設置為,則該目錄也以只讀方式掛載。如果設置為“strict”,則整個文件系統層次結構以只讀方式掛載,API 文件系統子樹 /dev、/proc 和 /sys 除外/boot
full**/etc

ProtectHome

接受布爾參數或“只讀”。如果,true目錄和被本單元呼叫的程序設為不可訪問且為空。如果設置為“ ”,則三個目錄改為只讀/home``/root``/run/user``read-only

ProtectKernelTunables

如果為真,核心變數可通過/proc/sys, /sys, /proc/sysrq-trigger, /proc/latency_stats, /proc/acpi,和訪問/proc/timer_stats,並將設為只讀。/proc/fs``/proc/irq

ReadOnlyPaths

列出的路徑ReadOnlyPaths=只能以只讀方式訪問,即使通常的文件訪問控制允許這樣做,也會拒絕寫入。

InaccessiblePaths
InaccessiblePaths=命名空間內的程序(以及文件系統層次結構中它們下面的所有內容)將無法訪問其中 列出的路徑。

不過可能還有更多選擇。

更分層的訪問策略可能需要 SELinux,並且您可能需要對它有非常透徹的了解,並且您可能需要熟練使用多級安全策略。

引用自:https://serverfault.com/questions/847156