Linux

何時適合從應用程序中刪除 setuid/setgid 權限?

  • May 19, 2011

我一直在瀏覽NSA關於強化 Mac OS X 和 Linux 的建議,並註意到以下資訊:

Setuid 程序以文件所有者(通常是 root)的權限執行,無論是哪個使用者執行它們。這些程序中的錯誤可能允許特權升級攻擊。要查找 setuid 和 setgid 程序,請使用以下命令:

查找 / -perm -04000 -ls
查找 / -perm -02000 -ls

辨識 setuid 和 setgid 二進製文件後,禁用系統或任務操作不需要的那些 setuid 和 setgid 位(使用 chmod ug-s 程序名)。

我的問題是,如何確定哪些應用程序可以禁用其 setuid/setgid 位?例如,我假設 su、sudo 和 login 等某些應用程序必須具有 setuid。另一方面,像 write 這樣的東西可能不需要 setuid。有沒有一種好方法可以確定一個應用程序是否真的需要它?

這是個好問題。

通常,需要 setuid 和 setgid 位的應用程序是需要由非 root 使用者執行管理任務的應用程序。

以 passwd 程序為例。它用於更改一個人的密碼。密碼儲存在 /etc/shadow 文件中,只有 root 才能讀取,因此使用了 setuid 位。

通常,在流行的 Linux 發行版中,這些應用程序可以安全使用,因為它們都經過測試並且沒有錯誤。

我不知道您如何確定應用程序是否需要這些位,但您可以安裝像 snort 或 AIDE 這樣的應用程序來檢查文件的完整性,並在某些文件被更改時提醒您 - 特別是那些setuid 和 setgid 位。

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