Ubuntu

如何使用 dpkg-statoverride 強化 su?

  • July 5, 2016

我正在閱讀 Ubuntu 14 強化指南,這是建議之一:

確保只有 sudo 組中的使用者才能執行 su 命令以充當(或成為)root 使用者,這通常似乎是一個明智的想法:

dpkg-statoverride --update --add root sudo 4750
/斌/蘇

我查看了dpkg-statoverride命令,但我仍然無法弄清楚上面的命令到底在做什麼?

這似乎暗示預設情況下 Ubuntu 14 允許任何人使用 sudo。為了測試,我創建了一個新使用者,以該使用者身份登錄,嘗試 sudo 並失敗了——這很好。

那麼上述建議的目的是什麼?

目的是防止普通使用者執行su命令(su和sudo類似,不同的是sudo執行一個命令,su作為新使用者啟動一個新會話,一直持續到該使用者執行exit)

su 的預設模式是 4755 或 rwsr-xr-x,“s”表示該命令是 set-UID(這意味著它始終以擁有它的使用者身份執行,而不是碰巧執行它的使用者。在這種情況下 su 歸 root 所有,所以它總是以 root 權限執行)

su 有自己的安全措施,以確保執行它的使用者有權成為另一個使用者(通常通過詢問其他使用者的密碼),但可以想像 su 中存在安全漏洞,允許攻擊者以某種方式說服它在沒有授權的情況下做其他事情。

通過將模式更改為 4750,它可以防止普通使用者(除了 root 和 sudo 組中的使用者)甚至首先讀取或執行它,因此攻擊者需要更改該文件的所有權,或者更改文件的模式,或者在他們甚至可以嘗試利用 su 中的這個理論漏洞之前更改他們自己的有效 UID/GID。

dpkg-statoverride 命令在這種情況下很有用,因為它指示包管理器使用該文件的這些所有權/模式值,即使它被更新的版本替換(即通過 apt 升級)。換句話說,它使它比 chown 和 chmod 更永久。

這是我為此實例推薦的通用策略:每當我在 Linux/UNIX 機器上調整 su/sudo 或任何身份驗證組件的配置時,我都會打開另一個到該伺服器的 ssh/putty 會話並以身份登錄root 使用者,然後在另一個視窗中打開該會話。這樣,如果我確實搞砸了某些事情並把自己鎖在外面,我已經有一個登錄會話,我可以修復我破壞的任何東西。

引用自:https://unix.stackexchange.com/questions/289743