PAM SC での安全なユーザの置換
安全なユーザの置換が提供される PAM SC の sesu ユーティリティについて説明します。
capamsc141
UNIX の su コマンドでは、ユーザがターゲット ユーザのパスワードを使用して別のユーザに切り替えることができます。ユーザ ID の切り替えを行うユーザは、ターゲット ユーザのパスワードを記憶するか、書き留めるか、または簡単なパスワードを使用するようにターゲット ユーザに依頼する必要があります。このような行為は、いくつかのパスワード ポリシーに反します。また、su コマンドはコマンドを呼び出したユーザを記録しません。アカウントの所有者を偽装するユーザを実際のユーザと区別することはできません。
Privileged Access Manager
に含まれている sesu ユーティリティは、この UNIX の su コマンドの機能強化版です。sesu では、認証の手段として、ターゲット ユーザのパスワードではなく、ユーザ自身のパスワードを要求するように設定できます。認証プロセスは、SURROGATE クラスに定義されているアクセス ルールに基づいて実行されます。また、コマンドを実行するユーザのパスワードに基づいて実行されるようにすることもできます。su の実行とは異なり、sesu の実行では、ターゲット ユーザのパスワードを知っているかどうかは関係ありません。その代わり、sesu の実行は、データベースに指定されている権限に依存します。各ユーザのログイン ID が記憶されるため、アクションを実行したユーザの記録が残ります。
ユーザが _surrogate グループのユーザの代理ユーザになる場合、
Privileged Access Manager
はユーザのアクションの完全なトレースを新規ユーザとして監査証跡に送信します。このプログラムは、誤って使用されることを防ぐために、ファイル システム内でマークされており、誰もこれを実行できません。このため、セキュリティ管理者は、このプログラムを実行する前に、それが実行可能ファイルとしてマークし、ユーザ ID を root に設定する必要があります。
sesu ユーティリティを使用する前に、すべてのユーザを
Privileged Access Manager
データベースに定義し、前提条件を設定してください。これは、製品に定義されていないユーザに対してシステム全体が開放されることを防止するためです。このページには以下のセクションが含まれます。
ユーザ ID の置換ルールの設定
ユーザが他のユーザを置換できないようにする、または他のユーザに置換できるようにするには、ユーザ ID の置換ルールを設定します。これらのルールは、SURROGATE クラスのリソースを使用して制御されます。ユーザ置換ルールを定義するには、SURROGATE レコードを作成します。
以下の手順に従います。
- Privileged Access Managerエンドポイント管理で、[ユーザ]タブをクリックし、次に[権限および委任]サブタブをクリックします。[権限および委任]メニュー オプションが左側に表示されます。
- [ユーザ ID の置換]をクリックします。
- [ユーザ ID の置換の作成]をクリックします。
- タブ ページのフィールドに入力し、[保存]をクリックします。注:SURROGATE クラス プロパティの詳細については、「selang リファレンス」のセクションを参照してください。
ユーザ置換 sesu のセットアップ
デフォルトでは、sesu ユーティリティはファイル システム内でマークされているため、誰もこれを実行できません。sesu をユーザが使用できるようにする前に、データベース ルールを設定し、それが安全に使用されるようにします。次に、su ユーティリティをロックし、ユーザが強制的に
Privileged Access Manager
の sesu ユーティリティを使用するようにします。注:
このセットアップを完了し、Privileged Access Manager
が実行されていると、su ユーティリティは実行されません。ユーザは安全な sesu ユーティリティを使用するように強制されます。Privileged Access Manager
が実行されていない場合は、su ユーティリティが使用されます。基本的なユーザ置換ルールの設定
sesu ユーティリティの使用を開始する前に、一般的なユーザ置換ルールをデータベースに定義します。これらのルールによって、不明なユーザが特権ユーザのアカウントへユーザ置換するのを防ぎます。一方で、これらのルールは、特定のユーザまたはプロセスが必要なユーザ置換操作を行えるようにします。
以下の手順に従います。
- 以下の属性を指定して、root ユーザ(USER.root)用の SURROGATE リソースを作成します。
- 所有者 -nobody
- デフォルト アクセス -none
- すべての管理者にフル コントロールを付与する
この SURROGATE リソースにより、特に許可のない限り、すべてのユーザが root にユーザ置換できなくなります。すべての管理者に、root にユーザ置換する権限が明示的に付与されます。注:個々の管理者に別々に権限を付与するか、管理者のグループを使用してすべての管理者に権限を付与することができます。 - 以下の属性を指定して、root ユーザのグループ(GROUP.other)用の SURROGATE リソースを作成します。
- 所有者 -nobody
- デフォルト アクセス -none
- すべての管理者にフル コントロールを付与する
この SURROGATE リソースにより、明示的に許可されていない限り、すべてのユーザが root ユーザのグループに置換できなくなります。すべての管理者に、root グループに置換する権限が明示的に付与されます。注:ほとんどの UNIX システムでは、root ユーザのグループはotherまたはsysです。 - USER._default 用のユーザ置換ルールを以下のように変更します。
- 所有者 -nobody
- デフォルト アクセス -none
- root に、未定義のユーザになる権限を付与する
- 管理者のグループに、未定義のユーザになる権限を付与する
ルールの変更によって、明示的に許可されていない限り、すべてのユーザがグループを置換できなくなります。また、明示的に拒否されていない限り、root ユーザおよび root ユーザのグループにユーザを置換する権限が付与されます。注:root に権限を与えると、dtlogin などのプログラムがセッションの所有者をデフォルトの X ウィンドウ所有者である root (uid=0)からほかのユーザに変更することが許可されます。権限を付与しない場合、明示的に許可されていないユーザ置換操作をPrivileged Access Managerがブロックしているため、ログインに失敗します。 - GROUP._default 用のグループ置換ルールを以下のように変更します。
- 所有者 -nobody
- デフォルト アクセス -none
- 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 または権限を持つ他のユーザである必要があります。- 以下のコマンドを使用して、ユーザが sesu ユーティリティを実行できるようにします。chmod +s /opt/CA/PAMSC/bin/sesu
- 以下のコマンドを使用して、システムの su ユーティリティが格納されている場所を確認します。which su
- 以下のコマンドを使用して、システムの su ユーティリティの名前を変更します。mv su_dir/su su_dir/su.ORIGここで、su_dirは su があるディレクトリです。
- sesu ユーティリティを su コマンドにリンクします。ln -s /opt/CA/PAMSC/bin/sesu su_dir/suこれで、ユーザは引き続き su コマンドを実行できますが、実際に実行されるのは sesu ユーティリティになります。
- 以下のコマンドを使用して、Privileged Access Managerを停止します。secons -s
- 以下のコマンドを使用して、Privileged Access Managerの設定を変更します。seini -s sesu.SystemSu su_dir/su.ORIGseini -s sesu.UseInvokerPassword yesトークン SystemSu が設定されます。これにより、Privileged Access Managerが実行されていない状態では sesu は元のシステム su ユーティリティを呼び出せるようになります。トークン UseInvokerPassword が設定され、Privileged Access Managerはユーザに、root のパスワードまたは他のユーザのパスワードではなく、自分のパスワードの入力を求めます。ユーザ置換が許可されるには、ユーザの再認証が必要になります。
- 以下のコマンドを使用して、Privileged Access Managerを再ロードします。seload
ユーザによるシステムの su ユーティリティの実行防止
sesu ユーティリティが構成されていても、誰でも、以前と同様に、root またはユーザのパスワードを使用して、su.ORIG (名前を変更したシステム su ユーティリティ)を実行できます。これを防止するには、PROGRAM クラスを使用して、
Privileged Access Manager
の実行時に、su.ORIG の実行を阻止します。注:
Privileged Access Manager
のインストールおよび構成時に seuidpgm を使用した場合、この手順に従う必要はありません。su は変更(su.ORIG に名前変更)されたため、実行されません。以下の手順に従います。
- selang の以下のコマンドを使用して、Privileged Access Managerが名前を変更した su ユーティリティを監視するようにします。nr program su_dir/su.ORIG defacc(x) own(nobody)
- root としてログインし、ファイルのアクセスおよび変更時間を変更します。次のコマンドを使用します。touch su_dir/su.ORIGPrivileged Access Managerは su.ORIG を監視しているため、変更が加えられたsu.ORIG の実行は阻止されます。