ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Solaris のシステム管理 (セキュリティサービス) Oracle Solaris 10 8/11 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
13. Oracle Solaris の暗号化フレームワーク (概要)
14. Oracle Solaris の暗号化フレームワーク (手順)
PAM を使用して、遠隔システムからの rhost 式アクセスを防ぐ方法
19. Oracle Solaris Secure Shell の使用 (手順)
login、 rlogin、 su、 cron などのシステムサービスに対する PAM サービスモジュールを構成するには、PAM 構成ファイル pam.conf(4) を使用します。システム管理者がこのファイルを管理します。pam.conf 内のエントリの順番が間違っていると、予期しない副作用が生じる可能性があります。たとえば、pam.conf の設定が不適切であると、ユーザーがロックアウトされ、修復のためにシングルユーザーモードが必要になる可能性があります。順番の設定方法については、「PAM スタックのしくみ」を参照してください。
service-name module-type control-flag module-path module-options
サービスの名前。たとえば、ftp、 login、 または passwd などです。アプリケーションは、自身が提供するサービスごとに異なるサービス名を使用できます。たとえば、Oracle Solaris Secure Shell デーモンが使用するサービス名は次のとおりです。sshd-none、 sshd-password、 sshd-kbdint、 sshd-pubkey、 sshd-hostbased。サービス名 other は事前に定義された名前であり、ワイルドカードのサービス名として使用されます。構成ファイル内で特定のサービス名が見つからない場合には、other の構成が使用されます。
サービスのタイプ。具体的には auth、 account、 session、 password のいずれかです。
サービスの統合された成功または失敗の値を決定するうえで、そのモジュールの果たす役割を示します。有効な制御フラグは、binding、 include、 optional、 required、 requisite、 および sufficient です。制御フラグの使用方法については、「PAM スタックのしくみ」を参照してください。
サービスを実装しているライブラリオブジェクトへのパス。パス名が絶対パスでない場合、そのパス名は /usr/lib/security/$ISA/ に対する相対パスとみなされます。libpam による検索が、アプリケーションの特定のアーキテクチャーに対するディレクトリ内で行われるように、アーキテクチャーに依存するマクロ $ISA を使用します。
サービスモジュールに渡されるオプション。各モジュールのマニュアルページには、そのモジュールで使用できるオプションの説明があります。典型的なモジュールオプションとしては、nowarn や debug などがあります。
あるアプリケーションが次の関数を呼び出すと、libpam は構成ファイル /etc/pam.conf を読み取り、そのサービスの操作に関与するモジュールを決定します。
認証管理やアカウント管理など、このサービスのある操作に対するモジュールが /etc/pam.conf に 1 つしか含まれていない場合、そのモジュールの結果によって、その操作の結果が決まります。たとえば、passwd アプリケーションのデフォルトの認証操作には、1 つのモジュール pam_passwd_auth.so.1 が含まれています。
passwd auth required pam_passwd_auth.so.1
これに対し、サービスのある操作に対して複数のモジュールが定義されている場合、それらのモジュールは「スタック」を形成しており、そのサービスに対する「PAM スタック」が存在している、と言います。たとえば、pam.conf に次のエントリが含まれる場合を考えます。
login auth requisite pam_authtok_get.so.1 login auth required pam_dhkeys.so.1 login auth required pam_unix_cred.so.1 login auth required pam_unix_auth.so.1 login auth required pam_dial_auth.so.1
これらのエントリは、login サービスに対するサンプルの auth スタックを表現したものです。このスタックの結果を決定するには、個々のモジュールの結果コードに対して「統合プロセス」を実行する必要があります。統合プロセスでは、各モジュールが、/etc/pam.conf 内で指定された順番で実行されます。個々の成功コードまたは失敗コードが、モジュールの制御フラグに基づいて総合結果へと統合されます。制御フラグによっては、スタックの早期終了が発生する可能性があります。たとえば、requisite モジュールが失敗したり、sufficient モジュールや binding モジュールが成功したりする可能性があります。スタックの処理が完了すると、個々の結果が組み合わされて単一の総合結果が算出され、それがアプリケーションに渡されます。
制御フラグは、サービスへのアクセスを決定するうえで、ある PAM モジュールが果たす役割を示します。制御フラグとその効果は、次のとおりです。
binding – binding モジュールの要件を満たすことに成功すると、その時点までの required モジュールがどれも失敗しなかった場合には、すぐにアプリケーションに成功が返されます。これらの条件が満たされると、後続のモジュールは実行されません。失敗すると、required 失敗が記録され、モジュールの処理が継続されます。
include – 別の PAM 構成ファイルに含まれる行を追加し、それらの行がその時点で PAM スタック内で使用されるようにします。このフラグは成功または失敗の動作を制御しません。新しいファイルが読み取られると、PAM のインクルードスタックが 1 増やされます。新しいファイル内でのスタックチェックが完了すると、インクルードスタック値が 1 減らされます。ファイルの末尾に到達し、かつ PAM インクルードスタックが 0 であれば、スタック処理は終了します。PAM インクルードスタックの最大数は、32 です。
optional – optional モジュールの要件を満たすことに成功することは、サービスを使用するために必要な条件ではありません。失敗すると、optional 失敗が記録されます。
required – required モジュールの要件を満たすことに成功することは、サービスを使用するために必要な条件です。失敗すると、このサービスの残りのモジュールの実行完了後に、エラーが返されます。サービスの最終的な成功が返されるのは、binding または required モジュールがどれも失敗を報告しなかった場合だけです。
requisite – requisite モジュールの要件を満たすことに成功することは、サービスを使用するために必要な条件です。失敗するとすぐにエラーが返され、後続のモジュールは実行されません。あるサービスのすべての requisite モジュールが成功を返さないと、この機能がアプリケーションに成功を返すことができません。
sufficient – その時点までに required 失敗が一度も発生しなかった場合、sufficient モジュールが成功するとすぐにアプリケーションに成功が返され、後続のモジュールは実行されません。失敗すると、optional 失敗が記録されます。
次の 2 つの図は、統合プロセスでアクセスがどのように決定されるかを示したものです。最初の図は、制御フラグのタイプごとに成功または失敗がどのように記録されるのかを示しています。2 番目の図は、統合された値の決定方法を示しています。
図 17-2 PAM スタック: 制御フラグの効果
図 17-3 PAM スタック: 統合された値の決定方法
次のような、認証を要求する rlogin サービスの例を考えます。
例 17-1 典型的な PAM 構成ファイルの内容の一部
この例の pam.conf ファイルには、rlogin サービスに対して次のような内容が含まれています。
# Authentication management ... # rlogin service rlogin auth sufficient pam_rhosts_auth.so.1 rlogin auth requisite pam_authtok_get.so.1 rlogin auth required pam_dhkeys.so.1 rlogin auth required pam_unix_auth.so.1 ...
rlogin サービスが認証を要求すると、libpam はまず、pam_rhosts_auth(5) モジュールを実行します。pam_rhosts_auth モジュールの制御フラグは、sufficient に設定されています。pam_rhosts_auth モジュールがユーザーの認証に成功すると、処理が中止され、アプリケーションに成功が返されます。
pam_rhosts_auth モジュールがユーザーの認証に失敗すると、次の PAM モジュールである pam_authtok_get(5) が実行されます。このモジュールの制御フラグは、requisite に設定されています。pam_authtok_get が失敗すると、認証処理が終了し、失敗が rlogin に返されます。
pam_authtok_get が成功すると、次の 2 つのモジュール pam_dhkeys(5) と pam_unix_auth(5) が実行されます。どちらのモジュールにも、required に設定された制御フラグが関連付けられているため、各モジュールが失敗を返すかどうかにかかわらず、処理が継続されます。pam_unix_auth の実行が終了すると、rlogin 認証用のモジュールはもう残っていません。この時点で、pam_dhkeys、 pam_unix_auth のいずれかが失敗を返していた場合、ユーザーは rlogin 経由でのアクセスを拒否されます。