前のトピック: デフォルト ファイル ルール次のトピック: setuid/setgid プログラムの自動定義


setuid プログラムおよび setgid プログラムの保護

ユーザ ID 設定(setuid)プログラムは、UNIX で最も頻繁に使用されるプログラムの 1 つです。 setuid プログラムを起動するプロセスによって、setuid プログラムの所有者の ID が自動的に取得されます。 setuid プログラムの所有者が root である場合、setuid プログラムを起動すると、任意のユーザは自動的にスーパーユーザになります。 setuid プログラムが開始すると、プロセスはスーパーユーザが権限を持つタスクを実行します。 setuid プログラムが必要なタスクのみを実行することを確認してください。 setuid プログラム内のバック ドアまたはシェルにより、システム上のすべてのファイルに対するアクセス権がユーザに与えられます。

CA ControlMinder では、PROGRAM クラスを使用して setuid プログラムおよび setgid プログラムを保護しています。 CA ControlMinder は、インストール時にデフォルトですべてのプログラムの実行を許可します。 データベースで trusted プログラムを定義した後、プログラムが trusted プログラムとして定義されていない場合は setuid プログラムまたは setgid プログラムの実行を禁止するように、CA ControlMinder の動作を変更できます。 たとえば、/bin/ps(プロセス状態表示プログラム)を setgid プログラムとして(本来の目的どおりに)実行できるようにするには、以下の selang のコマンドを使用します。

newres PROGRAM /bin/ps defaccess(EXEC)

/bin/ps プログラムが、CA ControlMinder の trusted プログラムとして登録されます。 次に、CRC、i-node 番号、サイズ、デバイス番号、所有者、グループ、アクセス許可ビット、最終変更日時、および(オプションで)レコード内のその他のデジタル署名が確認され、データベースの PROGRAM クラスのレコードに格納されます。

Watchdog 機能により、プログラムの CRC、サイズ、i-node、および他の特性が定期的にチェックされます。 このいずれかの値が変更された場合、Watchdog 機能では、trusted プログラム リストからプログラムを削除してプログラムへのアクセスを拒否するように、seosd に対して自動的に指示が出されます。 これにより、setuid プログラムを変更または移動して、プログラムを不正に使用することができなくなります。 上記の newres コマンドの例では、データベースに定義されていないユーザも含め、すべてのユーザに /bin/ps コマンドの実行を許可していることに注意してください。

untrusted setuid プログラムは、UNIX ベースのオペレーティング システムにおいて最も危険なセキュリティ ホールになる可能性があります。 trusted プログラムのアクセス ルールを使用することで、セキュリティ管理者は、テストとチェックを終えた特定の trusted プログラムのみに setuid の使用を許可し、プログラムの完全性を保証することができます。 ただし、すべてのユーザが、trusted 実行可能ファイルを自動的に起動できるわけではありません。アクセス ルールによって、その setuid プログラムへのアクセス権限を与えるユーザおよびグループを明示的に指定する必要があります。 たとえば、以下の 2 つの selang のコマンドでは、/bin/su の実行権限のみをシステム部門のユーザ(sysdept グループ)に与えています。

newres PROGRAM /bin/su defaccess(NONE)
authorize PROGRAM /bin/su gid(sysdept) access (EXEC)

データベースで定義されているすべてのユーザを指定するには、アスタリスク(*)を使用します。 たとえば、CA ControlMinder に定義されているすべてのユーザに su コマンドの実行を許可するには、以下のコマンドを入力します。

authorize PROGRAM /bin/su uid(*) access(EXEC)

この説明は、setgid 実行可能ファイルの場合にも当てはまります。

nr コマンドおよび er コマンドを使用して、PROGRAM クラスに setuid プログラムおよび setgid プログラムを登録できます。 重要な setuid 以外および setgid 以外のプログラムも、同様に PROGRAM クラスに登録できます。 これらのプログラムの FILE ルールを定義して、権限のないユーザによる更新を防ぎます。 プログラムが Untrusted の場合にプログラムの実行を許可する場合は(アップグレード後に、プログラムは再度 Trusted 状態にされずに実行されます)、blockrun プロパティを no に設定します。

blockrun プロパティの値を yes に設定するには、以下の editres/newres コマンドを使用します。

er program /bin/ps blockrun

blockrun プロパティの値を no に設定するには、以下の editres/newres コマンドを使用します。

er program /bin/ps blockrun-

デフォルトでは、PROGRAM クラスに登録されているすべてのプログラムの blockrun プロパティが yes に設定されます。 この値は、seos.ini ファイルの SetBlockRun トークンを使用して変更できます。 詳細については、seos.ini ファイルの説明を参照してください。

注: CA ControlMinder では、setuid および setgid プログラムを保護するために FILE クラスではなく PROGRAM クラスが使用されます。