提權直接阻止root

提權直接阻止root

我認為這將是我在 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

從概念上講我思考你應該想要和需要實現的是:

所有管理員都有兩個個人帳號:

  1. 「常規」用戶帳戶
  2. 管理員帳戶

要獲得 Linux 伺服器的完全管理員權限:

  1. 管理員首先需要使用普通使用者帳號登入<user>

  2. 登入伺服器後,他們透過登入個人管理員帳戶來升級權限<user>.adm

    • sudo su - <user>.adm 請求該帳號的密碼<user>,然後使用 root 權限將使用者替換為<user>.adm
    • ^^^ 恕我直言,這是錯誤的方法
      您應該希望您的管理員使用su - <user>.adm
      這意味著您的管理員將需要輸入其帳戶密碼<user>.adm(而不是帳戶的密碼<user>)才能以<user>.adm.
      • 然後,只要您的管理員的 adm 帳戶的密碼與常規帳戶的密碼不同,洩漏的密碼就不足以成為您所有伺服器上的 root。贏!
      • sudo此外,他們的常規用戶帳戶不需要任何策略<user>。贏!
  3. 使用個人管理員帳戶登入後,他們應該可以執行需要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來設定基於群組的策略。

相關內容