権限昇格はルート権限を直接的に阻止する

権限昇格はルート権限を直接的に阻止する

これは StackExchange 側での私の最初の投稿になると思います。ただし、以前に実装されているのを見たことがあるため、これを構成できるはずだということはわかっていますが、実際にどのように実装されているかはわかりません。

私がやろうとしているのは、RedHat 7/8 またはその派生版です... ユーザーが次の権限昇格を実行するようにするにはどうすればよいでしょうか。

<user> -> <user>.adm -> root

  • ssh_users グループの IdM ユーザーは、ネットワーク内のどこからでもサーバーに SSH 接続できます。
  • IdM のドメイン管理者はサーバーへの SSH には使用できず、グループにも属していません。
  • ドメイン管理者のユーザーは、標準ユーザーに SSH で接続する必要がありますsudo su - <user>.adm。直接ルートにアクセスすることはできません。
  • ドメイン管理者であり、ルートアクセス権も持っているユーザーは、sudo su - <user>.admまずsudo su - root
  • すべてのドメイン管理者がルート エスカレーションの権限を持っているわけではありません。

結局のところ、ドメイン管理者は、システムの保守、トラブルシューティング、修復に関連する権限を持つシステム管理者です。システム エンジニアは、システムに対する完全な権限を与えるルート権限を取得します。これは、監査アカウントのみが<user>.issoルート ユーザー以外のログを削除する権限を持つという責任の委任にも関係します。これが最終的にこの要件の原因です。

私が本当に探しているのは、正しい方向を指し示してくれるドキュメント(何も思い浮かばないので)か、この種の最小権限アプローチを機能的に実行する Ansible ロール/プレイブックです。どんな助けでも大歓迎です!

答え1

ドメイン管理者であり、ルートアクセス権も持っているユーザーは、sudo su - <user>.admまずsudo su - root

概念的には私は考えるあなたが望み、達成する必要があるものは次のとおりです。

すべての管理者には 2 つの個人アカウントがあります。

  1. 「通常の」ユーザーアカウント
  2. 管理者アカウント

Linux サーバーで完全な管理者権限を取得するには:

  1. 管理者はまず通常のユーザーアカウントでログインする必要があります<user>

  2. サーバーにログインすると、個人の管理者アカウントにログインして権限を昇格します。<user>.adm

    • sudo su - <user>.adm アカウントのパスワードを要求し<user>、ルート権限を使用してユーザーを に置き換えます<user>.adm
    • ^^^ それは間違ったアプローチだと思います
      管理者に を使用するようにする必要がありますsu - <user>.adm
      。つまり、管理者はとしてログインするために<user>.adm、アカウントのパスワードではなく、アカウントのパスワードを入力する必要があります。 <user><user>.adm
      • そうすると、管理者が adm アカウントに通常のアカウントと同じパスワードを設定しない限り、パスワードが侵害されてもすべてのサーバーで root になることはできません。これで成功です!
      • sudoさらに、通常のユーザー アカウントに必要なポリシーはありません<user>。 勝利です!
  3. 個人管理者アカウントでログインすると、root権限を必要とするすべてのアクションを実行できるようになります。

    そのためにはポリシーを設定する必要がありますsudo。これについては十分な情報があります。

    私の好みは、最新のポリシー#includedir /etc/sudoers.dのほとんどに含まれているメカニズム(コメントはありません!) を使用し、ファイル (ファイル名に が含まれないもの) をドロップして、その方法でポリシーを設定することです。/etc/sudoers#.

    1 つの選択肢は、hbruijn.adm個人用に 1 つのポリシーを設定することです/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 システムで完全なルート権限を取得することが許可されているすべての 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グループ ベースのポリシーを設定します。

関連情報