ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 の管理: セキュリティーサービス Oracle Solaris 11.1 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
実行可能ファイルを原因とするセキュリティーへの悪影響を防止する
セキュリティーリスクのあるプログラムからの保護 (タスクマップ)
10. Oracle Solaris のセキュリティー属性 (参照)
22. Kerberos エラーメッセージとトラブルシューティング
ファイルは、UNIX ファイルアクセス権と ACL を通して保護することができます。スティッキービットが設定されたファイルと、実行可能なファイルは、特殊なセキュリティー対策が必要です。
この表は、ファイルとディレクトリのモニタリングと保護を行うコマンドについて説明したものです。
表 7-1 ファイルとディレクトリの保護を行うコマンド
|
従来の UNIX ファイルアクセス権では、次に示す 3 つのユーザークラスに所有権を割り当てることができます。
ユーザー – ファイルまたはディレクトリの所有者。通常はファイルを作成したユーザーです。ファイルの所有者は、そのファイルの読み取り、書き込み (ファイルを変更する)、または実行 (コマンドの場合) が行えるユーザーを決定できます。
グループ – ユーザーグループのメンバー。
その他 – ファイル所有者ではなくグループメンバーでもないその他の全ユーザー。
ファイルアクセス権の割り当てや変更が行えるのは、通常、そのファイルの所有者だけです。さらに、root アカウントでもファイルの所有権を変更できます。システムポリシーをオーバーライドする方法については、例 7-2 を参照してください。
ファイルは、7 つの形式のいずれかになります。各形式は、次のように記号で示されます。
次の表に、各ユーザークラスに与えることができる、ファイルまたはディレクトリのアクセス権を示します。
表 7-2 ファイルとディレクトリのアクセス権
|
これらのファイルアクセス権は、通常のファイルと特殊ファイル (デバイス、ソケット、名前付きパイプ (FIFO) など) の両方に適用されます。
シンボリックリンクには、そのリンクが指すファイルのアクセス権が適用されます。
ディレクトリとそのサブディレクトリ内のファイルは、そのディレクトリに対するファイルアクセス権を制限することで保護できます。ただし、root 役割は、システム上のすべてのファイルとディレクトリにアクセスできることに注意してください。
実行可能ファイルと公開ディレクトリには、 3 種類の特殊なアクセス権 (setuid、setgid、およびスティッキービット) を設定できます。これらのアクセス権を設定すると、その実行可能ファイルを実行するユーザーは、そのファイルの所有者 (またはグループ) の ID を持つことができます。
特殊なアクセス権はセキュリティー上の問題を引き起こすため、設定するときは十分な注意が必要です。たとえば、ユーザーは、ユーザー ID (UID) を 0 (root の UID) に設定するプログラムを実行することによって root 権限を取得できます。また、すべてのユーザーは、所有するファイルに対して特殊なアクセス権を設定できるため、これもセキュリティー上の問題の原因となります。
root 権限を取得するための setuid アクセス権や setgid アクセス権の承認されていない使用がないかどうか、システムをモニターするようにしてください。疑わしいアクセス権によって、管理プログラムの所有権が root や bin にではなく、ユーザーに付与されます。この特殊なアクセス権を使用しているすべてのファイルを検索して一覧表示するには、「特殊なファイルアクセス権が設定されたファイルを見つける方法」を参照してください。
setuid アクセス権を実行可能ファイルに設定すると、このファイルを実行するプロセスにはその実行可能ファイルを実行しているユーザーではなく、ファイルの所有者に基づいてアクセス権が与えられます。この特殊なアクセス権を使用すると、通常は所有者しか利用できないファイルやディレクトリにアクセスできます。
たとえば、passwd コマンドの setuid アクセス権によってユーザーはパスワードを変更できます。次に、setuid アクセス権のある passwd コマンドの例を示します。
-r-sr-sr-x 3 root sys 28144 Jun 17 12:02 /usr/bin/passwd
この特殊なアクセス権は、プロセスの実行が終了したあとでも、高度な知識のあるユーザーは setuid プロセスによって与えられたアクセス権を維持する手段を見つけることができるため、セキュリティー上の危険が存在します。
注 - プログラムから、予約済みの UID (0 から 100) で setuid アクセス権を使用しても、実効 UID が正しく設定されないことがあります。シェルスクリプトを使用するか、setuid アクセス権では予約済み UID を使用しないようにしてください。
setgidアクセス権は setuid アクセス権に似ています。プロセスの実効グループ ID (GID) はファイルを所有するグループに変更され、ユーザーにはそのグループに与えられたアクセス権に基づくアクセス権が与えられます。/usr/bin/mail コマンドには、次のように setgid アクセス権が設定されています。
-r-x--s--x 1 root mail 67504 Jun 17 12:01 /usr/bin/mail
setgidアクセス権がディレクトリに適用されると、このディレクトリ内で作成されたファイルはディレクトリが所属するグループに含まれることになります。生成するプロセスが所属するグループに含まれるわけではありません。ディレクトリに対する書き込み権および実行権を持つユーザーは、そのディレクトリにファイルを作成できます。ただし、作成したファイルはユーザーのグループではなくディレクトリを所有するグループに割り当てられます。
root 権限を取得するための setgid アクセス権の承認されていない使用がないかどうか、システムをモニターするようにしてください。疑わしいアクセス権によって、このようなプログラムへのグループアクセス権が、root や bin ではなく、意外なグループに与えられることがあります。このようなアクセス権を使用しているファイルをすべて検索し、一覧表示する方法は、「特殊なファイルアクセス権が設定されたファイルを見つける方法」を参照してください。
「スティッキービット」は、ディレクトリ内のファイルを保護するアクセス権ビットです。ディレクトリにスティッキービットが設定されている場合、そのファイルを削除できるのはその所有者、ディレクトリの所有者、または特権ユーザーだけです。特権ユーザーの例として root ユーザーが挙げられます。スティッキービットにより、ユーザーは /tmp などの公開ディレクトリからほかのユーザーのファイルを削除できなくなります。
drwxrwxrwt 7 root sys 400 Sep 3 13:37 tmp
TMPFS ファイルシステム上で公開ディレクトリを設定するときには、スティッキービットを手動で設定してください。手順については、例 7-5 を参照してください。
ファイルやディレクトリを作成するときには、デフォルトのアクセス権が設定されます。このシステムデフォルトは変更が可能です。テキストファイルのアクセス権は 666 であり、すべてのユーザーに読み取り権と書き込み権を与えます。ディレクトリと実行可能ファイルのアクセス権は 777 で、すべてのユーザーに読み取り権、書き込み権、および実行権を与えます。一般に、ユーザーは .bashrc や .kshrc.user などの自分のシェル初期化ファイルでシステムデフォルトをオーバーライドします。管理者は、/etc/profile ファイルでデフォルトを設定することもできます。
umask コマンドによって割り当てられる値は、デフォルトから差し引かれます。この処理には、chmod コマンドでアクセス権を与えるのと同じ方法でアクセス権を拒否する効果があります。たとえば、chmod 022 コマンドはグループとその他のユーザーに書き込み権を与えますが、umask 022 コマンドはグループとその他のユーザーの書き込み権を拒否します。
次の表に、umask の標準的な値とその値が実行可能ファイルに与える影響を示します。
表 7-3 各セキュリティーレベルの umask 設定
|
umask 値の設定の詳細は、umask(1) のマニュアルページを参照してください。
chmod コマンドを使用すると、ファイルのアクセス権を変更できます。ファイルやディレクトリのアクセス権を変更するには、root またはファイルまたはディレクトリの所有者になる必要があります。
chmod コマンドを使用して、次のどちらかのモードでアクセス権を設定できます。
絶対モード – ファイルアクセス権を表す数値を使用します。絶対モードを使用してアクセス権を変更するときは、3 つ 1 組のアクセス権を 8 進数で表します。絶対モードは、アクセス権の設定に一番多く使用されている方法です。
次の表に、絶対モードでファイルのアクセス権を設定するための 8 進数値を示します。これらの数字を 3 つ組み合わせて、所有者、グループ、その他のユーザーのファイルアクセス権をこの順に設定します。たとえば、値 644 は、所有者に対して読み取り権と書き込み権を設定し、グループとその他のユーザーに対しては読み取り専用権を設定します。
表 7-4 絶対モードによるファイルのアクセス権の設定
|
次の表に、記号モードでファイルアクセス権を設定するための記号の一覧を示します。記号では、アクセス権を設定または変更できる対象ユーザー、実行される操作、あるいは割り当てるまたは変更するアクセス権を指定できます。
表 7-5 記号モードによるファイルのアクセス権の設定
|
機能列に <対象ユーザー> <操作> <アクセス権> の順で、ファイルまたはディレクトリのアクセス権を変更する記号を指定します。
アクセス権を変更する対象となるユーザーを指定します。
実行する操作を指定します。
変更するアクセス権を指定します。
絶対モードまたは記号モードで、ファイルに特殊なアクセス権を設定できます。しかし、ディレクトリに setuid アクセス権を設定する場合と、ディレクトリからこのアクセス権を削除する場合は、記号モードを使用する必要があります。絶対モードでは、3 つ 1 組のアクセス権の左端に新しい 8 進数値を追加して、特殊なアクセス権を設定します。次の表に、ファイルに特殊なアクセス権を設定する 8 進数値を示します。
表 7-6 絶対モードによる特殊なファイルアクセス権の設定
|