Linuxで認証統合を実現する際に用いられる機構として、PAMとNSSという機構があります。今回はこれらについて、簡単に解説しておきましょう。
PAM
PAMとはPluggale Authentication Modulesの略称で、主に認証連携を実現するための機構です。
PAMの設定は、通常/etc/pam.confや/etc/pam.dの配下にある各種ファイルで行います。ファイルの設定例を図1に示します[1]。
最初のモジュールインタフェースには表1の4種があり、各モジュールの呼び出しタイミングなどを規定します。
表1 モジュールインタフェース
種類 | 用途 |
auth | 認証を制御し、認証時に呼び出されます。 |
account | 認証済ユーザ(アカウント)がアクセスを許可されているかどうか(認可)を制御し、認証後に呼び出されます。 |
password | パスワードの変更を制御し、パスワード変更時に呼び出されます。 |
session | 認証後の各種処理を制御します |
モジュールインタフェースごとに、通常複数のモジュールが設定されており、上から順に実行され、結果が返却されます。モジュールが実行されると成功、失敗または無視という結果が返却されます。返却された実行結果の扱いと、その後の動作を規定するのがコントロールフラグで、表2のようなキーワードがあります。
表2 コントロールフラグ
フラグ | 処理概要 |
required | モジュールの実行結果が失敗の場合、処理は失敗となる。ただし、後続モジュールの実行は行われる |
requisite | モジュールの実行結果が失敗の場合、処理は失敗となり、後続モジュールは実行されない |
sufficient | モジュールの実行結果が成功の場合、処理は成功となり、後続モジュールは実行されない |
optional | モジュールの実行結果に関わらず、後続モジュールは実行される |
複数のモジュールが実行された場合、1つでも失敗があると処理は失敗となります。通常は最後に常に実行結果が失敗となるpam_denyを配置して、それまでのモジュールの実行結果が成功でも失敗でもなかった場合の処理を明示的に規定します。
本題と外れるため、ここではこれ以上詳細な解説は行いませんが、記載の順序や設定を誤ると、誰もログインできない、もしくは誰でもログインできるといった設定ができてしまうという点を理解してください。このため、PAMモジュールの設定には細心の注意が必要です。
RHELやその派生であるCentOSでは、これらのファイルを直接修正するのではなく、authconfigと呼ばれるコマンド経由での操作が推奨されています。
ただし、authconfigコマンドでサポートされる設定は主要なものに限られますので、本連載で解説する設定を行う際には、設定ファイルを直接修正しないといけない場合もあります。
先ほどの解説の通り、PAMの設定を誤ると誰もログインできなくなってしまうケースがあります。そのため、設定を行う際には、必ず作業用とは別にrootでログイン済の端末を用意しておき、万一の際には、そちらの端末上で復旧作業が行える状態で実施することを強く推奨します。
NSS
NSSとはName Service Switchの略で、本来は認証以外の一部情報も含め、Linux上の設定ファイルの内容を参照する代わりにNSSモジュールが生成した情報を参照できるようにするための機構です。設定は通常/etc/nsswitch.confファイルで行います。設定例を図2に示します。
本連載に関係がある設定は、ユーザ情報の参照先を示すpasswdとグループ情報の参照先を示すgroup行になります。「:」に続いて参照するモジュールおよびその順序を示すキーワードを設定します。なおfilesというキーワードは、/etc/passwdなどのファイルを従来通り参照することを意味します。
NSSで可能な設定は、あくまで先ほどの定義でいうところのユーザ情報の参照先の指定であり、認証情報自体の参照先の設定は行えない点に注意してください。このため、通常はPAMとNSSを組み合わせることでLinuxの認証連携の設定を行います。
まとめ
具体的な認証連携方式の説明に入る前に、2回にわたって基本的な概念や関連する機構の説明を行いました。次回からは、さまざまな認証連携方式について、具体的な設定例を順に紹介していきましょう。