
我認為這將是我在 StackExchange 方面發表的第一篇文章。但是,我知道這必須能夠配置,因為我之前已經看到它的實現,但我實際上不知道它是如何實現的。
我想要做的是在 RedHat 7/8 或衍生版本上...我怎麼才能使用戶必須進行以下權限升級:
<user> -> <user>.adm -> root
- ssh_users 群組中 IdM 中的使用者可以從網路中的任何位置透過 SSH 連線到伺服器。
- IdM 中的網域管理員不能用於透過 SSH 連線到伺服器,且不在該群組中。
- 作為網域管理員的使用者必須透過 SSH 連線到其標準使用者
sudo su - <user>.adm
。他們無法直接取得root權限。 - 同時具有 root 存取權限的網域管理員使用者必須先
sudo su - <user>.adm
才能sudo su - root
- 並非所有網域管理員都有權獲得 root 升級。
最終,網域管理員是具有維護、故障排除和修復系統相關權限的系統管理員。系統工程師擁有root權限,擁有系統的全部權限。這也涉及責任委派,其中只有審核帳戶<user>.isso
有權刪除根用戶以外的日誌。這最終是阻止這項要求的原因。
我真正想要的是能夠為我指明正確方向的文件(因為我正在畫空白),或者可以在功能上執行此類最小特權方法的 Ansible 角色/劇本。任何幫助將不勝感激!
答案1
同時具有 root 存取權限的網域管理員使用者必須先
sudo su - <user>.adm
才能sudo su - root
從概念上講我思考你應該想要和需要實現的是:
所有管理員都有兩個個人帳號:
- 「常規」用戶帳戶
- 管理員帳戶
要獲得 Linux 伺服器的完全管理員權限:
管理員首先需要使用普通使用者帳號登入
<user>
登入伺服器後,他們透過登入個人管理員帳戶來升級權限
<user>.adm
sudo su - <user>.adm
請求該帳號的密碼<user>
,然後使用 root 權限將使用者替換為<user>.adm
。- ^^^ 恕我直言,這是錯誤的方法
您應該希望您的管理員使用su - <user>.adm
這意味著您的管理員將需要輸入其帳戶密碼<user>.adm
(而不是帳戶的密碼<user>
)才能以<user>.adm
.- 然後,只要您的管理員的 adm 帳戶的密碼與常規帳戶的密碼不同,洩漏的密碼就不足以成為您所有伺服器上的 root。贏!
sudo
此外,他們的常規用戶帳戶不需要任何策略<user>
。贏!
使用個人管理員帳戶登入後,他們應該可以執行需要
root
權限的所有操作。這需要製定
sudo
政策。關於這方面的資訊已經夠多了。我的偏好是使用
#includedir /etc/sudoers.d
大多數現代/etc/sudoers
策略中包含的機制(#
沒有註釋!)並刪除檔案(檔案名稱中不包含 a.
)並以這種方式設定策略。一種選擇是為
hbruijn.adm
個人制定一份保單,即/etc/sudoers.d/hbruijn_adm
:# /etc/sudoers.d/hbruijn_adm # sudo policy that allow HBruijn's admin account to perform all # as any user, without prompting for a password hbruijn.adm ALL = NOPASSWD: ALL
或者,當您擁有允許在屬於特定群組的 Linux 系統上獲得完全 root 權限的所有 adm 帳戶時,請設定基於群組的策略。
這意味著您也可以阻止管理員直接登入他們的 adm 帳戶。
例如,對於 SSH 遠端訪問,可以透過DenyUsers
在伺服器中使用指令/etc/ssh/sshd_config
來阻止特定使用者或匹配模式的使用者登入來實現:
# /etc/ssh/sshd_config
#here go defaults for all connections/users
PasswordAuthentication no
PubkeyAuthentication no
...
DenyUsers *.adm
或使用類似的方法DenyGroups
來設定基於群組的策略。