限制使用者存取權限只能從 /proc 讀取

限制使用者存取權限只能從 /proc 讀取

作為設定一些基本系統監控的方法,我有一個設定為 SSH 的腳本,並運行一些基本的 shell 命令,讀取/proc.我想為此任務建立一個特定的使用者帳戶,它應該具有以下存取權限:

  • SSH
  • 重擊
  • 只讀在/proc

其他帖子提到了 rssh 或 Chroot,但這些是最好的方法嗎?在我看來,應該有一種方法來創建一個沒有權限的用戶,並且只添加需要的內容,在檔案系統層級而不是 SSH 上強制執行我的限制。這可能嗎?

我現在想要監控的所有系統都在運行 Ubuntu,但我不想將自己鎖定在任何特定的發行版上。

答案1

首先,權限。當您建立新帳戶(adduser無論如何,在基於 Debian 的系統上 - 其他系統可能略有不同)時,您將獲得一個具有相同名稱的新使用者和新群組。您還可以獲得使用者的主目錄。這個新使用者將擁有對其主目錄的使用者和群組讀/寫權限。他們還能夠存取任何指定為世界可讀的內容,並修改任何世界可寫的內容。

據我所知目前還不能具體排除使用傳統 POSIX 權限系統的一個使用者或群組具有全域讀取/寫入權限。你但是,啟用更高級的 ACL(很像 Windows 的 NTFS,如果您熟悉的話),它允許您設定特定的拒絕權限。


另一種方法是設定一個自訂登入 shell,使用chsh命令或透過修改/etc/passwd.當他們登入時,這個「shell」將被執行,使用者的輸入被重定向為其標準輸入,其標準輸出/錯誤被重定向到終端輸出。您可以將此“shell”設定為任何系統上可執行的文件,包括(但不限於)你自己的C程式、bash/python/perl腳本等。

有幾種方法可以做到這一點。您可以將登入 shell 設定為一個腳本,該腳本僅輸出您想要的任何數據,並且不接受任何輸入。它只是輸出資料並退出,關閉 SSH 會話。這是最安全的方式,儘管不那麼靈活。

或者,您可以讓腳本接受一些輸入,並使用該輸入來確定要列印的內容。如何執行此操作取決於您 - 如果您使用bash腳本,則可以read與一個case語句或一系列if語句一起使用。不過,您必須小心,不要直接執行來自使用者的任何未經消毒的命令 - 並且採用不受信任的輸入可能會出現其他安全問題。例如,您可能接受輸入processes並傳回 的輸出ps -e

如果您願意並且擅長使用 C,您甚至可以修改bash自身以使其無法訪問任何其他目錄 - 但不接受輸入或僅過濾特定的白名單命令,而不是嘗試限制哪些目錄要安全得多您可以訪問。編寫快速的 shell 腳本也比修改複雜的 C 程式更容易。

答案2

要在 /proc 上強制只讀,您可以存取 /proc 的 sshfs 只讀克隆。

相關內容