PAM認証の仕組み
PAMとは
PAM [Pluggable Authentication Modules]
- Linuxやアプリケーションでユーザ認証を行うためのAPI
- 個々のアプリケーションから独立して、ライブラリや各種モジュールを備えLinuxOSやアプリケーションは、PAMを利用することでユーザ認証を行うことができる
PAM関連ファイル
設定ファイル
/etc/pam.d 配下に保存
構成
[module interface] [control flag] [module name] [module arguments]
第一パラメータ:モジュールタイフ゜
第二パラメータ:処理制御フラグ
第三ぷらメータ:実行モジュール
module interface (PAMモジュールインターフェース: 第一パラメータ)
モジュールタイフ゜ | 説明 |
---|---|
auth | ユーザ認証(パスワードの検証) 認証の許可、認証の方法などに関するモジュール |
account | アクセスが許可されたかを確認 アカウント有効期間や有効性に関するモジュール |
password | ユーザのパスワード変更 パスワードの設定、確認に関するモジュール |
session | ユーザセッションの設定・管理 |ユーザセッションを設定、管理に関するモジュール |
ユーザ認証の流れ
「auth」でユーザの確認が成功
↓
「account」でアカウントの有効性が確認される
↓
「password」でパスワードを確認
↓
「session」で接続許可するパスを確認
control flag (制御フラグ 第二パラメータ)
処理制御フラグ | 説明 |
---|---|
required | このモジュールが成功しないと全体は認証されない。ただし失敗しても、後続に実行予定のモジュール処理が全て終わるまでは、利用者に結果が通知されない。 |
requisite | このモジュールが成功しないと全体は認証されない。失敗した時点で次を参照すること無くエラーになる。先にrequiredが失敗していればrequired。このフラグで初めて失敗すればrequisiteエラーになる。 |
sufficient | 他のモジュールが成功し、このモジュールも成功すると、移行のモジュールは参照せず認証される。失敗した場合optionalエラーになる。 |
optional | 他に参照すべきモジュールがない場合だけ、認証成功のために便宜的に必要となるフラグ。その他のモジュールがある場合は無視される。 |
include | モジュール結果の処理は関係しないフラグ。第三パラメータで指定されたPAMモジュールの内のパラメータのうち、第一パラメータで指定されたモジュールタイフ゜と合致するもの全てを、パラメータに追加する。 |
substack | includeとほぼ同じだが、includeでは第三パラメータで指定したPAMモジュールの記載内容をそのまま持ってくるだけなのに対し、substackでは指定したPAMモジュール内で処理を実行し、結果だけをもってくるという違いがある。 |
include 例)
/etc/pam.d/login にいかが記載されていた場合
session include system-auth
system-authというPAMモジュールファイルに記載のある各行のうち、モジュールタイフ゜がsessionの行すべてを、/etc/pam.d/loginにも適用するという意味。
module name (モジュール名)
- 64bitの場合:/lib64/security にあるモジュールを指定
- 32bitの場合:/lib/security にあるモジュールを指定
module arguments (モジュールの引数)
- ユーザIDが何番以上
- 再度パスワードを要求
- パスワードなしでも許可
PAMファイル設定の注意点
設定ファイルの直接編集は非推奨。 authconfigコマント゛を利用することが推奨されている。