Pluggable Authentication Modules(PAM)は1997年から存在しています。PAMはSunのSolarisに由来することを教えられましたが、最初の企業での使用と普及はそこで起こったようです。しかし、私が見つけた1997年の記事によると、最初の完全な実装はLinux-PAMの展開でした。この記事は引き続きLinuxJournalから入手できます。それ以来、基本的な前提と実装は変わっていません。いくつかの新しいキーワードと多くの新しいモジュールがありますが、全体的なプロセスは20年前と同じです。
Aとして PAMで示されているように、PAMは認証に関するものです。ほとんどの場合、コンソールを介して、またはSSHまたはコックピットを使用してネットワーク全体からシステムにログインする場合、PAMが関与します。ユーザーアカウントがローカルに保持されているか、一元化された場所に保持されているかは関係ありません。使用されている限り、PAM構成ファイルを直接操作することは一般的ではありません。他のユーティリティがあなたに代わってそれを行います。 sssd
のインストール時など、インストール時に多くの変更が行われます。 RPMまたはipa-client-install
を使用 効用。最も一般的な追加の構成は、authconfig
で処理できます。 (RHEL7以前)またはauthselect
(RHEL8)、またはコックピットのWebインターフェイスを介して。ほとんどの管理者は、高度な認証とセキュリティのトピックに参加するまで、PAM構成ファイルについて学習しません。
PAMで何が得られますか?
PAMは、認証の標準タスクと特殊タスクをアプリケーションから分離します。 login
などのプログラム 、gdm
、sshd
、ftpd
、そしてもっと多くの人が、ユーザーが自分の言うとおりの人物であることを知りたがっていますが、それを行うには多くの方法があります。ユーザーは、LDAPまたはKerberosを使用してローカルまたはリモートに保存できるユーザー名とパスワードのクレデンシャルを提供できます。ユーザーは、指紋または証明書を資格情報として提供することもできます。各アプリケーション開発者に、新しいメソッドごとに認証チェックを書き直すように依頼するのは面倒です。 PAMライブラリを呼び出すと、チェックは認証の専門家に任されます。 PAMは、さまざまなアプリケーションでさまざまなテストを実行できるという点でプラグイン可能であり、新しいライブラリを使用して新しいメソッドを追加できるという点でモジュール式です。
ローカルで定義されたユーザーがテキストベースのコンソールにログインするときに実行される高レベルの手順を見てみましょう。
- ログインアプリケーションはユーザー名とパスワードの入力を求め、
libpam
を作成します 「彼らが言っているのはこのユーザーですか?」と尋ねる認証呼び出しpam_unix
モジュールは、ローカルアカウント認証をチェックする責任があります。他のモジュールもチェックされ、最終的に結果はログインプロセスに戻されます。 - 次に、ログインプロセスで「このユーザーは接続を許可されていますか?」と尋ねられ、
libpam
へのアカウント呼び出しが行われます。 。pam_unix
モジュールは、パスワードの有効期限が切れているかどうかなどをチェックします。他のモジュールは、ホストまたは時間ベースのアクセス制御リストをチェックする場合があります。全体的な応答はプロセスに返されます。 - パスワードの有効期限が切れている場合、アプリケーションは応答します。一部のアプリケーションは、単にユーザーのログインに失敗します。ログインプロセスにより、ユーザーは新しいパスワードの入力を求められます。
- パスワードを確認して正しい場所に書き込むために、ログインプロセスは
libpam
へのパスワード呼び出しを行います。 。pam_unix
モジュールはローカルのシャドウに書き込みます ファイル。パスワード強度を確認するために、他のモジュールも呼び出される場合があります。 - この時点でログインプロセスが続行されている場合は、セッションを作成する準備ができています。
libpam
へのセッション呼び出し 結果はpam_unix
ログインタイムスタンプをwtmpに書き込むモジュール ファイル。他のモジュールは、X11認証またはSELinuxユーザーコンテキストを有効にします。 - ログアウト時に、セッションが閉じられると、
libpam
に対して別のセッション呼び出しを行うことができます。 。これは、pam_unix
が モジュールはログアウトタイムスタンプをwtmpに書き込みます ファイル。
PAMには多くのコンポーネントがあります
authconfig
などのプログラムを使用して認証を変更した場合 またはauthselect
何が変わったかを確認したい場合は、次の場所を確認してください。
/ usr / lib64 / security
さまざまなチェックを実行するPAMライブラリのコレクション。これらのモジュールのほとんどには、使用例と利用可能なオプションを説明するマニュアルページがあります。
/etc/pam.d
libpam
を呼び出すアプリケーションの構成ファイルのコレクション 。これらのファイルは、チェックされるモジュール、オプション、順序、および結果の処理方法を定義します。これらのファイルは、アプリケーションのインストール時にシステムに追加される可能性があり、他のユーティリティによって頻繁に編集されます。
すべてのアプリケーションによっていくつかのチェックが行われるため、これらのファイルには、このディレクトリ内の他の構成ファイルを呼び出すためのステートメントが含まれている場合があります。ほとんどの共有モジュールはsystem-authにあります ローカル認証用のファイルとpassword-auth リモート接続をリッスンするアプリケーションのファイル。
/ etc / security
特定のモジュール用の追加の構成ファイルのコレクション。 pam_access
などの一部のモジュール およびpam_time
、チェックの粒度を追加できます。アプリケーション構成ファイルがこれらのモジュールを呼び出すと、対応する補足構成ファイルからの追加情報を使用してチェックが完了します。 pam_pwquality
などの他のモジュール 、アプリケーション構成ファイルのモジュール行ではなく、別のファイルにすべてのオプションを配置することで、他のユーティリティが構成を簡単に変更できるようにします。
/ var / log / secure
ほとんどのセキュリティおよび認証エラーは、このログファイルに報告されます。このファイルには、アクセスを制限するための権限が設定されています。
man pam
このマニュアルページでは、呼び出しの種類や関連するファイルのリストなど、プロセス全体について説明しています。
man pam.conf
このマニュアルページでは、全体的な形式について説明し、pam.d
のキーワードとフィールドを定義しています。 構成ファイル。
man -k pam_
このマニュアルページの検索では、インストールされているモジュールで使用できるページが一覧表示されます。
まとめ
PAMは、アプリケーションごとのサービスが提供できるよりもはるかに堅牢な認証環境を可能にします。 Linuxには何年も使用されており、ほぼすべてのユーザー識別プロセスに関与しています。
次の記事では、/etc/pam.d
の形式について説明します。 構成ファイル。
[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]