PAM SC での安全なユーザの置換

安全なユーザの置換が提供される PAM SC の sesu ユーティリティについて説明します。
capamsc141
UNIX の su コマンドでは、ユーザがターゲット ユーザのパスワードを使用して別のユーザに切り替えることができます。ユーザ ID の切り替えを行うユーザは、ターゲット ユーザのパスワードを記憶するか、書き留めるか、または簡単なパスワードを使用するようにターゲット ユーザに依頼する必要があります。このような行為は、いくつかのパスワード ポリシーに反します。また、su コマンドはコマンドを呼び出したユーザを記録しません。アカウントの所有者を偽装するユーザを実際のユーザと区別することはできません。
CA Privileged Access Manager
に含まれている sesu ユーティリティは、この UNIX の su コマンドの機能強化版です。sesu では、認証の手段として、ターゲット ユーザのパスワードではなく、ユーザ自身のパスワードを要求するように設定できます。認証プロセスは、SURROGATE クラスに定義されているアクセス ルールに基づいて実行されます。また、コマンドを実行するユーザのパスワードに基づいて実行されるようにすることもできます。
su の実行とは異なり、sesu の実行では、ターゲット ユーザのパスワードを知っているかどうかは関係ありません。その代わり、sesu の実行は、データベースに指定されている権限に依存します。各ユーザのログイン ID が記憶されるため、アクションを実行したユーザの記録が残ります。
ユーザが _surrogate グループのユーザの代理ユーザになる場合、
CA Privileged Access Manager
はユーザのアクションの完全なトレースを新規ユーザとして監査証跡に送信します。
このプログラムは、誤って使用されることを防ぐために、ファイル システム内でマークされており、誰もこれを実行できません。このため、セキュリティ管理者は、このプログラムを実行する前に、それが実行可能ファイルとしてマークし、ユーザ ID を root に設定する必要があります。
sesu ユーティリティを使用する前に、すべてのユーザを
CA Privileged Access Manager
データベースに定義し、前提条件を設定してください。これは、製品に定義されていないユーザに対してシステム全体が開放されることを防止するためです。
このページには以下のセクションが含まれます。

ユーザ ID の置換ルールの設定

ユーザが他のユーザを置換できないようにする、または他のユーザに置換できるようにするには、ユーザ ID の置換ルールを設定します。これらのルールは、SURROGATE クラスのリソースを使用して制御されます。ユーザ置換ルールを定義するには、SURROGATE レコードを作成します。
以下の手順に従います。
  1. CA Privileged Access Manager
    エンドポイント管理で、[ユーザ]タブをクリックし、次に[権限および委任]サブタブをクリックします。
    [権限および委任]メニュー オプションが左側に表示されます。
  2. [ユーザ ID の置換]をクリックします。
  3. [ユーザ ID の置換の作成]をクリックします。
  4. タブ ページのフィールドに入力し、[保存]をクリックします。
    注:
    SURROGATE クラス プロパティの詳細については、「selang リファレンス」のセクションを参照してください。

ユーザ置換 sesu のセットアップ

デフォルトでは、sesu ユーティリティはファイル システム内でマークされているため、誰もこれを実行できません。sesu をユーザが使用できるようにする前に、データベース ルールを設定し、それが安全に使用されるようにします。次に、su ユーティリティをロックし、ユーザが強制的に
CA Privileged Access Manager
の sesu ユーティリティを使用するようにします。
注:
このセットアップを完了し、
CA Privileged Access Manager
が実行されていると、su ユーティリティは実行されません。ユーザは安全な sesu ユーティリティを使用するように強制されます。
CA Privileged Access Manager
が実行されていない場合は、su ユーティリティが使用されます。
基本的なユーザ置換ルールの設定
sesu ユーティリティの使用を開始する前に、一般的なユーザ置換ルールをデータベースに定義します。これらのルールによって、不明なユーザが特権ユーザのアカウントへユーザ置換するのを防ぎます。一方で、これらのルールは、特定のユーザまたはプロセスが必要なユーザ置換操作を行えるようにします。
以下の手順に従います。
  1. 以下の属性を指定して、root ユーザ(USER.root)用の SURROGATE リソースを作成します。
    • 所有者 -
      nobody
    • デフォルト アクセス -
      none
    • すべての管理者にフル コントロールを付与する
    この SURROGATE リソースにより、特に許可のない限り、すべてのユーザが root にユーザ置換できなくなります。すべての管理者に、root にユーザ置換する権限が明示的に付与されます。
    注:
    個々の管理者に別々に権限を付与するか、管理者のグループを使用してすべての管理者に権限を付与することができます。
  2. 以下の属性を指定して、root ユーザのグループ(GROUP.other)用の SURROGATE リソースを作成します。
    • 所有者 -
      nobody
    • デフォルト アクセス -
      none
    • すべての管理者にフル コントロールを付与する
    この SURROGATE リソースにより、明示的に許可されていない限り、すべてのユーザが root ユーザのグループに置換できなくなります。すべての管理者に、root グループに置換する権限が明示的に付与されます。
    注:
    ほとんどの UNIX システムでは、root ユーザのグループは
    other
    または
    sys
    です。
  3. USER._default 用のユーザ置換ルールを以下のように変更します。
    • 所有者 -
      nobody
    • デフォルト アクセス -
      none
    • root に、未定義のユーザになる権限を付与する
    • 管理者のグループに、未定義のユーザになる権限を付与する
    ルールの変更によって、明示的に許可されていない限り、すべてのユーザがグループを置換できなくなります。また、明示的に拒否されていない限り、root ユーザおよび root ユーザのグループにユーザを置換する権限が付与されます。
    注:
    root に権限を与えると、dtlogin などのプログラムがセッションの所有者をデフォルトの X ウィンドウ所有者である root (uid=0)からほかのユーザに変更することが許可されます。権限を付与しない場合、明示的に許可されていないユーザ置換操作を
    CA Privileged Access Manager
    がブロックしているため、ログインに失敗します。
  4. GROUP._default 用のグループ置換ルールを以下のように変更します。
    • 所有者 -
      nobody
    • デフォルト アクセス -
      none
    • root に、未定義のグループを置換する権限を付与する
    • 管理者のグループに、未定義のグループを置換する権限を付与する
    ルールの変更によって、明示的に許可されていない限り、すべてのユーザがグループを置換できなくなります。また、明示的に拒否されていない限り、root ユーザおよび root ユーザのグループにグループを置換する権限が付与されます。
例: selang での基本的なユーザ置換ルールの設定
以下の selang コマンドを使用して、基本的なユーザ置換ルールを環境に設定します。
nr surrogate USER.root defacc(n) own(nobody)
auth surrogate USER.root gid(sys_admin_GID) acc(a)
nr surrogate GROUP.other defacc(n) own(nobody)
auth surrogate GROUP.other gid(sys_admin_GID) acc(a)
cr surrogate USER._default defacc(n) own(nobody)
cr surrogate GROUP._default defacc(n) own(nobody)
auth surrogate USER._default uid(root) acc(a)
auth surrogate GROUP._default uid(root) acc(a)
auth surrogate USER._default gid(sys_admin_GID) acc(a)
auth surrogate GROUP._default gid(sys_admin_GID) acc(a)
システムの su ユーティリティを sesu ユーティリティに置換します。
デフォルトでは、sesu ユーティリティはファイル システム内でマークされているため、誰もこれを実行できません。sesu ユーティリティを使用してユーザが他のユーザのアカウントを代理使用できるようにするには、まず sesu ユーティリティを有効にし、次にシステムの su を sesu ユーティリティに置換する必要があります。
以下の手順に従います。
注:
以下の手順を実行するには、root または権限を持つ他のユーザである必要があります。
  1. 以下のコマンドを使用して、ユーザが sesu ユーティリティを実行できるようにします。
    chmod +s /opt/CA/PAMSC/bin/sesu
  2. 以下のコマンドを使用して、システムの su ユーティリティが格納されている場所を確認します。
    which su
  3. 以下のコマンドを使用して、システムの su ユーティリティの名前を変更します。
    mv su_dir/su su_dir/su.ORIG
    ここで、
    su_dir
    は su があるディレクトリです。
  4. sesu ユーティリティを su コマンドにリンクします。
    ln -s /opt/CA/PAMSC/bin/sesu su_dir/su
    これで、ユーザは引き続き su コマンドを実行できますが、実際に実行されるのは sesu ユーティリティになります。
  5. 以下のコマンドを使用して、
    CA Privileged Access Manager
    を停止します。
    secons -s
  6. 以下のコマンドを使用して、
    CA Privileged Access Manager
    の設定を変更します。
    seini -s sesu.SystemSu su_dir/su.ORIG
    seini -s sesu.UseInvokerPassword yes
    トークン SystemSu が設定されます。これにより、
    CA Privileged Access Manager
    が実行されていない状態では sesu は元のシステム su ユーティリティを呼び出せるようになります。
    トークン UseInvokerPassword が設定され、
    CA Privileged Access Manager
    はユーザに、root のパスワードまたは他のユーザのパスワードではなく、自分のパスワードの入力を求めます。ユーザ置換が許可されるには、ユーザの再認証が必要になります。
  7. 以下のコマンドを使用して、
    CA Privileged Access Manager
    を再ロードします。
    seload
ユーザによるシステムの su ユーティリティの実行防止
sesu ユーティリティが構成されていても、誰でも、以前と同様に、root またはユーザのパスワードを使用して、su.ORIG (名前を変更したシステム su ユーティリティ)を実行できます。これを防止するには、PROGRAM クラスを使用して、
CA Privileged Access Manager
の実行時に、su.ORIG の実行を阻止します。
注:
CA Privileged Access Manager
のインストールおよび構成時に seuidpgm を使用した場合、この手順に従う必要はありません。su は変更(su.ORIG に名前変更)されたため、実行されません。
以下の手順に従います。
  1. selang の以下のコマンドを使用して、
    CA Privileged Access Manager
    が名前を変更した su ユーティリティを監視するようにします。
    nr program su_dir/su.ORIG defacc(x) own(nobody)
  2. root としてログインし、ファイルのアクセスおよび変更時間を変更します。次のコマンドを使用します。
    touch su_dir/su.ORIG
    CA Privileged Access Manager
    は su.ORIG を監視しているため、
    変更が加えられた
    su.ORIG の実行は阻止されます。