ルート権限移譲での PowerBroker の使用

Unix 認証レコードを設定する場合には、PowerBroker ルート権限移譲ツールを選択できます。Unix 認証レコードに含まれているユーザアカウントがスキャン対象のホストでルート権限を必要とするコマンドを実行できるようにするには、“ pb.conf ”ファイルを設定するだけです。

サポートされている PowerBroker のバージョン

BeyondTrust PowerBroker バージョン 6.0 が必要です。

PowerBroker は、複数の Unix/Linux プラットフォームをサポートしています。当社のセキュリティサービスと PowerBroker を問題なく統合できることを確認済みのテクノロジプラットフォームは、Red Hat Ent Linux v3、v4、および v5.x、SUSE Linux Ent Server 9、10、および 11、HP-UX 11i v1、v2、および v3、IBM AIX v5.x および 6.x、SUN Solaris 8、9、および 10、VMware ESX 3.x および 4.x、Mac OS 10.x です。

使用する資格情報

これは、実行するスキャンのタイプによって異なります。「スキャンに必要な資格情報」を確認することをお勧めします。

“ 実行ホスト ”のサポート

“ 発行ホスト ”ではなく“ 実行ホスト ”のスキャンがサポートされています。

ルート権限移譲の動作

PowerBroker が Unix レコードで適切に設定されていると、レコードにあるホストに対する Unix 認証は次のように動作します。1)レコードに設定されているログイン資格情報(ユーザ名とパスワード、RSA 鍵または DSA 鍵)を使用してホストへの認証が行われます。2)ルート権限を取得するために“ pbrun su - ”コマンドが実行されます。3)スキャンを完了するためにルート権限でコマンドが実行されます。

pb.conf ファイル

pb.conf ファイルには“ runuser = root ”を含める必要があります。このエントリがコメントアウトされていると、ルートアクセスでの認証が失敗します。

pb.conf で推奨される設定:

当社のサービスのために作成された PowerBroker ユーザを参照するために“ qualys ”を使用しています。

- “ qualys ”を“ su - ”の PowerBroker リクエストのみに制限します。この方法で、生成ポリシーによって“ qualys ”ユーザに特権付きコマンドの発行が許可されなくなります。

- “ qualys ”ユーザにシステムの“ su ”バイナリが委譲されるようにします。これを管理するため、ポリシーで PATH 環境変数を設定します。この設定により、ユーザが“ pbrun /a/b/c/mine/su - ”と入力したり、PATH を“ su ”実行ファイルを含む特別なディレクトリに指定したりした場合も、PowerBroker が正しいシステムの“ su ”バイナリを委譲します。

- ポリシーによって“ su - ”が“ qualys ”ユーザに委譲されるようにします。また、“ su - oracle ”や“ su ”形式のその他のリクエストがその他の特権ユーザに委譲されないようにします。

- iolog ファイルへのロギングを有効にします。“ iolog ”変数が PowerBroker ログホストに存在するディレクトリを指すようにします。この iolog ファイルでは、アプリケーションが必要なコマンドのみを実行したことを示す検証情報を確認できるだけでなく、アプリケーションが正しく実行しなかった場合に“ デバッグ ”メカニズムを確認できます。デバッグが目的の場合は、iolog ファイルを使用して“ pbreplay <ログファイル名> ”コマンドで PowerBroker セッションをリプレイできます。

- より安全なポリシーを使用して“ su - ”を委譲します。

以下の PowerBroker pb.conf ファイルの例を確認して、設定に関する理解を深めてください。

例 1 - ユーザ“ qualys ”を使用して“ su ”を移譲する場合例 1 - ユーザ“ qualys ”を使用して“ su ”を移譲する場合

以下のポリシーでは、ハードコードされたユーザ“ qualys ”を使用して“ su - ”を委譲します。

# ユーザが "qualys" でリクエストが "su -" であることを確認
if (user == "qualys" && basename(command) == "su" &&
   argc == 2 && argv[1] == "-") {
   # 委譲されるコマンドと PATH のユーザのランタイムプロパティを設定
   runuser = "root";
   setenv("PATH", "/bin:/usr/bin:/sbin:/usr/bin");
   # iolog ファイルの結果セッションを取得
   # 注記: iolog ファイルへのパスはカスタマイズが必要な場合がある
   iolog = "/var/log/pb.iolog."+ user + "."+ basename(command) + "."+
           strftime("%y%m%d.%H%M%S");
   # この許可された "su" コマンドを受け入れる
   accept;
}

 

例 2 - 外部ソースからユーザ情報を検証する場合例 2 - 外部ソースからユーザ情報を検証する場合

以下の例では、ハードコードされたポリシーエントリではなくテキストファイルなどの“ 外部 ” ソースからの“ ユーザ ”情報を検証します。

# "許可されたユーザ" リストを定義
authorized_users_list = split(readfile("/etc/pb/authorized_qualsys_account"), "\n");
# 発行ユーザが多くの許可されたユーザの 1 人であること、リクエストが "su -" であることを確認
if (user in authorized_users_list && basename(command) == "su" &&
   argc == 2 && argv[1] == "-") {
   # 委譲されるコマンドと PATH のユーザのランタイムプロパティを設定
   runuser = "root";
   setenv("PATH", "/bin:/usr/bin:/sbin:/usr/bin");
   runcommand = basename(command);
   # iolog ファイルの結果セッションを取得
   # 注記: iolog ファイルへのパスはカスタマイズが必要な場合がある
   iolog = "/var/adm/pb.iolog."+ user + "."+ basename(command) + "."+
           strftime("%y%m%d.%H%M%S");
   # この許可された "su" コマンドを受け入れる
   accept;
}

 

例 3 - iolog ファイルのサイズを制御する場合例 3 - iolog ファイルのサイズを制御する場合

iolog ファイルの“ サイズ ” を制御するため、ポリシー変数“ logstdoutlimit ”を追加できます。ポリシーの“ iolog ”エントリの下に以下を追加します。

# 取得するデータのサイズ上限を設定
logstdinlimit = 5000;
logstdoutlimit = 5000;
logstderrlimit = 5000;

 

例 4 - 入力ストリームのみをログに記録し、キャプチャしたデータを 10K に制限する場合例 4 - 入力ストリームのみをログに記録し、キャプチャしたデータを 10K に制限する場合

入力ストリームのみを記録し、キャプチャしたデータに上限の 10K を設定することが要件の場合は、ポリシーの“ iolog ”エントリの下に以下を追加します。

# 標準入力からのみデータを取得し、取得するデータを 10K までに制限
logstdout = false;
logstderr = false;
logstdinlimit = 10000;