RHEL での認証と認可の設定
SSSD、authselect、および sssctl を使用した認証および認可の設定
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 システム認証の概要 リンクのコピーリンクがクリップボードにコピーされました!
セキュアなネットワーク環境の基礎の 1 つは、システムにアクセスできるユーザーを、許可されたユーザーだけに制限することです。認証では、アクセスを許可する前にユーザーのアイデンティティーを検証します。
どの Red Hat Enterprise Linux システムでも、ユーザーアイデンティティーを作成および管理するためのさまざまなサービスが利用できます。これには、ローカルシステムファイル、Kerberos や Samba などの大規模なアイデンティティードメインに接続するサービス、またはそれらのドメインを作成するツールが含まれます。
1.1. RHEL の認証方法 リンクのコピーリンクがクリップボードにコピーされました!
認証とは、アイデンティティーの確認を行うプロセスです。ネットワークのやり取りにおいて、認証とは、一方の当事者がもう一方の当事者のアイデンティティーを確認できるようにすることです。ネットワーク上で認証を使用する方法は、単純なパスワード、証明書、パスワードレス方式、ワンタイムパスワード (OTP) トークン、生体認証スキャンなど、多数あります。
認可では、認証された当事者がアクセスできる内容や実行できる内容を定義します。
認証では、当事者が自身のアイデンティティーを検証するために何らかの認証情報を提示する必要があります。必要な認証情報の種類は、使用される認証メカニズムによって定義されます。
1.1.1. システム上のローカルユーザー認証の種類 リンクのコピーリンクがクリップボードにコピーされました!
- パスワードベースの認証
- ほとんどのソフトウェアで、ユーザーは認識されたユーザー名とパスワードを提供することで認証できます。これは簡易認証とも呼ばれます。
- 証明書ベースの認証
- 証明書に基づくクライアント認証は、Secure Sockets Layer (SSL) プロトコルの一部です。クライアントは無作為に生成されたデータの一部に署名し、ネットワーク全体で証明書および署名されたデータの両方を送信します。サーバーは署名を検証し、証明書の有効性を確認します。
- Kerberos 認証
- Kerberos は、Ticket-Granting Ticket (TGT) と呼ばれる、有効期間が短い認証情報のシステムを確立します。ユーザーは、ユーザーを特定し、ユーザーにチケットを発行できることをシステムに示す認証情報、つまりユーザー名およびパスワードを提示します。TGT は、Web サイトや電子メールなどの他のサービスへのアクセスチケットを要求するために繰り返し使用できます。Kerberos を使用した認証では、ユーザーはこのように 1 回の認証プロセスのみを実行することになります。
- スマートカードベースの認証
これは証明書ベースの認証の一種です。スマートカード (またはトークン) にはユーザー証明書が保存されています。ユーザーがトークンをシステムに挿入すると、システムが証明書を読み取ってアクセスを許可します。スマートカードを使用したシングルサインオンには、以下の 3 つの手順があります。
- ユーザーがスマートカードをカードリーダーに挿入します。Red Hat Enterprise Linux のプラグ可能な認証モジュール (PAM) は、挿入されたスマートカードを検出します。
- システムは、証明書をユーザーエントリーにマップし、スマートカードに表示された証明書を、証明書ベースの認証で説明されているように秘密鍵で暗号化して、ユーザーエントリーに保存されている証明書と比較します。
- 証明書がキー配布センター (KDC) に対する検証に成功すると、ユーザーはログインを許可されます。
スマートカードベースの認証は、追加の識別メカニズムとして証明書を追加し、物理的なアクセス要件を追加することにより、Kerberos によって確立された単純な認証層に基づいています。
- ワンタイムパスワード認証
- ワンタイムパスワードにより、認証セキュリティーに関する手順が追加されます。この認証では、ユーザーのパスワードと自動的に生成されたワンタイムパスワードを組み合わせて使用します。
- パスキー認証
- パスキーは、Yubikey 5 や Nitrokey など、libfido2 ライブラリーでサポートされている FIDO2 認証デバイスです。パスワードレス認証と多要素認証を可能にします。システムが IdM 環境に登録および接続されている場合、この認証方法により Kerberos チケットが自動的に発行されます。これにより、Identity Management (IdM) ユーザーのシングルサインオン (SSO) が可能になります。
- 外部アイデンティティープロバイダー
- OAuth 2 デバイス認可フローをサポートする外部アイデンティティープロバイダー (IdP) にユーザーを関連付けることができます。このユーザーが RHEL 9.1 以降で利用可能な SSSD バージョンで認証すると、ユーザーは、外部 IdP で認証と認可を実行した後、Kerberos チケットを使用した RHEL Identity Management (IdM) シングルサインオン機能を受け取ります。
1.2. RHEL におけるシングルサインオンの概要 リンクのコピーリンクがクリップボードにコピーされました!
一元的なアイデンティティーストアがない場合、各アプリケーションが独自のユーザー認証情報を維持管理します。その場合、ユーザーはアクセスするすべてのサービスまたはアプリケーションに対してパスワードを入力する必要があります。
管理者がシングルサインオン (SSO) を設定すると、1 つのパスワードストアが作成されます。ユーザーは、1 つのパスワードを使用して一度ログインするだけで、すべてのネットワークリソースにアクセスできるようになります。
Red Hat Enterprise Linux は、ワークステーションへのログイン、スクリーンセーバーのロック解除、Mozilla Firefox を使用した保護された Web ページへのアクセスなど、いくつかのリソースに対する SSO をサポートしています。特権アクセス管理 (PAM)、Name Service Switch (NSS)、Kerberos など、その他のシステムサービスが利用可能な場合は、これらのアイデンティティーソースを使用するように他のシステムアプリケーションを設定できます。
SSO は、ユーザーにとって便利であると同時に、サーバーとネットワークのセキュリティーをさらに強化するものでもあります。SSO はセキュアで効果的な認証に左右されます。RHEL は、SSO を可能にする認証メカニズムを 2 つ備えています。
- Kerberos レルムと Active Directory ドメインを使用した Kerberos ベースの認証
- スマートカードベースの認証
どちらの方法でも、(Kerberos レルムまたは公開鍵基盤の認証局によって) 一元的なアイデンティティーストアが作成されます。ローカルシステムの各サービスは、複数のローカルストアを維持する代わりに、それらのアイデンティティードメインを使用します。
1.3. ローカルユーザー認証に利用できるサービス リンクのコピーリンクがクリップボードにコピーされました!
すべての Red Hat Enterprise Linux システムには、ローカルシステム上のローカルユーザーの認証を設定するサービスが用意されています。これには以下が含まれます。
- 認証設定
-
認証設定ツール
authselectは、システムに対して、さまざまなアイデンティティーバックエンドと認証手段 (パスワード、指紋、スマートカードなど) を設定します。
-
認証設定ツール
- アイデンティティーバックエンド設定
- Security System Services Daemon (SSSD) は、主に Microsoft Active Directory や IdM などの LDAP ベースのディレクトリーを中心に、複数のアイデンティティープロバイダーを設定します。これらのアイデンティティープロバイダーは、ローカルシステムとアプリケーションの両方で認証に使用できます。SSSD はパスワードとチケットをキャッシュし、認証情報を再利用することでオフライン認証とシングルサインオンを可能にします。
-
realmdサービスは、認証バックエンド (IdM の SSSD) の設定を可能にするコマンドラインユーティリティーです。realmdサービスは、DNS レコードに基づいて利用可能な IdM ドメインを検出し、SSSD を設定してから、システムをアカウントとしてドメインに参加させます。 -
NSS (Name Service Switch) は、ユーザー、グループ、またはホストの情報を返す低レベルのシステムコールのメカニズムです。NSS は、必要な情報を取得するのに使用するモジュールであるソースを決定します。たとえば、ユーザー情報は、
/etc/passwdファイルなどの従来の UNIX ファイルや LDAP ベースのディレクトリーに保存されていることがあります。また、ホストアドレスは、/etc/hostsファイルや DNS レコードなどのファイルから読み取られることがあります。NSS は、このような情報が保存されている場所を特定します。
- 認証メカニズム
- プラグ可能な認証モジュール (PAM) は、認証ポリシーを設定するシステムを提供します。認証に PAM を使用するアプリケーションは、認証のさまざまな側面を制御する異なるモジュールを読み込みます。アプリケーションが使用する PAM モジュールは、アプリケーションの設定方法に基づいています。利用可能な PAM モジュールには、Kerberos、Winbind、SSSD、ローカルの UNIX ファイルベースの認証があります。
その他のサービスやアプリケーションも利用できますが、これらは一般的な設定です。
第2章 authselect を使用したユーザー認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
authselect ユーティリティーを使用すると、システムのアイデンティティーソースと認証ソースを設定できます。
2.1. authselect の使用方法 リンクのコピーリンクがクリップボードにコピーされました!
authselect は、Pluggable Authentication Modules (PAM) および Name Service Switch (NSS) の設定を定義する既製のプロファイルを提供します。ユーザーがプロファイルを選択すると、authselect は、そのプロファイルで指定されたアイデンティティーおよび認証ソースを使用するために、適切な nsswitch.conf および PAM スタックを生成します。
デフォルトのプロファイルセットを使用することも、カスタムプロファイルを作成することもできます。システムに合わせてカスタムプロファイルを最新の状態に保つには、手動で更新する必要があることに注意してください。
authselect のプロファイル
- local
-
/etc/passwdや/etc/shadowなどの従来のシステムファイルを使用して、SSSD なしでローカルユーザーを処理するための認証を設定します。これはデフォルトのプロファイルです。 - sssd
- LDAP 認証を使用するシステムで SSSD を有効にします。このプロファイルは、リモートのアイデンティティープロバイダーを統合し、スマートカード、GSSAPI、セッション記録などの機能をサポートするために使用します。
- winbind
- Microsoft Active Directory と直接統合されたシステムで Winbind ユーティリティーを有効にします。
特定のホストに対して authselect プロファイルを選択すると、そのプロファイルがホストにログインするすべてのユーザーに適用されます。
Red Hat では、半集中型の Identity Management 環境では、認証設定を管理するために authselect を使用することを推奨しています。たとえば、組織がドメイン内のサービスを使用するユーザーを認証するために LDAP または Winbind データベースを利用している場合などです。
用意されているプロファイルセットが不十分な場合は、カスタムプロファイルを作成できます。
次の場合は、authselect を使用する必要はありません。
-
ホストは Red Hat Enterprise Linux Identity Management (IdM) の一部です。ホストを IdM ドメインに参加させると、
ipa-client-installコマンドは、ホストで SSSD 認証を自動的に設定します。 -
ホストは SSSD 経由で Active Directory の一部です。
realm joinコマンドを呼び出して、ホストを Active Directory ドメインに参加させると、ホストで SSSD 認証が自動的に設定されます。
Red Hat は、ipa-client-install または realm join により設定された authselect プロファイルを変更しないことを推奨します。それらを変更する必要がある場合は、変更を加える前に現在の設定を表示して、必要に応じて元に戻すことができるようにします。
$ authselect current
Profile ID: sssd
Enabled features:
- with-sudo
- with-mkhomedir
- with-smartcard
2.1.1. authselect によって変更されるファイルとディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
authselect によって変更される設定ファイルは限られているため、認証設定の管理とトラブルシューティングが容易です。
|
| GNU C ライブラリーおよびその他アプリケーションはこの NSS (Name Service Switch) を使用して、さまざまなカテゴリーの名前サービス情報を、どのソースから、どの順番で取得するかを決定します。情報の各カテゴリーは、データベース名で識別されます。 |
|
| Linux-PAM (Pluggable Authentication Modules) は、システムのアプリケーション (サービス) の認証タスクを処理するモジュールのシステムです。認証の性質は動的に設定できます。システム管理者は、個々のサービス提供アプリケーションがユーザーを認証する方法を選択できます。
たとえば、これらのファイルには以下の情報が含まれています。
|
|
|
このディレクトリーは、 |
2.2. authselect プロファイルの選択 リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、特定のホストの authselect ユーティリティーのプロファイルを選択できます。そのプロファイルはそのホストにログインしているすべてのユーザーに適用されます。
前提条件
-
authselectコマンドを実行するにはroot認証情報が必要です。
authselect select 手順を完了する前に、プロファイルに関連する設定ファイルが正しく設定されていることを確認してください。たとえば、sssd デーモンが正しく設定されておらずアクティブでない場合、authselect select を実行すると、pam_unix を使用してローカルユーザーのみが認証できるようになります。
手順
認証プロバイダーに適した
authselectプロファイルを選択します。<profile>を使用するプロファイル名に置き換えます。# authselect select <profile>オプション: 選択したプロファイルが提供する機能を有効または無効にすることで、デフォルトのプロファイル設定を変更できます。
# authselect select <profile> <feature>たとえば、
sssdプロファイルを選択し、パスワード認証に加えてスマートカード認証を有効にするには、次のようにします。# authselect select sssd with-smartcard
検証
/etc/nsswitch.confに SSSD のsssエントリーが存在することを確認します。passwd: sss files group: sss files netgroup: sss files automount: sss files services: sss files .../etc/pam.d/system-authファイルのpam_sss.soエントリーの内容を確認します。# Do not modify this file manually, use authselect instead. Any user changes will be overwritten. # You can stop authselect from managing your configuration by calling 'authselect opt-out'. # See authselect(8) for more details. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so ...
2.3. 独自の authselect プロファイルの作成とデプロイ リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、デフォルトプロファイルのいずれかのカスタムコピーを作成して、カスタムプロファイルを作成およびデプロイできます。
カスタムプロファイルをデプロイすると、そのプロファイルは指定したホストにログインしているすべてのユーザーに適用されます。
手順
カスタムプロファイルを作成するために、
authselect create-profileコマンドを実行します。<custom_profile>を目的のプロファイル名に置き換えます。たとえば、/etc/nsswitch.confファイル内の項目を自分で設定するオプションを使用して、既製のsssdプロファイルに基づいてプロファイルを作成するには、次のコマンドを使用します。# authselect create-profile <custom_profile> -b sssd --symlink-meta --symlink-pam New profile was created at /etc/authselect/custom/<custom_profile>警告/etc/authselect/custom/<custom_profile>/{password-auth,system-auth,fingerprint-auth,smartcard-auth,postlogin}を変更する予定の場合は、--symlink-pamオプションを指定せずに上記のコマンドを入力してください。これは、authselect-libsのアップグレード中に変更が確実に維持されるために行います。コマンドに
--symlink-pamオプションを含めると、PAM テンプレートがコピーではなく元のプロファイルファイルへのシンボリックリンクになります。また、--symlink-metaオプションを含めると、README や REQUIREMENTS などのメタファイルも、コピーではなく元のプロファイルファイルへのシンボリックリンクになります。これにより、元のプロファイル内の PAM テンプレートとメタファイルに対する今後のすべての更新が、カスタムプロファイルにも反映されるようになります。このコマンドにより、
/etc/authselect/custom/<custom_profile>/ディレクトリーに/etc/nsswitch.confファイルのコピーが作成されます。-
/etc/authselect/custom/<custom_profile>/nsswitch.confファイルを設定します。 パラメーターとして
custom/<custom_profile>を指定したauthselect selectコマンドを実行し、カスタムプロファイルを選択します。# authselect select custom/<custom_profile>お使いのマシン用に
<custom_profile>プロファイルを選択すると、後で Red Hat によってsssdプロファイルが更新されたときに、/etc/nsswitch.confファイルに加えた更新以外のすべての更新を利用できます。sssd プロファイルに基づいてカスタムプロファイルを作成する例:
sssdプロファイルに基づいてプロファイルを作成できます。このプロファイルでは、dnsまたはmyhostnameデータベース内ではなく、/etc/hostsファイル内のホスト名のローカル静的テーブル検索のみを参照します。/etc/nsswitch.confファイルで、次の行を編集します。hosts: files/etc/nsswitch.confへの変更を除外するカスタムプロファイルをsssdに基づいて作成します。# authselect create-profile custom-sssd-profile -b sssd --symlink-meta --symlink-pamプロファイルを選択します。
# authselect select custom/custom-sssd-profileオプション: カスタムプロファイルを選択したことにより、以下が実行されたことを確認します。
-
選択した
sssdプロファイルに従って/etc/pam.d/system-authファイルが作成された。 /etc/nsswitch.confの設定が変更されていない。hosts: files注記authselect selectsssdを実行すると、対照的にhosts: files dns myhostnameという結果になります。
-
選択した
2.4. authselect の使用のオプトアウト リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムから authselect をアンインストールすることはできません。ただし、authselect による設定の管理を停止する必要がある場合は、オプトアウトすることができます。オプトアウトすると、システムによってすべての authselect 設定が削除されます。これにより、nsswitch および PAM 設定がデフォルトのシステムの場所に復元され、それらが authselect によって管理されなくなります。
authselect では、システムの認証およびアイデンティティー設定を、サポートされる形で一貫して確実に管理できます。オプトアウトすると、サポートされていない設定や一貫性のない設定が発生し、認証の問題が発生する可能性があります。特別な設定が必要な場合は、authselect のフレームワーク内でカスタムプロファイルを作成することを検討してください。
手順
authselectによるシステム設定の管理を停止するには、次のコマンドを実行します。# authselect opt-outauthselectの使用を再開するには、authselect select <profile_name>を実行します。
第3章 SSSD とその利点について リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) は、リモートディレクトリーと認証メカニズムにアクセスするためのシステムサービスです。SSSD の仕組み、SSSD を使用する利点、設定ファイルの処理方法、設定できるアイデンティティーおよび認証プロバイダーを説明します。
3.1. SSSD の仕組み リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) サービスを使用すると、リモートディレクトリーと認証メカニズムにアクセスできます。SSSD クライアント であるローカルシステムを、外部のバックエンドシステム (プロバイダー) に接続できます。
SSSD は、次のような複数のアイデンティティーおよび認証プロバイダーをサポートしています。
- LDAP ディレクトリー
- Identity Management (IdM) ドメイン
- Active Directory (AD) ドメイン
- Kerberos レルム
SSSD は、以下の 2 段階で機能します。
- クライアントをリモートプロバイダーに接続し、ID 情報および認証情報を取得します。
- 取得した認証情報を使用して、クライアントにユーザーと認証情報のローカルキャッシュを作成します。
ローカルシステムのユーザーは、リモートプロバイダーに保存されているユーザーアカウントを使用して認証できます。
SSSD は、ローカルシステムでユーザーアカウントを作成しません。ただし、SSSD は、IdM ユーザーのホームディレクトリーを作成するように設定できます。作成が完了すると、IdM ユーザーのホームディレクトリーと、クライアント上のコンテンツは、ユーザーがログアウトしても削除されません。
図3.1 SSSD の仕組み
SSSD は、NSS (Name Service Switch) や PAM (Pluggable Authentication Modules) などの複数のシステムサービスのキャッシュを提供することもできます。
ユーザー情報のキャッシュには SSSD サービスのみを使用します。同じシステムでキャッシュ用に Name Service Caching Daemon (NSCD) と SSSD の両方を実行すると、パフォーマンスの問題や競合が発生する可能性があります。
3.2. SSSD を使用する利点 リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) を使用すると、ユーザーアイデンティティーの取得とユーザー認証に関してさまざまな利点が得られます。
- オフライン認証
- SSSD は、必要に応じて、リモートプロバイダーから取得したユーザー ID および認証情報のキャッシュを保持します。この設定では、セッションの開始時にすでにリモートプロバイダーに対して一度認証されている場合は、リモートプロバイダーまたはクライアントがオフラインであってもリソースに対して正常に認証できます。
- 単一のユーザーアカウント: 認証プロセスの一貫性の向上
SSSD では、オフライン認証用に中央アカウントとローカルユーザーアカウントの両方を維持する必要はありません。条件は次のとおりです。
- 特定のセッションでは、ユーザーが最低でも一度ログインしている必要があります。ユーザーが初めてログインしたときに、クライアントはリモートプロバイダーに接続する必要があります。
SSSD でキャッシュを有効にする必要があります。
SSSD を使用しないと、リモートユーザーには、多くの場合、複数のユーザーアカウントが存在します。たとえば、仮想プライベートネットワーク (VPN) に接続するには、リモートユーザーが、ローカルシステム用のアカウントのほかに、VPN システム用の別のアカウントが必要になります。このシナリオでは、最初にプライベートネットワーク上で認証して、リモートサーバーからユーザーを取得し、ユーザー認証情報をローカルでキャッシュする必要があります。
SSSD では、キャッシュおよびオフライン認証により、リモートユーザーはローカルマシンに認証することで、ネットワークリソースに接続できます。SSSD は次にネットワークの認証情報を維持します。
- ID プロバイダーおよび認証プロバイダーへの負荷の軽減
- 情報をリクエストすると、クライアントはまずローカルの SSSD キャッシュを確認します。SSSD は、キャッシュで情報が利用できない場合に限り、リモートプロバイダーに問い合わせます。
3.3. クライアントごとに複数の SSSD 設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
SSSD のデフォルト設定ファイルは /etc/sssd/sssd.conf です。このファイルとは別に、SSSD は、/etc/sssd/conf.d/ ディレクトリーが *.conf ファイルのすべてからその設定を読み取ることができます。
この組み合わせにより、すべてのクライアントでデフォルトの /etc/sssd/sssd.conf ファイルを使用し、追加の設定ファイルに追加設定を追加して、クライアントごとに機能を個別に拡張できます。
SSSD は、以下の順番で設定ファイルを読み取ります。
-
プライマリー
/etc/sssd/sssd.confファイル。 -
/etc/sssd/conf.d/内のその他の*.confファイル。これらのファイルはアルファベット順に処理されます。
同じパラメーターが複数の設定ファイルに表示されると、SSSD は最後に読み取るパラメーターを使用します。
SSSD は、conf.d ディレクトリー内の隠しファイル (. で始まるファイル) を読み込みません。
3.4. SSSD の ID プロバイダーおよび認証プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
SSSD クライアントは、外部 ID および認証プロバイダー (LDAP ディレクトリー、Identity Management (IdM)、Active Directory (AD) ドメイン、Kerberos レルムなど) に接続できます。次に、SSSD クライアントは SSSD プロバイダーを使用して ID および認証リモートサービスにアクセスします。SSSD が、異なる ID プロバイダーおよび認証プロバイダー、またはそれらの組み合わせを使用するように設定できます。
3.4.1. SSSD ドメインとしてのアイデンティティーおよび認証プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
アイデンティティーおよび認証プロバイダーは、SSSD 設定ファイル /etc/sssd/sssd.conf で ドメイン として設定します。プロバイダーは、ファイルの [domain/<domain_name>] または [domain/default] セクションにリストします。
1 つのドメインを次のいずれかのプロバイダーとして設定できます。
UID や GID などのユーザー情報を提供する アイデンティティープロバイダー。
-
ドメインを アイデンティティープロバイダー として指定するには、
/etc/sssd/sssd.confファイルの[domain/<domain_name>]セクションでid_providerオプションを使用します。
-
ドメインを アイデンティティープロバイダー として指定するには、
認証要求を処理する 認証プロバイダー
-
ドメインを 認証プロバイダー として指定するには、
/etc/sssd/sssd.confの[domain/<domain_name>]セクションでauth_providerオプションを使用します。
-
ドメインを 認証プロバイダー として指定するには、
認可要求を処理する アクセス制御プロバイダー
-
ドメインを アクセス制御プロバイダー として指定するには、
/etc/sssd/sssd.confの[domain/<domain_name>]セクションでaccess_providerオプションを使用します。デフォルトでは、オプションはpermitに設定されており、常にすべてのアクセスを許可します。詳細は sssd.conf(5) man ページを参照してください。
-
ドメインを アクセス制御プロバイダー として指定するには、
対応するすべての操作が 1 台のサーバー内で実行される場合など、これらのプロバイダーの組み合わせ
-
この場合、
id_provider、auth_provider、access_providerオプションはすべて、/etc/sssd/sssd.confの同じ[domain/<domain_name>]または[domain/default]セクションにリストします。
-
この場合、
SSSD に複数のドメインを設定できます。少なくともいずれかのドメインを設定する必要があります。設定しないと、SSSD は起動しません。
3.4.2. プロキシープロバイダー リンクのコピーリンクがクリップボードにコピーされました!
プロキシープロバイダーは、SSSD と、SSSD が直接アクセスできないリソース間の中間リレーとして機能します。プロキシープロバイダーを使用する場合、SSSD はプロキシーサービスに接続し、プロキシーは指定されたライブラリーを読み込みます。
SSSD がプロキシープロバイダーを使用して以下を有効にするように設定できます。
- 指紋スキャナーなどの別の認証方法
- NIS などのレガシーシステム
-
/etc/passwdファイルで ID プロバイダーとして定義されるローカルシステムアカウントと、Kerberos などのリモート認証プロバイダー - スマートカードを使用したローカルユーザーの認証
3.4.3. 利用可能なアイデンティティーおよび認証プロバイダーの組み合わせ リンクのコピーリンクがクリップボードにコピーされました!
次のアイデンティティープロバイダーと認証プロバイダーの組み合わせを使用するように SSSD を設定できます。
第4章 LDAP を使用し、TLS 認証を必要とする SSSD の設定 リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) は、Red Hat Enterprise Linux ホストで ID データの取得と認証を管理するデーモンです。システム管理者は、スタンドアロンの LDAP サーバーをユーザーアカウントデータベースとして使用するようにホストを設定できます。管理者は、LDAP サーバーとの接続を TLS 証明書で暗号化する必要があるという要件も指定できます。
TLS を強制する SSSD 設定オプション ldap_id_use_start_tls のデフォルトは false です。ID 検索に TLS なしで ldap:// を使用すると、攻撃ベクトル、つまり中間者 (MITM) 攻撃のリスクが発生します。これにより、LDAP 検索で返されるオブジェクトの UID または GID を変更することで、ユーザーの権限を借用する可能性があります。
セットアップが信頼できる環境で動作していることを確認し、id_provider = ldap に暗号化されていない通信を使用しても安全かどうかを判断してください。注記: id_provider = ad および id_provider = ipa は、SASL および GSSAPI によって保護された暗号化接続を使用するため、影響を受けません。
暗号化されていない通信を使用することが安全ではない場合は、/etc/sssd/sssd.conf ファイルで ldap_id_use_start_tls オプションを true に設定して TLS を強制する必要があります。
4.1. SSSD を使用して、暗号化された方法で LDAP からデータを取得する OpenLDAP クライアント リンクのコピーリンクがクリップボードにコピーされました!
LDAP オブジェクトの認証方法は、Kerberos パスワードまたは LDAP パスワードのいずれかになります。LDAP オブジェクトの認証および認可に関する質問は、ここでは扱いません。
LDAP で SSSD を設定するのは、SSSD および LDAP で高度な専門知識を必要とする複雑な手順です。代わりに、Active Directory や Red Hat Identity Management (IdM) などの統合型の自動ソリューションを使用することを検討してください。IdM の詳細は、Identity Management の計画 を参照してください。
4.2. LDAP を使用し、TLS 認証を必要とする SSSD の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、Red Hat Enterprise Linux (RHEL) システムを OpenLDAP クライアントとして設定します。
以下のクライアント設定を使用します。
- RHEL システムが OpenLDAP ユーザーアカウントデータベースに保存されているユーザーを認証する。
- RHEL システムが SSSD (System Security Services Daemon) サービスを使用してユーザーデータを取得する。
- RHEL システムが TLS で暗号化された接続で OpenLDAP サーバーと通信する。
または、この手順に従って、RHEL システムを Red Hat Directory Server のクライアントとして設定することもできます。
前提条件
- OpenLDAP サーバーがインストールされ、ユーザー情報を含めて設定されている。
- LDAP クライアントとして設定するホストの root 権限がある。
-
LDAP クライアントとして設定するホストで、
/etc/sssd/sssd.confファイルが作成され、ldapをautofs_providerおよびid_providerとして指定するように設定されている。 -
OpenLDAP サーバー証明書を発行した認証局からの PEM 形式の証明書チェーンがあり、
core-dirsrv.ca.pemという名前のローカルファイルに保存されている。
手順
必要なパッケージをインストールします。
# dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir認証プロバイダーを
sssdに切り替えます。# authselect select sssd with-mkhomedirOpenLDAP サーバーの SSL/TLS 証明書を発行した認証局からのルート CA 署名証明書チェーンを含む
core-dirsrv.ca.pemファイルを/etc/openldap/certsフォルダーにコピーします。# cp core-dirsrv.ca.pem /etc/openldap/certsLDAP サーバーの URL と接尾辞を
/etc/openldap/ldap.confファイルに追加します。URI ldap://ldap-server.example.com/ BASE dc=example,dc=com/etc/openldap/ldap.confファイルで、/etc/openldap/certs/core-dirsrv.ca.pemを参照する TLS_CACERT パラメーターの行を追加します。# When no CA certificates are specified the Shared System Certificates # are in use. In order to have these available along with the ones specified # by TLS_CACERTDIR one has to include them explicitly: TLS_CACERT /etc/openldap/certs/core-dirsrv.ca.pem/etc/sssd/sssd.confファイルで、環境の値をldap_uriパラメーターおよびldap_search_baseパラメーターに追加し、ldap_id_use_start_tlsをTrueに設定します。[domain/default] id_provider = ldap autofs_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://ldap-server.example.com/ ldap_search_base = dc=example,dc=com ldap_id_use_start_tls = True cache_credentials = True ldap_tls_cacertdir = /etc/openldap/certs ldap_tls_reqcert = allow [sssd] services = nss, pam, autofs domains = default [nss] homedir_substring = /home …/etc/sssd/sssd.confで、[domain]セクションのldap_tls_cacertおよびldap_tls_reqcertの値を変更して TLS 認証要件を指定します。… cache_credentials = True ldap_tls_cacert = /etc/openldap/certs/core-dirsrv.ca.pem ldap_tls_reqcert = hard …/etc/sssd/sssd.confファイルの権限を変更します。# chmod 600 /etc/sssd/sssd.confSSSD サービスおよび
oddjobdデーモンを再起動して有効にします。# systemctl restart sssd oddjobd # systemctl enable sssd oddjobdオプション: LDAP サーバーが非推奨の TLS 1.0 または TLS 1.1 プロトコルを使用している場合は、クライアントシステムのシステム全体の暗号化ポリシーを LEGACY レベルに切り替えて、RHEL がこのプロトコルを使用して通信できるようにします。
# update-crypto-policies --set LEGACY詳細は、Red Hat カスタマーポータルのナレッジベース記事 Strong crypto defaults in RHEL 8 and deprecation of weak crypto algorithms、およびシステム上の
update-crypto-policies(8)man ページを参照してください。
検証
idコマンドを使用し、LDAP ユーザーを指定して、LDAP サーバーからユーザーデータを取得できることを確認します。# id <ldap_user> uid=17388( <ldap_user>) gid=45367(sysadmins) groups=45367(sysadmins),25395(engineers),10(wheel),1202200000(admins)
システム管理者は、id コマンドを使用して LDAP からユーザーをクエリーできるようになりました。このコマンドは、正しいユーザー ID とグループメンバーシップを返します。
第5章 ID プロバイダーおよび認証プロバイダーの追加設定 リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) は、リモートディレクトリーと認証メカニズムにアクセスするためのシステムサービスです。SSSD の主な設定ファイルは /etc/sssd/sssd.conf です。この章では、/etc/sssd/sssd.conf ファイルを次のように変更して、SSSD サービスおよびドメインを設定する方法を概説します。
- オフライン認証を有効にするため、SSSD による完全なユーザー名の解釈と出力方法を調整します。
- DNS サービスディスカバリー、シンプルアクセスプロバイダールール、および SSSD が LDAP アクセスフィルターを適用するように設定します。
5.1. SSSD が完全なユーザー名を解釈する方法の調整 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、完全なユーザー名の文字列を解析して、ユーザー名とドメインコンポーネントにします。デフォルトでは、SSSD は Python 構文の次の正規表現に基づいて、<user_name>@<domain_name> という形式の完全なユーザー名を解釈します。
(?P_<name>_[^@]+)@?(?P_<domain>_[^@]*$)
Identity Management および Active Directory プロバイダーの場合、デフォルトのユーザー名の形式は <user_name>@<domain_name> または <NetBIOS_name>\<user_name> です。
SSSD による完全なユーザー名の解釈方法は、re_expression オプションを /etc/sssd/sssd.conf ファイルに追加し、カスタム正規表現を定義することで調整できます。
前提条件
-
rootアクセス
手順
-
/etc/sssd/sssd.confファイルを開きます。 re_expressionオプションを使用して、カスタムの正規表現を定義します。すべてのドメインに対して正規表現をグローバルに定義するには、
sssd.confファイルの[sssd]セクションにre_expressionを追加します。次の glob 表現を使用して、ユーザー名を
<domain>\_<username>_または<domain>@<user_name>という形式で定義できます。[sssd] [... file truncated ...] re_expression = (?P_<domain>_[\\]*?)\\?(?P_<name>_[\\]+$)特定のドメインに個別に正規表現を定義するには、
sssd.confファイルの対応するドメインセクションにre_expressionを追加します。次の glob 表現を使用して、LDAP ドメインのユーザー名を
<domain>\_<username>_または<domain>@<user_name>という形式で定義できます。[domain/LDAP] [... file truncated ...] re_expression = (?P_<domain>_[\\]*?)\\?(?P_<name>_[\\]+$)
5.2. SSSD が完全なユーザー名を出力する方法の調整 リンクのコピーリンクがクリップボードにコピーされました!
/etc/sssd/sssd.conf ファイルで use_fully_qualified_names オプションが有効になっている場合、SSSD はデフォルトで次の拡張に基づいて、<name>@<domain> という形式で完全なユーザー名を出力します。
%1$s@%2$s
use_fully_qualified_names が設定されていない場合や、信頼されるドメインに対して明示的に false に設定されている場合に、ドメインコンポーネントのないユーザー名のみを出力します。
full_name_format オプションを /etc/sssd/sssd.conf ファイルに追加してカスタム拡張を定義することで、SSSD による完全なユーザー名の出力形式を調整できます。
前提条件
-
rootアクセス
手順
-
rootとして/etc/sssd/sssd.confファイルを開きます。 すべてのドメインに対してグローバルに拡張を定義するには、
sssd.confの[sssd]セクションにfull_name_formatを追加します。[sssd] [... file truncated ...] full_name_format = %1$s@%2$sこの場合、ユーザー名は
user@domain.testと表示されます。特定のドメインのユーザー名出力形式を定義するには、
sssd.confの対応するドメインセクションにfull_name_formatを追加します。%2$s\%1$sを使用して Active Directory (AD) ドメインの拡張を設定するには、以下を実行します。[domain/ad.domain] [... file truncated ...] full_name_format = %2$s\%1$sこの場合、ユーザー名は
ad.domain\userと表示されます。%3$s\%1$sを使用して Active Directory (AD) ドメインの拡張を設定するには、以下を実行します。[domain/ad.domain] [... file truncated ...] full_name_format = %3$s\%1$sこの場合、Active Directory ドメインのフラットドメイン名が
ADに設定されている場合、ユーザー名はAD\userと表示されます。
注記SSSD は、名前の設定で名前のドメインコンポーネントを削除できるため、認証エラーが発生する可能性があります。
full_name_formatを標準以外の値に設定すると、これを標準形式に変更するように要求する警告が表示されます。
5.3. オフライン認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、デフォルトでは、ユーザーの認証情報をキャッシュしません。認証要求の処理時に、SSSD は常にアイデンティティープロバイダーに問い合わせします。プロバイダーが利用できない場合は、ユーザー認証に失敗します。
アイデンティティープロバイダーが利用できない場合にユーザーが認証できるようにするには、/etc/sssd/sssd.conf ファイルで cache_credentials を true に設定して認証情報キャッシュを有効にできます。キャッシュされた認証情報とは、パスワードと、2 要素認証が使用されている場合の最初の認証要素を指します。パスキー認証とスマートカード認証の場合、cache_credentials を true に設定したり、追加の設定を行ったりする必要はありません。正常に実行されたオンライン認証がキャッシュに記録されている限り、オフラインでも動作するはずです。
SSSD は、パスワードをプレーンテキストでキャッシュしません。パスワードのハッシュのみを保存します。
認証情報はソルト付きの SHA-512 ハッシュとして保存されますが、攻撃者がブルートフォース攻撃を使用してキャッシュファイルにアクセスし、パスワードを解読できた場合、セキュリティーリスクが生じる可能性があります。キャッシュファイルにアクセスするには、RHEL のデフォルトである特権アクセスが必要です。
前提条件
-
rootアクセス
手順
-
/etc/sssd/sssd.confファイルを開きます。 ドメインセクションで、
cache_credentials = true設定を追加します。[domain/<domain_name>] cache_credentials = true推奨 (任意): アイデンティティープロバイダーが利用できない場合に SSSD がオフライン認証を許可する期間の制限を設定します。
- SSSD と連携するように PAM サービスを設定します。
offline_credentials_expirationオプションを使用して、時間制限を指定します。制限は日単位で設定されることに注意してください。
たとえば、最終ログインに成功してから 3 日間、オフライン認証を可能にするには、以下を使用します。
[pam] offline_credentials_expiration = 3
5.4. DNS サービスディスカバリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
DNS サービス検出を使用すると、アプリケーションが特定タイプの特定サービスに対して指定のドメインの SRV レコードを確認し、必要なタイプのサーバーを返すことができます。ID または認証サーバーが /etc/sssd/sssd.conf ファイルで明示的に定義されていない場合は、SSSD は DNS サービス検出を使用してサーバーを動的に検出できます。
たとえば、sssd.conf に id_provider = ldap 設定が含まれているものの、ldap_uri オプションでホスト名または IP アドレスが指定されていない場合に、SSSD は DNS サービス検出を使用してサーバーを動的に検出します。
SSSD が検出するのは、プライマリーサーバーのみで、バックアップサーバーを動的には検出できません。
前提条件
-
rootアクセス
手順
-
/etc/sssd/sssd.confファイルを開きます。 プライマリーサーバーの値を
_srv_に設定します。LDAP プロバイダーの場合、プライマリーサーバーは
ldap_uriオプションを使用して設定されます。[domain/<ldap_domain_name>] id_provider = ldap ldap_uri = _srv_パスワード変更プロバイダーでサービス検出を有効にするには、サービスタイプを設定します。
[domain/<ldap_domain_name>] id_provider = ldap ldap_uri = _srv_ chpass_provider = ldap ldap_chpass_dns_service_name = ldap-
オプション: デフォルトでは、サービス検出はシステムホスト名のドメイン部分をドメイン名として使用します。別の DNS ドメインを使用するには、
dns_discovery_domainオプションを使用してドメイン名を指定します。 -
オプション: デフォルトでは、サービス検出は LDAP サービスタイプをスキャンします。別のサービスタイプを使用するには、
ldap_dns_service_nameオプションを使用してタイプを指定します。 -
オプション: デフォルトでは、SSSD は IPv4 アドレスの検索を試みます。試行に失敗すると、SSSD は IPv6 アドレスの検索を試行します。この動作をカスタマイズするには、
lookup_family_orderオプションを使用します。 サービス検出を使用するすべてのサービスについて、DNS レコードを DNS サーバーに追加します。
_<service_name>.<protocol>.<domain_name> <TTL> <priority> <weight> <port_number> <hostname>_
5.5. simple アクセスプロバイダールールの設定 リンクのコピーリンクがクリップボードにコピーされました!
simple アクセスプロバイダーは、ユーザー名またはグループのリストに基づいてアクセスを許可または拒否します。これにより、特定のマシンへのアクセスを制限できます。
たとえば、simple アクセスプロバイダーを使用して、特定のユーザーまたはグループへのアクセスを制限できます。他のユーザーまたはグループは、設定済みの認証プロバイダーに対して正常に認証されている場合でもログインできません。
前提条件
-
rootアクセス
手順
-
/etc/sssd/sssd.confファイルを開きます。 access_providerオプションをsimpleに設定します。[domain/<domain_name>] access_provider = simpleユーザーのアクセス制御ルールを定義します。
-
ユーザーへのアクセスを許可するには、
simple_allow_usersオプションを使用します。 -
ユーザーへのアクセスを拒否するには、
simple_deny_usersオプションを使用します。
重要特定のユーザーへのアクセスを拒否する場合には、他のユーザーすべてにアクセスを自動的に許可します。特定ユーザーにアクセスを許可する方が拒否するよりも安全であると考えられます。
-
ユーザーへのアクセスを許可するには、
グループのアクセス制御ルールを定義します。以下のいずれかを選択します。
-
グループへのアクセスを許可するには、
simple_allow_groupsオプションを使用します。 グループへのアクセスを拒否するには、
simple_deny_groupsオプションを使用します。重要特定のグループへのアクセスを拒否する場合には、他のグループすべてに、アクセスを自動的に許可します。特定グループにアクセスを許可する方が拒否するよりも安全であると考えられます。
たとえば、
alice、bob、およびengineersグループのメンバーにアクセスを許可し、他の全ユーザーのアクセスを拒否することができます。[domain/<domain_name>] access_provider = simple simple_allow_users = alice, bob simple_allow_groups = engineers重要拒否リストを空にすると、すべてのユーザーがアクセスできるようになります。
注記信頼できる AD ユーザーを
simple_allow_usersリストに追加する場合は、必ず完全修飾ドメイン名 (FQDN) 形式 (例: aduser@ad.example.com) を使用してください。異なるドメインの短縮名は同じである可能性があるため、これによりアクセス制御設定に関する問題が回避されます。-
グループへのアクセスを許可するには、
5.6. LDAP アクセスフィルターを適用するための SSSD 設定 リンクのコピーリンクがクリップボードにコピーされました!
/etc/sssd/sssd.conf で access_provider オプションが設定されている場合に、SSSD は指定されたアクセスプロバイダーを使用して、システムにアクセスできるユーザーを評価します。使用しているアクセスプロバイダーが LDAP プロバイダータイプの拡張である場合は、システムへのアクセス許可用にユーザーが一致する必要がある LDAP アクセス制御フィルターを指定することもできます。
たとえば、Active Directory (AD) サーバーをアクセスプロバイダーとして使用する場合は、Linux システムへのアクセスを制限できます。指定されたフィルターに該当しない他のユーザーはすべて、アクセスが拒否されます。
アクセスフィルターは LDAP ユーザーエントリーにのみ適用されます。そのため、ネスト化されたグループでこのタイプのアクセス制御を使用すると機能しない可能性があります。ネストされたグループにアクセス制御を適用するには、simple アクセスプロバイダールールの設定 を参照してください。
オフラインキャッシュを使用する場合、SSSD は、ユーザーが最後にオンラインログインの試行に成功したかどうかを確認します。直近のオンラインログイン中に正常にログインしたユーザーは、アクセスフィルターに一致しない場合でも、オフラインでログインできるようになります。
前提条件
-
rootアクセス
手順
-
/etc/sssd/sssd.confファイルを開きます。 [domain]セクションで、アクセス制御フィルターを指定します。-
LDAP の場合は、
ldap_access_filterオプションを使用します。 AD の場合は、
ad_access_filterオプションを使用します。さらに、ad_gpo_access_controlオプションをdisabledに設定して、GPO ベースのアクセス制御を無効にする必要があります。たとえば、
adminsユーザーグループに属し、属性セットがunixHomeDirectoryの AD ユーザーにのみアクセスを許可するには、以下を使用します。[domain/<ad_domain_name>] access provider = ad [... file truncated ...] ad_access_filter = (&(memberOf=cn=admins,ou=groups,dc=example,dc=com)(unixHomeDirectory=*)) ad_gpo_access_control = disabledSSSD は、エントリーの
authorizedServiceまたはhost属性により結果を確認することもできます。実際、ユーザーエントリーおよび設定に応じて、全オプションの MDASH LDAP フィルター、authorizedServiceおよびhostの MDASH を評価できます。ldap_access_orderパラメーターは、評価すべき順に、使用するアクセスコントロールの手法をすべて表示します。[domain/example.com] access_provider = ldap ldap_access_filter = memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com ldap_access_order = filter, host, authorized_service
-
LDAP の場合は、
第6章 SSSD クライアント側のビュー リンクのコピーリンクがクリップボードにコピーされました!
SSSD には sss_override ユーティリティーがあるので、ローカルマシンに固有の POSIX ユーザーまたはグループ属性の値を表示するローカルビューを作成できます。ipa を除くすべての id_provider 値のオーバーライドを設定できます。
ipa プロバイダーを使用している場合は、IPA で ID ビューを一元的に定義します。詳細は、ID ビューを使用した IdM クライアントのユーザー属性値のオーバーライド を参照してください。
SSSD のパフォーマンスに与える可能性のある悪影響は、SSSD パフォーマンスにおける ID ビューによる悪影響の可能性 を参照してください。
6.1. LDAP ユーザー名属性のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
管理者は、LDAP のアカウントを使用するように既存のホストを設定できます。しかし、LDAP 内のユーザーの値 (名前、UID、GID、ホームディレクトリー、シェル) が、ローカルシステム上の値と異なる場合があります。ローカルの username を定義することで、LDAP の username 属性をオーバーライドできます。
前提条件
-
rootアクセス -
sssd-toolsパッケージがインストールされている。
手順
ユーザーの現在の情報を表示します。
# id <ldap_username><ldap_username>は、ユーザーの LDAPusernameに置き換えます。以下に例を示します。# id sjones uid=1001(sjones) gid=6003 groups=6003,10(wheel)ローカルユーザー名を追加します。
# sss_override user-add <ldap_username> -n <local_username><ldap_username>は、LDAPusernameに置き換えます。<local_username>は、目的のローカルユーザー名に置き換えます。以下に例を示します。# sss_override user-add sjones -n sarahsss_override user-addコマンドを使用して最初のオーバーライドを作成したら、SSSD を再起動して変更を反映します。# systemctl restart sssd
検証
ローカルユーザー名が追加されたことを確認します。
# id <local_username>以下に例を示します。
# id sarah uid=1001(sjones) gid=6003(sjones) groups=6003(sjones),10(wheel) # sss_override user-show sjones user@ldap.example.com:sarah::::::オプション: ユーザーのオーバーライドを表示します。
# sss_override user-show <ldap_username> user@ldap.example.com:_<local_username>_::::::
6.2. LDAP UID 属性のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
管理者は、LDAP のアカウントを使用するように既存のホストを設定できます。しかし、LDAP 内のユーザーの値 (名前、UID、GID、ホームディレクトリー、シェル) が、ローカルシステム上の値と異なる場合があります。次の手順で別の UID を定義することにより、LDAP UID 属性をオーバーライドできます。
前提条件
-
rootアクセス -
sssd-toolsパッケージがインストールされている。
手順
ユーザーの現在の UID を表示します。
# id -u <ldap_username><ldap_username>は、ユーザーの LDAPusernameに置き換えます。以下に例を示します。# id -u sarah 1001ユーザーのアカウントの UID をオーバーライドします。
# sss_override user-add <ldap_username> -u <local_uid><ldap_username>は、ユーザーの LDAPusernameに置き換えます。<local_uid>は、新しい UID 番号に置き換えます。以下に例を示します。# sss_override user-add sarah -u 6666インメモリーキャッシュを失効させます。
# sss_cache --userssss_override user-addコマンドを使用して最初のオーバーライドを作成したら、SSSD を再起動して変更を反映します。# systemctl restart sssd
検証
ローカル UID が適用されていることを確認します。
# id -u <ldap_username>オプション: ユーザーのオーバーライドを表示します。
# sss_override user-show <ldap_username> user@ldap.example.com::_<local_uid>_:::::
6.3. LDAP GID 属性のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
管理者は、LDAP のアカウントを使用するように既存のホストを設定できます。しかし、LDAP 内のユーザーの値 (名前、UID、GID、ホームディレクトリー、シェル) が、ローカルシステム上の値と異なる場合があります。次の手順で別の GID を定義することにより、LDAP の GID 属性をオーバーライドできます。
前提条件
-
rootアクセス -
sssd-toolsがインストールされている
手順
ユーザーの現在の GID を表示します。
# id -g <ldap_username><ldap_username>は、ユーザー名に置き換えます。以下に例を示します。# id -g sarah 6003ユーザーのアカウントの GID をオーバーライドします。
# sss_override user-add <ldap_username> -g <local_gid><ldap_username>は、ユーザー名に置き換えます。<local_gid>は、ローカル GID 番号に置き換えます。以下に例を示します。# sss_override user-add sarah -g 6666インメモリーキャッシュを失効させます。
# sss_cache --userssss_override user-addコマンドを使用して最初のオーバーライドを作成したら、SSSD を再起動して変更を反映します。# systemctl restart sssd
検証
ローカル GID が適用されていることを確認します。
# id -g <ldap_username>オプション: ユーザーのオーバーライドを表示します。
# sss_override user-show <ldap_username> user@ldap.example.com::: 6666::::
6.4. LDAP ホームディレクトリー属性のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
管理者は、LDAP のアカウントを使用するように既存のホストを設定できます。しかし、LDAP 内のユーザーの値 (名前、UID、GID、ホームディレクトリー、シェル) が、ローカルシステム上の値と異なる場合があります。別のホームディレクトリーを定義することで、LDAP ホームディレクトリー属性をオーバーライドできます。
前提条件
-
rootアクセス -
sssd-toolsがインストールされている
手順
ローカルに保存れているユーザーの現在のホームディレクトリーを表示します。
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<home_directory>:/bin/bash<ldap_username>は、ユーザー名に置き換えます。ローカルで表示されるとおりのホームディレクトリーの値が出力に表示されます。この値は LDAP レコードとは異なる場合があります。以下に例を示します。# getent passwd sarah sarah:x:1001:6003::sarah:/bin/bashユーザーのホームディレクトリーをオーバーライドします。
# sss_override user-add <ldap_username> -h <new_home_directory><ldap_username>は、ユーザー名に置き換えます。<new_home_directory>は、新しいホームディレクトリーに置き換えます。以下に例を示します。# sss_override user-add sarah -h adminSSSD を再起動して変更を適用します。
# systemctl restart sssd
検証
新しいホームディレクトリーが定義されていることを確認します。
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<new_home_directory>:/bin/bashオプション: ユーザーのオーバーライドを表示します。
# sss_override user-show <ldap_username> user@ldap.example.com:::::::<new_home_directory>::
6.5. LDAP シェル属性のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
管理者は、LDAP のアカウントを使用するように既存のホストを設定できます。しかし、LDAP 内のユーザーの値 (名前、UID、GID、ホームディレクトリー、シェル) が、ローカルシステム上の値と異なる場合があります。別のシェルを定義することで、LDAP シェル属性をオーバーライドできます。
前提条件
-
rootアクセス -
sssd-toolsがインストールされている
手順
ローカルに保存されているユーザーの現在のシェルを表示します。
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<home_directory>:_<currentshell>_<ldap_username>は、ユーザー名に置き換えます。ユーザーのシェルをオーバーライドします。
# sss_override user-add <ldap_username> -s <new_shell><ldap_username>は、ユーザー名に置き換えます。<new_shell>は、新しいシェルに置き換えます。SSSD を再起動して変更を適用します。
# systemctl restart sssd
検証
新しいシェルが定義されていることを確認します。
# getent passwd <ldap_username> <ldap_username>:x:XXXX:XXXX::/home/<home_directory>:_<new_shell>_オプション: ユーザーのオーバーライドを表示します。
# sss_override user-show <ldap_username> user@ldap.example.com::::::_<new_shell>_:たとえば、ユーザー
sarahのシェルを/bin/bashからsbin/nologinに変更するには、次のコマンドを実行します。ユーザー
sarahの現在のシェルを表示します。# getent passwd sarah sarah:x:1001:6003::sarah:/bin/bashユーザー sarah のシェルを新しい
/sbin/nologinシェルでオーバーライドします。# sss_override user-add sarah -s /sbin/nologinSSSD を再起動して変更を適用します。
# systemctl restart sssd新しいシェルが定義されており、ユーザーのオーバーライドが正しく表示されることを確認します。
# getent passwd sarah sarah:x:1001:6003::sarah:/sbin/nologin # sss_override user-show sarah user@ldap.example.com::::::/sbin/nologin:
6.6. ホストのオーバーライドのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、ホスト上の全ユーザーおよびグループのオーバーライドをリスト表示して、正しい属性がオーバーライドされていることを確認できます。
前提条件
-
rootアクセス -
sssd-toolsがインストールされている
手順
すべてのユーザーのオーバーライドをリスト表示します。
# sss_override user-find user1@ldap.example.com::8000::::/bin/zsh: user2@ldap.example.com::8001::::/bin/bash: ...すべてのグループのオーバーライドをリスト表示します。
# sss_override group-find group1@ldap.example.com::7000 group2@ldap.example.com::7001 ...
6.7. ローカルのオーバーライドの削除 リンクのコピーリンクがクリップボードにコピーされました!
グローバル LDAP ディレクトリーで定義されているローカルオーバーライドを削除できます。
前提条件
-
rootアクセス -
sssd-toolsがインストールされている
手順
ユーザーアカウントのオーバーライドを削除するには、次のコマンドを使用します。
# sss_override user-del <local_username><local_username> は、ユーザー名に置き換えます。変更はすぐに有効になります。
グループのオーバーライドを削除するには、次のコマンドを使用します。
# sss_override group-del <group_name>sss_override user-delまたはsss_override group-delコマンドを使用して最初のオーバーライドを削除したら、SSSD を再起動して変更を反映します。# systemctl restart sssdユーザーまたはグループのオーバーライドを削除すると、このオブジェクトのオーバーライドがすべて削除されます。
6.8. ローカルビューのエクスポートおよびインポート リンクのコピーリンクがクリップボードにコピーされました!
ローカルのオーバーライドは、ローカルの SSSD キャッシュに保存されています。このキャッシュからファイルにユーザーおよびグループのオーバーライドをエクスポートして、バックアップを作成できます。バックアップを作成することでキャッシュが削除されても、後で設定を復元できます。
前提条件
-
rootアクセス -
sssd-toolsがインストールされている
手順
ユーザーおよびグループビューのバックアップを作成するには、以下を使用します。
# sss_override user-export /var/lib/sss/backup/sssd_user_overrides.bak # sss_override group-export /var/lib/sss/backup/sssd_group_overrides.bakユーザーおよびグループビューを復元するには、以下を使用します。
# sss_override user-import /var/lib/sss/backup/sssd_user_overrides.bak # sss_override group-import /var/lib/sss/backup/sssd_group_overrides.bak
第7章 AD を認証プロバイダーとして使用する RHEL ホストの設定 リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、ホストを Active Directory (AD) に参加させることなく、Red Hat Enterprise Linux (RHEL) ホストの認証プロバイダーとして AD を使用できます。
この方法は、次の場合に使用してください。
- AD 管理者がホストの有効化と無効化を制御できないようにする必要がある。
- そのホスト (企業 PC) は、社内で 1 人のユーザーのみが使用する予定である。
この方法は、ホストを AD に参加させない特別な理由がある場合にのみ使用してください。
代わりに、システムを AD または Red Hat Identity Management (IdM) に完全に参加させることを検討してください。RHEL ホストをドメインに参加させると、設定を簡単に管理できます。クライアントを直接 AD に参加させることに関連するクライアントアクセスライセンスについて懸念がある場合は、AD との信頼関係にある IdM サーバーを活用することを検討してください。IdM-AD 信頼の詳細は、IdM と AD 間のフォレスト間信頼の計画 を参照してください。
この手順を完了すると、AD_user が example.com ドメインの AD ユーザーデータベースに設定されたパスワードを使用して rhel_host システムにログインできるようになります。Kerberos レルム EXAMPLE.COM は example.com ドメインに対応します。
前提条件
- rhel_host への root アクセスがある。
- AD_user ユーザーアカウントが example.com ドメインにある。
- Kerberos レルムが EXAMPLE.COM である。
-
realm joinコマンドを使用して rhel_host が AD に参加していない。 sssd-proxyパッケージがインストールされている。# dnf install sssd-proxy
手順
パスワードを割り当てずに、AD_user ユーザーアカウントをローカルに作成します。
# useradd AD_user/etc/nsswitch.confファイルを開いて編集し、以下の行が含まれていることを確認します。passwd: sss files systemd group: sss files systemd shadow: files sss/etc/krb5.confファイルを開いて編集し、以下のセクションと項目が含まれるようにします。# To opt out of the system crypto-policies configuration of krb5, remove the # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated. includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt spake_preauth_groups = edwards25519 default_realm = EXAMPLE.COM default_ccache_name = KEYRING:persistent:%{uid} [realms] EXAMPLE.COM = { kdc = ad.example.com admin_server = ad.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM/etc/sssd/sssd.confファイルを作成し、以下のセクションと行をそのファイルに追加します。[sssd] services = nss, pam domains = EXAMPLE.COM [domain/EXAMPLE.COM] id_provider = proxy proxy_lib_name = files auth_provider = krb5 krb5_realm = EXAMPLE.COM krb5_server = ad.example.com/etc/sssd/sssd.confファイルの権限を変更します。# chmod 600 /etc/sssd/sssd.confSSSD (Security System Services Daemon) を起動します。
# systemctl start sssdSSSD を有効にします。
# systemctl enable sssd/etc/pam.d/system-authファイルを開き、以下のセクションと行が含まれるように変更します。# Generated by authselect on Wed May 8 08:55:04 2019 # Do not modify this file manually. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so/etc/pam.d/system-authファイルの内容を/etc/pam.d/password-authファイルにコピーします。yes と入力して、ファイルの現在の内容を上書きします。# cp /etc/pam.d/system-auth /etc/pam.d/password-auth cp: overwrite '/etc/pam.d/password-auth'? yes
検証
AD_user 用の Kerberos チケット保証チケット (TGT) を要求します。AD_user のパスワードを必要に応じて入力します。
# kinit AD_user Password for AD_user@EXAMPLE.COM:取得した TGT を表示します。
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: AD_user@EXAMPLE.COM Valid starting Expires Service principal 11/02/20 04:16:38 11/02/20 14:16:38 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 18/02/20 04:16:34
AD_user は、Kerberos ドメイン EXAMPLE.COM の認証情報を使用して rhel_host に正常にログインしました。
第8章 SSSD を使用したホストのユーザーアクセスに関するレポート リンクのコピーリンクがクリップボードにコピーされました!
SSSD (Security System Services Daemon) は、どのユーザーがクライアントにアクセスできるか、できないかを追跡します。この章では、sssctl ツールを使用してアクセス制御レポートを作成し、ユーザーデータを表示する方法を説明します。
8.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- SSSD パッケージがネットワーク環境にインストールされている。
8.2. sssctl コマンド リンクのコピーリンクがクリップボードにコピーされました!
sssctl は、SSSD (Security System Services Daemon) のステータスに関する情報を取得できるように一貫した方法を提供するコマンドラインツールです。
sssctl ユーティリティーを使用して、以下の情報を収集できます。
- ドメインの状態
- クライアントユーザー認証
- 特定のドメインのクライアントへのユーザーアクセス
- キャッシュされたコンテンツに関する情報
sssctl ツールを使用すると、以下が可能になります。
- SSSD キャッシュの管理
- ログの管理
- 設定ファイルの確認
sssctl ツールは、sss_cache ツールおよび sss_debuglevel ツールに代わるものです。
8.3. sssctl を使用したアクセス制御レポートの生成 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、クライアントにログインできるユーザーを制御するため、レポートを実行しているマシンに適用されるアクセス制御ルールをリスト表示できます。
キー配布センター (KDC) がロックアウトしたユーザーをツールが追跡しないため、アクセスレポートは正確ではありません。
前提条件
- 管理者権限でログインしている。
手順
アクセス制御レポートを生成するには、次のコマンドを実行します。
<domain_name>はドメイン名に置き換えます。[root@client1 ~]# sssctl access-report <domain_name> 1 rule cached Rule name: example.user Member users: example.user Member services: sshd
8.4. sssctl を使用したユーザー認可の詳細の表示 リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) に依存するアプリケーションの認証および認可の問題をトラブルシューティングするには、sssctl user-checks コマンドを使用します。
sssctl user-checks <user_name> を実行すると、Name Service Switch (NSS) および D-Bus インターフェイスの InfoPipe レスポンダーから入手できるユーザーデータが表示されます。出力には、ユーザーが system-auth Pluggable Authentication Module (PAM) サービスを使用してログインすることが許可されているかどうかが表示されます。
コマンドには、2 つのオプションがあります。
-
-a(PAM アクション用) -
-s(PAM サービス用)
-a および -s オプションを指定しない場合、sssctl ツールのデフォルトのオプション (-a acct -s system-auth) が使用されます。
前提条件
- 管理者権限でログインしている。
手順
特定ユーザーのユーザーデータを表示するには、以下を入力します。
[root@client1 ~]# sssctl user-checks -a acct -s sshd <user_name> user: example.user action: acct service: sshd ....
第9章 SSSD を使用したドメイン情報のクエリー リンクのコピーリンクがクリップボードにコピーされました!
sssctl を使用すると、System Security Services Daemon (SSSD) からドメイン関連データを取得して分析できます。SSSD は、Identity Management (IdM) 内のドメインと、フォレスト間の信頼によって IdM に接続されている Active Directory 内のドメインをリスト表示できます。
利用可能なドメインをリスト表示し、そのステータスを確認して、アイデンティティーと認証の問題をトラブルシューティングできます。
9.1. sssctl を使用したドメインのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
sssctl domain-list コマンドを使用して、ドメイントポロジーの問題をデバッグできます。
ステータスはすぐに利用できない可能性があります。ドメインが表示されない場合は、コマンドを繰り返します。
前提条件
- 管理者権限でログインしている。
手順
オプション:
sssctlコマンドのヘルプを表示するには、次のように入力します。[user@client1 ~]$ sssctl --help ....利用可能なドメインのリストを表示するには、以下を入力します。
[root@client1 ~]# sssctl domain-list implicit_files idm.example.com ad.example.com sub1.ad.example.comリストには、Active Directory と Identity Management との間でフォレスト間の信頼関係にあるドメインが含まれます。
9.2. sssctl でドメインステータスの確認 リンクのコピーリンクがクリップボードにコピーされました!
sssctl domain-status コマンドを使用して、ドメイントポロジーの問題をデバッグできます。
ステータスはすぐに利用できない可能性があります。ドメインが表示されない場合は、コマンドを繰り返します。
前提条件
- 管理者権限でログインしている。
手順
オプション:
sssctlコマンドのヘルプを表示するには、次のように入力します。[user@client1 ~]$ sssctl --help特定のドメインのユーザーデータを表示するには、次のように入力します。
<domain_name>は実際のドメイン名に置き換えます。[root@client1 ~]# sssctl domain-status <domain_name>ドメイン idm.example.com の出力例
Online status: Online Active servers: IPA: server.idm.example.com Discovered IPA servers: - server.idm.example.comドメイン
idm.example.comはオンラインになり、コマンドを設定したクライアントから表示されます。ドメインが利用できないと、結果は以下のようになります。
[root@client1 ~]# sssctl domain-status <domain_name> Unable to get online status
第10章 SSSD を使用した PAM サービスのドメインの制限 リンクのコピーリンクがクリップボードにコピーされました!
Pluggable Authentication Modules (PAM) は、認証と認可のための一般的なフレームワークです。Red Hat Enterprise Linux のほとんどのシステムアプリケーションは、認証と認可の基礎となる PAM 設定に依存しています。
SSSD (System Security Services Daemon) を使用すると、PAM サービスがアクセスできるドメインを制限できます。SSSD は、特定の PAM サービスを実行するユーザーに基づいて PAM サービスからの認証要求を評価します。つまり、PAM サービスユーザーが SSSD ドメインにアクセスできる場合は、PAM サービスもそのドメインにアクセスできることを意味します。
10.1. PAM の概要 リンクのコピーリンクがクリップボードにコピーされました!
Pluggable Authentication Module (PAM) は、システムアプリケーションが、中央で設定したフレームワークに認証を中継するのに使用できる集中認証メカニズムを提供します。
PAM モジュールは、Kerberos、SSSD、NIS、ローカルファイルシステムなどのさまざまなタイプの認証ソースに存在するため、PAM はプラグ可能です。別の認証ソースに優先順位を付けることができます。
このモジュラーアーキテクチャーにより、管理者はシステムの認証ポリシーを柔軟に設定することができます。PAM は、開発者および管理者にとって以下のような便利なシステムです。
- PAM は、幅広いアプリケーションで使用できる一般的な認証スキームを提供します。
- PAM は、システム管理者に対して、優れた柔軟性と制御性を提供します。
- PAM では、完全にドキュメント化されたライブラリーが 1 つ提供され、開発者が独自の認証スキームを作成しなくてもプログラムを作成できるようになります。
10.1.1. PAM 設定ファイル形式 リンクのコピーリンクがクリップボードにコピーされました!
各 Pluggable Authentication Module (PAM) 設定ファイルは、特定のモジュールの設定を定義するディレクティブで構成されています。PAM はいくつかのモジュール向けの認証中に引数を使用して情報をプラグ可能なモジュールに渡します。
module_type control_flag <module_name> <module_arguments>
以下に例を示します。
auth required pam_unix.so
10.1.1.1. PAM モジュールタイプ リンクのコピーリンクがクリップボードにコピーされました!
PAM モジュールタイプは、モジュールが実行する認証タスクのタイプを指定します。モジュールは次のタスクを実行できます。
- アカウント管理
- 認証管理
- パスワード管理
- セッション管理
各モジュールは、いずれかのタイプまたはすべてのタイプの認証タスクを提供できます。たとえば、pam_unix.so は 4 つの認証タスクすべてを提供します。
pam_unix.so などのモジュール名は、指定されたモジュールタイプを含むライブラリーの名前を PAM に提供します。ディレクトリー名は省略されています。アプリケーションが適切なバージョンの libpam にリンクされており、正しいバージョンのモジュールを検出できるためです。
モジュールタイプのディレクティブは積み重ねたり、重ねて配置したりできるため、複数のモジュールを 1 つの目的で一緒に使用できます。モジュールの順序は、制御フラグとともに重要であり、サービスに対するユーザーの認証という全体的な目標に対して、特定のモジュールの成功または失敗がどの程度重要であるかを決定します。
PAM モジュールをスタックして、ユーザーが認証される前に満たす必要がある特定の条件を適用できます。
10.1.1.2. PAM 制御フラグ リンクのコピーリンクがクリップボードにコピーされました!
PAM モジュールが機能を実行すると、成功または失敗の結果が返されます。制御フラグは、この結果をどのように処理するかを PAM に指示します。
単純なフラグではキーワードを使用します。より複雑な構文は [<value1>=<action1> <value2>=<action2> …] という形式に従います。
モジュールの制御フラグが sufficient な値または requisite な値を使用する場合は、モジュールがリストされる順序は認証プロセスにとって重要になります。
オプションのリストを含む PAM 制御フラグの詳細な説明は、pam.conf(5) の man ページを参照してください。
10.2. ドメインアクセス制限のオプション リンクのコピーリンクがクリップボードにコピーされました!
選択したドメインへのアクセスを制限するには、次のオプションを使用できます。
- /etc/sssd/sssd.conf の pam_trusted_users
-
SSSD が信頼する PAM サービスの数値 UID またはユーザー名をリスト表示します。デフォルト設定は
allです。つまり、すべてのサービスユーザーが信頼され、どのドメインにもアクセスできます。 - /etc/sssd/sssd.conf の pam_public_domains
-
信頼されていない PAM サービスユーザーがアクセスできるパブリック SSSD ドメインを指定します。このオプションには、
allおよびnoneの値を指定できます。デフォルト値はnoneです。つまり、ドメインが公開されておらず、信頼できないサービスユーザーはどのドメインにもアクセスできません。 - PAM 設定ファイルの domains
PAM サービスが認証できるドメインのリストを指定します。ドメインを指定せずに
domainsを使用すると、PAM サービスがどのドメインに対しても認証できなくなります。次に例を示します。auth required pam_sss.so domains=PAM 設定ファイルで
domainsが使用されている場合、PAM サービスは、信頼できるユーザーで実行されているときに、すべてのドメインに対して認証できます。/etc/sssd/sssd.confSSSD 設定ファイルのdomainsオプションでも、SSSD が認証を試みるドメインのリストを指定します。PAM 設定ファイルのdomainsオプションは、sssd.conf内のドメインのリストを拡張することはできず、より短いリストを指定してsssd.confのドメインのリストを制限することしかできないことに注意してください。そのため、ドメインが PAM ファイルで指定されていても、sssd.confでは指定されていない場合、PAM サービスはドメインに対して認証を行いません。
デフォルト設定の pam_trusted_users = all および pam_public_domains = none は、すべての PAM サービスユーザーを信頼し、任意のドメインへのアクセスを許可することを指定します。ドメインへのアクセスを制限するには、PAM 設定ファイルの domains オプションを使用します。
sssd.conf に pam_public_domains が含まれている場合に、PAM 設定ファイルで domains を使用してドメインを指定するには、pam_public_domains でもドメインを指定する必要があります。必要なドメインを含まない pam_public_domains オプションを使用すると、信頼できないユーザーでサービスを実行している場合に、ドメインに対する PAM サービスの認証が失敗します。
PAM 設定ファイルで定義するドメインの制限は、認証アクションにのみ適用され、ユーザーのルックアップには適用されません。
10.3. PAM サービスのドメインの制限 リンクのコピーリンクがクリップボードにコピーされました!
PAM サービス認証を指定ドメインに制限できます。
前提条件
- SSSD がインストールされ、実行している。
手順
必要なドメインにアクセスするように SSSD を設定します。
/etc/sssd/sssd.confファイルのdomainsオプションで、SSSD が認証できるドメインを定義します。[sssd] domains = <idm.example.com>, <ad.example.com>, <ldap.example.com>PAM 設定ファイルで `domains` オプションを設定して、PAM サービスが認証できるドメインを指定します。以下に例を示します。
auth sufficient pam_sss.so forward_pass domains=<idm.example.com> account [default=bad success=ok user_unknown=ignore] pam_sss.so password sufficient pam_sss.so use_authtokこの設定により、PAM サービスの認証先が
<idm.example.com>だけに制限されます。
検証
-
<idm.example.com>に対して認証します。認証が正常に実行されるはずです。
10.4. PAM 設定ファイルについて リンクのコピーリンクがクリップボードにコピーされました!
PAM 設定ファイルは、Red Hat Enterprise Linux のサービスの認証方法とポリシーを指定します。各 PAM 対応アプリケーションまたはサービスには、/etc/pam.d/ ディレクトリー内に対応するファイルがあります。ファイルは、アクセスを制御するサービスにちなんで命名されます。たとえば、login プログラムには、/etc/pam.d/login という名前の、対応する PAM 設定ファイルがあります。
PAM 設定ファイルを手動で編集すると、認証やアクセスの問題が発生する可能性があります。authselect ツールを使用して PAM を設定します。
詳細な説明を含む PAM 設定ファイルの例を参照してください。
PAM 設定の例 (注釈付き)
#%PAM-1.0
auth required pam_securetty.so
auth required pam_unix.so nullok
auth required pam_nologin.so
account required pam_unix.so
password required pam_pwquality.so retry=3
password required pam_unix.so shadow nullok use_authtok
session required pam_unix.so
各項目の説明:
auth required pam_securetty.so-
/etc/securettyファイルが存在する場合に、そのファイルにリストされている端末からのみ root ログインを許可します。ファイルに端末がリストされていない場合、root としてのログインが失敗し、Login incorrectというメッセージが表示されます。 auth required pam_unix.so nullok-
ユーザーにパスワードの入力を要求し、それを
/etc/passwdに保存されている情報と照合し、存在する場合は/etc/shadowにも照合します。nullok引数は空のパスワードを許可します。 auth required pam_nologin.so/etc/nologinファイルが存在するかどうかを確認します。ユーザーが存在して root でない場合は、認証に失敗します。注記この例では、最初の
authモジュールが失敗した場合でも、3 つのauthモジュールすべてがチェックされます。これは、認証がどの段階で失敗したかを潜在的な攻撃者に知られないようにする優れたセキュリティーアプローチです。account required pam_unix.so-
ユーザーのアカウントを確認します。たとえば、シャドウパスワードが有効になっていると、
pam_unix.soモジュールのアカウントタイプは、期限切れのアカウントがあるかどうか、またはユーザーがパスワードを変更する必要があるかどうかをチェックします。 password required pam_pwquality.so retry=3-
現在のパスワードの有効期限が切れた場合、またはユーザーが手動でパスワードの変更を要求した場合に、新しいパスワードの入力を求めます。次に、新しく作成されたパスワードの強度をチェックし、品質要件を満たしており、辞書ベースのパスワードクラッキングプログラムにより簡単に判別できないことを確認します。引数
retry=3は、ユーザーが強力なパスワードを作成するために 3 回試行できることを指定します。 password required pam_unix.so shadow nullok use_authtok-
pam_unix.soモジュールはパスワードの変更を管理します。shadow引数は、ユーザーのパスワードを更新するときにモジュールにシャドウパスワードを作成するように指示します。nullok引数を使用すると、ユーザーは空のパスワードを変更できます。それ以外の場合、null パスワードはアカウントロックとして扱われます。use_authtok引数は、ユーザーに再度プロンプトを表示せずに、以前に入力されたパスワードを受け入れます。この方法では、すべての新しいパスワードは、受け入れられる前に、安全なパスワードであるかどうかのpam_pwquality.soチェックに合格する必要があります。 session required pam_unix.so-
pam_unix.soモジュールはセッションを管理し、各セッションの開始時と終了時に、ユーザー名とサービスタイプをログに記録します。ログはsystemd-journaldサービスによって収集され、journalctlコマンドを使用して表示できます。ログは/var/log/secureにも保存されます。このモジュールは、追加機能のために他のセッションモジュールとスタックすることで補足できます。
第11章 ローカル SSSD 設定の誤字の排除 リンクのコピーリンクがクリップボードにコピーされました!
sssctl config-check コマンドを使用して、ホストの /etc/sssd/sssd.conf ファイルに誤字のエラーがあるかどうかをテストできます。
前提条件
- root でログインしている。
-
sssd-toolsパッケージがインストールされている。
手順
sssctl config-checkコマンドを実行します。# sssctl config-check Issues identified by validators: 1 [rule/allowed_domain_options]: Attribute 'ldap_search' is not allowed in section 'domain/<domain_name>'. Check for typos. Messages generated during configuration merging: 0 Used configuration snippet files: 0/etc/sssd/sssd.confファイルを開き、タイプミスを修正します。たとえば、前のステップでエラーメッセージが表示された場合は、ldap_searchをldap_search_baseに置き換えます。[...] [domain/<domain_name>] ldap_search_base = dc=<domain_component>,dc=<tld> [...]- ファイルを保存します。
SSSD を再起動します。
# systemctl restart sssd
検証
sssctl config-checkコマンドを実行します。# sssctl config-check出力に問題が見つからなかったことが示されるはずです。
Issues identified by validators: 0
Messages generated during configuration merging: 0
Used configuration snippet files: 0
/etc/sssd/sssd.conf ファイルで、誤字がなくなりました。
第12章 IdM で SSSD を使用した認証のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Identity Management (IdM) 環境での認証には、以下に示す多くのコンポーネントが関係します。
- IdM クライアント
- SSSD サービス
- Name Services Switch (NSS)
- Pluggable Authentication Modules (PAM)
- IdM サーバー
- SSSD サービス
- IdM Directory Server
- IdM Kerberos Key Distribution Center (KDC)
- Active Directory (AD) ユーザーとして認証する場合
- AD ドメインコントローラー上の Directory Server
- AD ドメインコントローラー上の Kerberos サーバー
ユーザーを認証するには、SSSD サービスで以下の機能を実行できる必要があります。
- 認証サーバーからユーザー情報を取得します。
- ユーザーに認証情報を要求し、それらの認証情報を認証サーバーに渡し、結果を処理します。
トラブルシューティングを実行するには、SSSD サービスとユーザー情報を保存するサーバー間で情報がどのように流れるかを把握する必要があります。これにより、問題が発生している場所を特定し、潜在的な原因を絞り込むことができます。
12.1. SSSD で IdM ユーザー情報を取得するデータフロー リンクのコピーリンクがクリップボードにコピーされました!
以下の図は、getent passwd <idm_user_name> コマンドを使用して IdM ユーザー情報の要求時に IdM クライアントと IdM サーバーとの間の情報フローを簡単に説明します。
getent passwd を使用してユーザー情報を取得する場合の IdM クライアントとサーバー間の情報フロー
-
getentコマンドは、libcライブラリーからgetpwnam呼び出しをトリガーします。 -
libcライブラリーは、/etc/nsswitch.conf設定ファイルを参照して、どのサービスがユーザー情報を提供するかを確認し、SSSD サービスのエントリーsssを検出します。 -
libcライブラリーは、nss_sssモジュールを開きます。 -
nss_sss モジュールは、ユーザー情報のメモリーマップキャッシュを確認します。データがキャッシュに存在する場合は、
nss_sssモジュールがそれを返します。 -
ユーザー情報が memory-mapped キャッシュにない場合、リクエストは SSSD
sssd_nssレスポンダープロセスに渡されます。 -
SSSD サービスはキャッシュをチェックします。データがキャッシュに存在し、有効な場合は、
sssd_nssレスポンダーがキャッシュからデータを読み取って、アプリケーションに返します。 -
データがキャッシュにない場合や期限切れである場合、
sssd_nssレスポンダーは適切なバックエンドプロセスに対してクエリーを実行し、応答を待機します。SSSD サービスは、sssd.conf設定ファイルでid_provider=ipaを設定して有効にした、IdM 環境の IPA バックエンドを使用します。 -
sssd_beバックエンドプロセスは IdM サーバーに接続して、IdM LDAP Directory Server から情報を要求します。 - IdM サーバーの SSSD バックエンドは、IdM クライアントの SSSD バックエンドプロセスに対応します。
- クライアントの SSSD バックエンドは、生成されるデータを SSSD キャッシュに保存し、キャッシュが更新されたレスポンダープロセスを警告します。
-
sssd_nssフロントエンドレスプロセスが SSSD キャッシュから情報を取得します。 -
sssd_nssレスポンダーは、nss_sssレスポンダーにユーザー情報を送信し、リクエストを完了します。 -
libcライブラリーは、要求したアプリケーションにユーザー情報を返します。
12.2. SSSD で AD ユーザー情報を取得する際のデータフロー リンクのコピーリンクがクリップボードにコピーされました!
IdM 環境と Active Directory( AD) ドメインとの間でフォレスト間の信頼を確立した場合は、IdM クライアントの AD ユーザー情報を取得する際に情報フローが、AD ユーザーデータベースへの追加の手順とともに、IdM クライアントの AD ユーザー情報の取得時に非常に似ています。
次の図は、ユーザーが getent passwd <user_name@ad.example.com> コマンドを使用して AD ユーザーに関する情報を要求した場合の情報フローを簡略化したものです。この図には、SSSD を使用して IdM ユーザー情報を取得する場合のデータフロー のセクションで説明されている内部詳細は含まれていません。IdM クライアントの SSSD サービス、IdM サーバーの SSSD サービス、および AD ドメインコントローラー上の LDAP データベースとの間の通信にフォーカスします。
IdM クライアント、IdM サーバー、および AD ドメインコントローラー間の AD ユーザー情報取得の情報フロー image::169_RHEL_IdM_with_SSSD_0621-ad_user_info.png["IdM クライアント、IdM サーバー、および AD ドメインコントローラー間の情報の流れを表す番号付き矢印を含む図。次の番号付きリストで、プロセスの各ステップを説明しています。"]
- IdM クライアントは、AD ユーザー情報に関するローカルの SSSD キャッシュを検索します。
-
IdM クライアントにユーザー情報がない場合や、情報が古い場合に、クライアントの SSSD サービスが IdM サーバーの
extdom_extopプラグインに問い合わせて、LDAP 拡張操作を実行し、情報を要求します。 - IdM サーバーの SSSD サービスは、ローカルキャッシュで AD ユーザー情報を検索します。
- IdM サーバーに SSSD キャッシュにユーザー情報がない場合や、その情報が古い場合は、LDAP 検索を実行して、AD ドメインコントローラーからユーザー情報を要求します。
- IdM サーバーの SSSD サービスは、AD ドメインコントローラーから AD ユーザー情報を受け取り、キャッシュに保存します。
-
extdom_extopプラグインは、LDAP 拡張操作を完了する IdM サーバーの SSSD サービスから情報を受信します。 - IdM クライアントの SSSD サービスは、LDAP 拡張操作から AD ユーザー情報を受信します。
- IdM クライアントは、AD ユーザー情報を SSSD キャッシュに保存し、要求したアプリケーションに情報を返します。
12.3. IdM で SSSD を使用してユーザーとして認証する場合にデータフロー リンクのコピーリンクがクリップボードにコピーされました!
IdM サーバーまたはクライアントでユーザーとして認証するには、以下のコンポーネントが必要です。
-
sshdサービスなど、認証要求を開始するサービス。 - Pluggable Authentication Module (PAM) ライブラリーとそのモジュール。
- SSSD サービス、そのレスポンダー、およびバックエンド。
- スマートカード認証が設定されている場合は、スマートカードリーダー。
認証サーバー:
- IdM ユーザーは、IdM Kerberos Key Distribution Center (KDC) に対して認証されます。
- Active Directory (AD) ユーザーは、AD ドメインコントローラー (DC) に対して認証されます。
以下の図は、コマンドラインの SSH サービスを介してホストにローカルでログインしようとすると、情報フローを簡単に認証する必要がある場合を示しています。
認証試行中の IdM クライアントと IdM サーバーまたは AD ドメインコントローラー間の情報フロー
-
sshコマンドで認証を試みると、libpamライブラリーがトリガーされます。 libpamライブラリーは、認証の試行を要求するサービスに対応する/etc/pam.d/ディレクトリーの PAM ファイルを参照します。この例では、ローカルホストの SSH サービス経由で認証されている例では、libpamライブラリーは/etc/pam.d/system-auth設定ファイルを確認し、SSSD PAM のpam_sss.soエントリーを検出します。auth sufficient pam_sss.so-
利用可能な認証方法を判断するため、
libpamライブラリーはpam_sssモジュールを開き、SSSD サービスのsssd_pamPAM レスポンダーにSSS_PAM_PREAUTHリクエストを送信します。 -
スマートカード認証が設定されていると、SSSD サービスは一時的な
p11_childプロセスを生成し、スマートカードを確認し、そこから証明書を取得します。 -
ユーザーにスマートカード認証が設定されていると、
sssd_pamレスポンダーは、スマートカードの証明書とユーザーを照合します。sssd_pamレスポンダーは、グループメンバーシップがアクセス制御に影響する可能性があるため、ユーザーが属するグループの検索も実行します。 -
sssd_pamレスポンダーは、SSS_PAM_PREAUTH要求をsssd_beバックエンドレスに送信し、パスワードや 2 要素認証などのサーバーがサポートする認証方法を表示します。SSSD サービスが IPA レスポンダーを使用する IdM 環境では、デフォルトの認証方法は Kerberos です。この例では、ユーザーは簡単な Kerberos パスワードで認証されます。 -
sssd_beレスポンダーは一時的なkrb5_childプロセスを起動します。 -
krb5_childプロセスは、IdM サーバーの KDC に連絡して、利用可能な認証方法を確認します。 KDC はリクエストに応答します。
-
krb5_childプロセスは応答を評価し、結果をsssd_beバックエンドプロセスに送信します。 -
sssd_beバックエンドプロセスが結果を受け取ります。 -
sssd_pamレスポンダーは結果を受け取ります。 -
pam_sssモジュールは結果を受け取ります。
-
-
ユーザーにパスワード認証が設定されていると、
pam_sssモジュールにより、パスワードの入力が求められます。スマートカード認証が設定されていると、pam_sssモジュールにより、スマートカードの PIN の入力が求められます。 モジュールがユーザー名とパスワードを使用して
SSS_PAM_AUTHENTICATE要求を送信します。これは次の宛先に送信されます。-
sssd_pamレスポンダー。 -
sssd_beバックエンドプロセス。
-
-
sssd_beプロセスは、KDC に問い合わせる一時的なkrb5_childプロセスを起動します。 -
krb5_childprocess は、ユーザー名とパスワードを使用して KDC から Kerberos チケット保証チケット (TGT) の取得を試みます。 -
krb5_childプロセスは、認証の試行の結果を受け取ります。 krb5_childプロセス:- TGT を認証情報キャッシュに保存します。
-
sssd_beバックエンドプロセスに認証結果を返します。
認証結果は
sssd_beプロセスから以下を行います。-
sssd_pamレスポンダー。 -
pam_sssモジュール。
-
-
pam_sssモジュールは、その他のアプリケーションが参照できるように、環境変数をユーザーの TGT の場所で設定します。
12.4. 認証問題の範囲の制限 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーを正常に認証するには、ユーザー情報を保存するデータベースから SSSD サービスでユーザー情報を取得できる必要があります。以下の手順では、認証プロセスの異なるコンポーネントをテストする手順を説明します。これにより、ユーザーがログインできない場合に認証の問題のスコープを制限する方法を説明します。
手順
SSSD サービスおよびそのプロセスが実行していることを確認します。
[root@client ~]# pstree -a | grep sssd |-sssd -i --logger=files | |-sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files | |-sssd_be --domain <domain_name> --uid 0 --gid 0 --logger=files | |-sssd_ifp --uid 0 --gid 0 --logger=files | |-sssd_nss --uid 0 --gid 0 --logger=files | |-sssd_pac --uid 0 --gid 0 --logger=files | |-sssd_pam --uid 0 --gid 0 --logger=files | |-sssd_ssh --uid 0 --gid 0 --logger=files | `-sssd_sudo --uid 0 --gid 0 --logger=files |-sssd_kcm --uid 0 --gid 0 --logger=filesクライアントが IP アドレスを使用してユーザーデータベースサーバーに接続できることを確認します。
[user@client ~]$ ping <IP_address_of_the_database_server>この手順が失敗した場合は、ネットワークとファイアウォール設定が、IdM クライアントとサーバー間の直接通信が許可されていることを確認してください。firewalld の使用と設定 を参照してください。
クライアントが、完全修飾ホスト名を使用して IdM LDAP サーバー (IdM ユーザー用) または AD ドメインコントローラー (AD ユーザーの場合) を検出して連絡できることを確認します。
[user@client ~]$ dig -t SRV ldap._tcp.<domain>@<server_name> [user@client ~]$ ping <fully_qualified_host_name_of_the_server>この手順が失敗した場合は、
/etc/resolv.confファイルを含む Dynamic Name Service (DNS) の設定を確認してください。DNS サーバーの順序の設定 を参照してください。注記デフォルトでは、SSSD サービスは DNS サービス (SRV) レコードを介して LDAP サーバーと AD DC を自動的に検出しようとします。SSSD を特定のサーバーに制限するには、
sssd.conf設定ファイルで次のオプションを使用してサーバーを定義します。-
ipa_server = <fully_qualified_host_name_of_the_server> -
ad_server = <fully_qualified_host_name_of_the_server> -
ldap_uri = <fully_qualified_host_name_of_the_server>
このオプションを使用する場合は、そのオプションに記載されているサーバーと通信できることを確認します。
-
クライアントが LDAP サーバーに対して認証でき、
ldapsearchコマンドでユーザー情報を取得できることを確認します。LDAP サーバーが
server.example.comなどの IdM サーバーである場合は、ホストの Kerberos チケットを取得し、ホスト Kerberos プリンシパルで認証されるデータベース検索を実行します。[user@client ~]$ kinit -k 'host/client.example.com@EXAMPLE.COM' [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.example.com -b "dc=example,dc=com" uid=<idm_user>LDAP サーバーが
server.ad.example.comなどの Active Directory (AD) Domain Controller (DC) である場合は、ホストの Kerberos チケットを取得し、ホストの Kerberos プリンシパルで認証してデータベース検索を実行します。[user@client ~]$ kinit -k 'CLIENT$@AD.EXAMPLE.COM' [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.ad.example.com -b "dc=example,dc=com" sAMAccountname=<idm_user>LDAP サーバーがプレーン LDAP サーバーであり、
sssd.confファイルにldap_default_bind_dnおよびldap_default_authtokオプションを設定した場合は、同じldap_default_bind_dnアカウントとして認証されます。[user@client ~]$ ldapsearch -xLLL -D "cn=ldap_default_bind_dn_value" -W -h ldapserver.example.com -b "dc=example,dc=com" uid=<idm_user>
この手順が失敗した場合は、データベース設定で、ホストが LDAP サーバーを検索できることを確認します。
SSSD サービスは Kerberos 暗号化を使用するため、ログインできないユーザーとして Kerberos チケットを取得できます。
LDAP サーバーが IdM サーバーの場合:
[user@client ~]$ kinit <idm_user>LDAP サーバーデータベースが AD サーバーの場合:
[user@client ~]$ kinit <ad_user@AD.EXAMPLE.COM>
この手順が失敗した場合は、Kerberos サーバーが適切に動作し、すべてのサーバーが同期され、ユーザーアカウントがロックされていないことを確認します。
コマンドラインに関するユーザー情報を取得できることを確認します。
[user@client ~]$ getent passwd <idm_user> [user@client ~]$ id <idm_user>この手順が失敗した場合は、クライアントの SSSD サービスがユーザーデータベースから情報を受信できることを確認します。
-
/var/log/messagesログファイルのエラーを確認します。 - SSSD サービスで詳細なロギングを有効にし、デバッグログを収集して、問題のソースに関するログを確認します。
- オプション: Red Hat テクニカルサポートケースを作成し、収集したトラブルシューティング情報を提供します。
-
ホスト上で
sudo権限を持っている場合は、sssctlユーティリティーを使用して、ユーザーがログインできるかどうかを確認します。[user@client ~]$ sudo sssctl user-checks -a auth -s ssh <idm_user>この手順が失敗した場合は、PAM 設定、IdM HBAC ルール、IdM RBAC ルールなどの認可設定を確認します。
-
ユーザーの UID が、
/etc/login.defsファイルで定義されているUID_MIN以上であることを確認してください。 -
/var/log/secureログファイルおよび/var/log/messagesログファイルで認可エラーを確認します。 - SSSD サービスで詳細なロギングを有効にし、デバッグログを収集して、問題のソースに関するログを確認します。
- オプション: Red Hat テクニカルサポートケースを作成し、収集したトラブルシューティング情報を提供します。
-
ユーザーの UID が、
12.5. SSSD ログファイルおよびログレベル リンクのコピーリンクがクリップボードにコピーされました!
それぞれの SSSD サービスは、/var/log/sssd/ ディレクトリーに独自のログファイルを記録します。example.com IdM ドメインの IdM サーバーのログファイルは、以下のようになります。
[root@server ~]# ls -l /var/log/sssd/
total 620
-rw-------. 1 root root 0 Mar 29 09:21 krb5_child.log
-rw-------. 1 root root 14324 Mar 29 09:50 ldap_child.log
-rw-------. 1 root root 212870 Mar 29 09:50 sssd_example.com.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_ifp.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_implicit_files.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd.log
-rw-------. 1 root root 219873 Mar 29 10:03 sssd_nss.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_pac.log
-rw-------. 1 root root 13105 Mar 29 09:21 sssd_pam.log
-rw-------. 1 root root 9390 Mar 29 09:21 sssd_ssh.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_sudo.log
12.5.1. SSSD ログファイルの目的 リンクのコピーリンクがクリップボードにコピーされました!
krb5_child.log- Kerberos 認証に関連する有効期限の短いヘルパープロセスのログファイル。
ldap_child.log- LDAP サーバーとの通信用の Kerberos チケットの取得に関連する短期ヘルパープロセスのログファイル。
sssd_<domain_name>.logsssd.confファイルのドメインセクションごとに、SSSD サービスは LDAP サーバーとの通信に関する情報を別のログファイルに記録します。たとえば、example.comという名前の IdM ドメインがある環境では、SSSD サービスはsssd_example.com.logという名前のファイルのログにその情報を記録します。ホストがad.example.comという名前の AD ドメインと直接統合されている場合は、sssd_ad.example.com.logという名前のファイルのログに情報が記録されます。注記IdM 環境と、AD ドメインを持つフォレスト間の信頼があると、AD ドメインに関する情報は引き続き IdM ドメインのログファイルに記録されます。
同様に、ホストが AD ドメインに直接統合されている場合は、プライマリードメインのログファイルに、子ドメインに関する情報が書き込まれます。
selinux_child.log- SELinux 情報を取得および設定する短期間ヘルパープロセスのログファイル。
sssd.log- SSSD を監視して、レスポンダーおよびバックエンドプロセスと通信するためのログファイル。
sssd_ifp.log- InfoPipe レスポンダーのログファイル。システムバスからアクセス可能なパブリック D-Bus インターフェイスを提供します。
sssd_nss.log- ユーザーおよびグループ情報を取得する Name Services Switch (NSS) レスポンダーのログファイル。
sssd_pac.log- AD Kerberos チケットから PAC を収集する Microsoft Privilege Attribute Certificate (PAC) レスポンダー用のログファイルは、PAC から PAC に関する情報を取得します。これにより、AD ユーザーを直接要求しないようにします。
sssd_pam.log- PAM (Pluggable Authentication Module) レスポンダー用のログファイルです。
sssd_ssh.log- SSH レスポンダープロセスのログファイル。
12.5.2. SSSD ロギングレベル リンクのコピーリンクがクリップボードにコピーされました!
デバッグレベルを設定すると、それ下のすべてのデバッグレベルが有効になります。たとえば、debug レベルを 6 に設定すると、デバッグレベル 0 から 5 も有効になります。
| レベル | 説明 |
|---|---|
| 0 | 致命的な障害が発生しました。SSSD サービスが起動しなかったり、終了しないようにするエラー。 |
| 1 | 重大なエラーSSSD サービスを終了しないものの、主要な機能は 1 つ以上正しく機能しません。 |
| 2 | 深刻なエラー。特定の要求または操作が失敗したことを示すエラー。これは、デフォルトのデバッグログレベルです。 |
| 3 | マイナーな障害が発生しました。レベル 2 で操作の失敗がキャプチャーされたエラー。 |
| 4 | 設定。 |
| 5 | 関数 データ。 |
| 6 | 操作 関数のトレースメッセージ。 |
| 7 | 内部制御 関数のトレースメッセージ。 |
| 8 | 関数内部 変数の内容。 |
| 9 | 非常に 低いレベルのトレース 情報。 |
12.6. sssd.conf ファイルで SSSD の詳細なロギングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、SSSD サービスは、重大な失敗 (デバッグレベル 2) のみをログに記録しますが、認証問題のトラブルシューティングに必要な詳細レベルではログに記録されません。
SSSD サービスの再起動時に詳細なロギングを有効にするには、/etc/sssd/sssd.conf 設定ファイルの各セクションに debug_level=<integer> オプションを追加します。ここで、<integer> の値は 0 から 9 の数字になります。デバッグレベルは最大 3 つのログで、最大 3 つのログで、レベル 8 以上では、多くの詳細なログメッセージを提供します。レベル 6 は、認証の問題のデバッグに役立ちます。
前提条件
-
sssd.conf設定ファイルを編集し、SSSD サービスを再起動するには、root パスワードが必要です。
手順
-
テキストエディターで
/etc/sssd/sssd.confファイルを開きます。 debug_levelオプションをファイルのすべてのセクションに追加し、デバッグレベルを、選択した詳細に設定します。[domain/<domain_name>] debug_level = 6 id_provider = ipa ... [sssd] debug_level = 6 services = nss, pam, ifp, ssh, sudo domains = <domain_name> [nss] debug_level = 6 [pam] debug_level = 6 [sudo] debug_level = 6 [ssh] debug_level = 6 [pac] debug_level = 6 [ifp] debug_level = 6-
sssd.confファイルを保存して閉じます。 SSSD サービスを再起動して、新しい設定を読み込みます。
[root@server ~]# systemctl restart sssd
12.7. sssctl コマンドを使用した SSSD の詳細なロギングの有効化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、SSSD サービスは、重大な失敗 (デバッグレベル 2) のみをログに記録しますが、認証問題のトラブルシューティングに必要な詳細レベルではログに記録されません。
sssctl debug-level <integer> コマンドを使用して、コマンドラインで SSSD サービスのデバッグレベルを変更できます。ここで、<integer> の値は 0 から 9 の数字になります。デバッグレベルは最大 3 つのログで、最大 3 つのログで、レベル 8 以上では、多くの詳細なログメッセージを提供します。レベル 6 は、認証の問題のデバッグに役立ちます。
前提条件
-
sssctlコマンドを実行するには、root パスワードが必要です。
手順
sssctl debug-levelコマンドを使用して、デバッグレベルを目的の詳細度に設定します。以下に例を示します。[root@server ~]# sssctl debug-level 6
12.8. IdM サーバーの認証問題をトラブルシューティングするために SSSD サービスからデバッグログを収集する リンクのコピーリンクがクリップボードにコピーされました!
IdM ユーザーが IdM サーバーへの認証を試行する際に問題が発生した場合は、サーバー上の SSSD サービスで詳細なデバッグロギングを有効にし、ユーザーに関する情報の取得を試行するログを収集します。
前提条件
-
root権限がある。
手順
IdM サーバーで詳細な SSSD デバッグロギングを有効にします。
[root@server ~]# sssctl debug-level 6認証問題が発生しているユーザーの SSSD キャッシュでオブジェクトを無効にするため、LDAP サーバーを省略し、SSSD がすでにキャッシュされている情報を取得しません。
[root@server ~]# sssctl cache-expire -u <idm_user>古い SSSD ログを削除して、トラブルシューティングのデータセットを最小限に抑える。
[root@server ~]# sssctl logs-remove認証問題が発生し、試行前後にタイムスタンプを収集する際に、ユーザーが認証問題が発生しようと試みます。これらのタイムスタンプは、データセットのスコープをさらに絞り込むことができます。
[root@server sssd]# date; su <idm_user>; date Mon Mar 29 15:33:48 EDT 2021 su: user idm_user does not exist Mon Mar 29 15:33:49 EDT 2021オプション: 詳細な SSSD ログの収集を継続しない場合は、デバッグレベルを下げます。
[root@server ~]# sssctl debug-level 2障害のある要求に関する情報を SSSD ログで確認します。たとえば、
/var/log/sssd/sssd_example.com.logファイルを確認すると、SSSD サービスがcn=accounts,dc=example,dc=comLDAP サブツリーでユーザーを見つけられなかったことを示しています。これは、ユーザーが存在しないか、別の場所に存在することを示しています。(Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [dp_get_account_info_send] (0x0200): Got request for [0x1][BE_REQ_USER][name=idm_user@example.com] ... (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(uid=idm_user)(objectclass=posixAccount)(uid=)(&(uidNumber=)(!(uidNumber=0))))][cn=accounts,dc=example,dc=com]. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_op_finished] (0x0400): Search result: Success(0), no errmsg set (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_search_user_process] (0x0400): Search for users, returned 0 results. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_delete_user] (0x0400): Error: 2 (No such file or directory) (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:49 2021) [sssd[be[example.com]]] [ipa_id_get_account_info_orig_done] (0x0080): Object not found, ending request認証問題の原因を判断できない場合は、以下を行います。
最近生成した SSSD ログを収集します。
[root@server ~]# sssctl logs-fetch sssd-logs-Mar29.tarRed Hat テクニカルサポートケースを作成し、以下を提供します。
-
SSSD ログ:
sssd-logs-Mar29.tar ログに対応する要求のタイムスタンプおよびユーザー名を含むコンソールの出力。
[root@server sssd]# date; id <idm_user>; date Mon Mar 29 15:33:48 EDT 2021 id: 'idm_user': no such user Mon Mar 29 15:33:49 EDT 2021
-
SSSD ログ:
12.9. IdM クライアントの認証問題をトラブルシューティングするために SSSD サービスからデバッグログを収集する リンクのコピーリンクがクリップボードにコピーされました!
IdM クライアントに IdM ユーザーとして認証を試行する際に問題が発生した場合は、IdM サーバーでユーザー情報を取得できることを確認します。IdM サーバーでユーザー情報を取得できない場合は、(IdM サーバーから情報を取得する) IdM クライアントでそれを取得できなくなります。
認証の問題が IdM サーバーから生成されていないことを確認したら、IdM サーバーと IdM クライアントの両方から SSSD デバッグログを収集していました。
前提条件
- IdM サーバーではなく、IdM クライアントで認証の問題のみがあります。
-
sssctlコマンドを実行して SSSD サービスを再起動するには、root パスワードが必要です。
手順
-
クライアントで、テキストエディターで
/etc/sssd/sssd.confファイルを開きます。 クライアントで、ファイルの
[domain]セクションにipa_serverオプションを追加し、このオプションを完全修飾ドメイン名 (FQDN) を使用して IdM サーバーに設定します。これにより、IdM クライアントは他の IdM サーバーの自動検出を避け、このテストを 1 つのクライアントおよびサーバー 1 台だけに制限します。[domain/<idm_domain_name>] ipa_server = <idm_server_fqdn> ...-
クライアントで
sssd.confファイルを保存して閉じます。 クライアントで SSSD サービスを再起動して、設定の変更を読み込みます。
[root@client ~]# systemctl restart sssdサーバーおよびクライアントで、詳細な SSSD デバッグロギングを有効にします。
[root@server ~]# sssctl debug-level 6[root@client ~]# sssctl debug-level 6サーバーおよびクライアントで、認証問題が発生しているユーザーの SSSD キャッシュの検証オブジェクトでは、LDAP データベースを迂回せず、SSSD がすでにキャッシュされています。
[root@server ~]# sssctl cache-expire -u <idm_user>[root@client ~]# sssctl cache-expire -u <idm_user>サーバーおよびクライアントで、古い SSSD ログを削除して、トラブルシューティングのデータセットを最小限に抑える。
[root@server ~]# sssctl logs-remove[root@server ~]# sssctl logs-removeクライアントで、認証問題が発生し、試行前後にタイムスタンプを収集する際に、ユーザーが認証問題が発生しようと試みます。これらのタイムスタンプは、データセットのスコープをさらに絞り込むことができます。
[root@client sssd]# date; su <idm_user>; date Mon Mar 29 16:20:13 EDT 2021 su: user idm_user does not exist Mon Mar 29 16:20:14 EDT 2021オプション: サーバーおよびクライアントで、詳細な SSSD ログの収集を継続しない場合は、デバッグレベルを下げます。
[root@server ~]# sssctl debug-level 0[root@client ~]# sssctl debug-level 0サーバーおよびクライアントで、失敗した要求に関する情報を SSSD ログを確認します。
- クライアントログのクライアントからの要求を確認します。
- サーバーログのクライアントからの要求を確認します。
- サーバーログでリクエストの結果を確認します。
- サーバーからリクエストの結果を受信するクライアントの結果を確認します。
認証問題の原因を判断できない場合は、以下を行います。
IdM サーバーおよび IdM クライアントで最近生成した SSSD ログを収集します。ホスト名またはロールに応じてラベルを付けます。
[root@server ~]# sssctl logs-fetch sssd-logs-server-Mar29.tar[root@client ~]# sssctl logs-fetch sssd-logs-client-Mar29.tarRed Hat テクニカルサポートケースを作成し、以下を提供します。
SSSD デバッグログ:
-
サーバーから
sssd-logs-server-Mar29.tar -
クライアントからの
sssd-logs-client-Mar29.tar
-
サーバーから
ログに対応する要求のタイムスタンプおよびユーザー名を含むコンソールの出力。
[root@client sssd]# date; su <idm_user>; date Mon Mar 29 16:20:13 EDT 2021 su: user idm_user does not exist Mon Mar 29 16:20:14 EDT 2021
12.10. SSSD バックエンドでのクライアント要求の追跡 リンクのコピーリンクがクリップボードにコピーされました!
SSSD はリクエストを非同期的に処理し、別々の要求のメッセージを同じログファイルに追加します。バックエンドログでクライアント要求を追跡するには、一意の要求識別子 RID#<integer> とクライアント ID [CID #<integer>] を使用できます。これらの識別子は、複数の SSSD コンポーネントからのログファイルにわたる個々の要求を最初から最後まで追跡するために、ログを分離するのに役立ちます。
前提条件
- デバッグロギングを有効にし、IdM クライアントから要求が送信されている。
-
root権限がある。
手順
SSSD のログファイルを確認するために、
lessユーティリティーを使用してログファイル/var/log/sssd/sssd_<domain_name>.logを開きます。以下に例を示します。[root@server ~]# less /var/log/sssd/sssd_example.com.logSSSD ログでクライアント要求に関する情報を確認します。
(2021-07-26 18:26:37): [be[testidm.com]] [dp_req_destructor] (0x0400): [RID#3] Number of active DP request: 0 (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_reply_std] (0x1000): [RID#3] DP Request AccountDomain #3: Returning [Internal Error]: 3,1432158301,GetAccountDomain() not supported (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] DP Request Account #4: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] Number of active DP request: 1SSSD ログファイルからのこの出力例は、2 つの異なる要求について一意の識別子の
RID#3およびRID#4を示しています。ただし、SSSD クライアントインターフェイスへの 1 つのクライアント要求が、バックエンドで複数の要求をトリガーすることが多いため、クライアント要求とバックエンドの要求との間に 1 対 1 の相関関係がなくなります。バックエンド内の複数のリクエストには異なる RID 番号がありますが、最初の各バックエンドリクエストには一意のクライアント ID が含まれているため、管理者は単一のクライアントリクエストに対して複数の RID 番号を追跡できます。
以下の例は、1 つのクライアントリクエスト
[sssd.nss CID #1]と、バックエンドで生成された複数のリクエスト ([RID#5]から[RID#13]) を示しています。(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#5] DP Request [Account #5]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#6] DP Request [AccountDomain #6]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#7] DP Request [Account #7]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#8] DP Request [Initgroups #8]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#9] DP Request [Account #9]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#10] DP Request [Account #10]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#11] DP Request [Account #11]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#12] DP Request [Account #12]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#13] DP Request [Account #13]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
12.11. ログ解析ツールを使用したクライアント要求の追跡 リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) には、複数の SSSD コンポーネントからのログファイルにわたり、要求を最初から最後まで追跡するに使用できるログ解析ツールが組み込まれています。
12.11.1. ログ解析ツールの仕組み リンクのコピーリンクがクリップボードにコピーされました!
ログ解析ツールを使用すると、複数の SSSD コンポーネントからのログファイルにわたり、SSSD の要求を最初から最後まで追跡できます。sssctl analyze コマンドを使用してアナライザーツールを実行します。
ログ解析ツールは、SSSD の NSS および PAM の問題をトラブルシューティングし、SSSD デバッグログの確認を容易化するのに役立ちます。SSSD プロセス全体の特定のクライアントリクエストにのみ関連する SSSD ログを抽出して出力できます。
SSSD は、ユーザー認証 (su、ssh) 情報とは別に、ユーザーおよびグループの ID 情報 (id、getent) を追跡します。NSS レスポンダのクライアント ID(CID) は PAM レスポンダーの CID とは独立しており、NSS と PAM のリクエストを解析すると重複した数値が表示されます。--pam オプションを sssctl analyze コマンドとともに使用して、PAM リクエストを確認します。
SSSD メモリーキャッシュから返された要求はログに記録されず、ログ解析ツールで追跡できません。
12.11.2. ログ解析ツールの実行 リンクのコピーリンクがクリップボードにコピーされました!
ログ解析ツールを使用して、SSSD 内のクライアント要求を追跡および分析します。
前提条件
-
ログ解析機能を有効にするには、
/etc/sssd/sssd.confファイルの[$responder]セクションと[domain/$domain]セクションでdebug_levelを 7 以上に設定する必要があります。 -
分析するログは、
libteventチェーン ID をサポートする互換性のあるバージョンの SSSD、つまり RHEL 8.5 以降の SSSD からのものである必要がある。
手順
ログ解析ツールを
listモードで実行して、追跡対象の要求のクライアント ID を特定し、-vオプションを追加して詳細な出力を表示します。# sssctl analyze request list -vSSSD に対して行われた最近のクライアント要求の詳細なリストが表示されます。
注記PAM リクエストを分析する場合は、
sssctl analyze request listコマンドを--pamオプション付きで実行してください。show [unique client ID]オプションを指定してログ解析ツールを実行し、指定したクライアント ID 番号に関連するログを表示します。# sssctl analyze request show 20必要に応じて、ログファイルに対してログ解析ツールを実行できます。次に例を示します。
# sssctl analyze --logdir=/tmp/var/log/sssd request list
第13章 シングルサインオン用のアプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
シングルサインオン (SSO) は、1 回のログイン手順で複数のシステムにログインできる認証スキームです。ユーザーの認証手段として、Kerberos チケット、SSL 認定、またはトークンを使用するように、ブラウザーとメールクライアントを設定できます。
アプリケーションによって設定が異なる場合があります。この章では、Mozilla Thunderbird メールクライアントおよび Mozilla Firefox Web ブラウザーに SSO 認証スキーマを設定する方法を例として説明します。
13.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
以下のアプリケーションをインストールしている。
- Mozilla Firefox バージョン 88
- Mozilla Thunderbird バージョン 78
13.2. シングルサインオンに Kerberos を使用するように Firefox を設定する リンクのコピーリンクがクリップボードにコピーされました!
Firefox は、イントラネットサイトやその他の保護された Web サイトへのシングルサインオン (SSO) に Kerberos を使用するように設定できます。これを行うには、最初に、Kerberos 認証情報を適切な鍵配布センター (KDC) に送信するように Firefox を設定する必要があります。
Kerberos 認証情報を渡すように Firefox を設定した後でも、有効な Kerberos チケットが必要です。Kerberos チケットを生成するには、kinit コマンドを使用し、KDC 上のユーザーのユーザーパスワードを入力します。
[jsmith@host ~] $ kinit
Password for jsmith@EXAMPLE.COM:
手順
-
Firefox のアドレスバーに
about:configと入力し、現在の設定オプションのリストを表示します。 -
Filter フィールドに
negotiateと入力して、オプションのリストを制限します。 - network.negotiate-auth.trusted-uris エントリーをダブルクリックします。
先行ピリオド (.) を含む、認証に使用するドメイン名を入力します。複数のドメインを追加する場合は、ドメインをコンマ区切りで入力します。
Firefox の手動設定
13.3. Firefox での証明書の表示 リンクのコピーリンクがクリップボードにコピーされました!
Mozilla Firefox に保存されている証明書を表示して、認証設定を確認できます。
手順
Mozilla Firefox で Firefox メニューを開き、Preferences を選択します。
左側のパネルで、Privacy & Security セクションを選択します。
- Certificates までスクロールします。
View Certificates をクリックして、Certificate Manager を開きます。
13.4. Firefox での CA 証明書のインポート リンクのコピーリンクがクリップボードにコピーされました!
証明書を Mozilla Firefox にインポートして、その証明書をセキュアな接続のために使用する Web サイト、サーバー、またはアプリケーションとの信頼を確立できます。
前提条件
- デバイスに CA 証明書がある。
手順
- Certificate Manager を開きます。
Authorities タブを選択し、Import をクリックします。
図13.1 Firefox での CA 証明書のインポート
- デバイスからダウンロードした CA 証明書を選択します。
13.5. Firefox での証明書信頼設定の編集 リンクのコピーリンクがクリップボードにコピーされました!
Mozilla Firefox が証明書を信頼する方法を変更できます。
前提条件
- 証明書が正常にインポートされました。
手順
- Certificate Manager を開きます。
- Authorities タブで、適切な証明書を選択し、Edit Trust をクリックします。
証明書信頼設定を編集します。
図13.2 Firefox での証明書信頼設定の編集
13.6. Firefox での認証用個人証明書のインポート リンクのコピーリンクがクリップボードにコピーされました!
Web サイトやサービスへの認証用の個人証明書をインポートできます。
前提条件
- デバイスに個人証明書が保存されている。
手順
- Certificate Manager を開きます。
Your Certificates タブを選択し、Import をクリックします。
図13.3 Firefox での認証用個人証明書のインポート
- コンピューターから適切な証明書をインポートします。
13.7. Thunderbird での証明書の表示 リンクのコピーリンクがクリップボードにコピーされました!
Mozilla Thunderbird で証明書を表示して、メールクライアントのセキュリティー設定を管理できます。
手順
Thunderbird でメインメニューを開き、Preferences を選択します。
図13.4 メニューから Preferences を選択する
左側のパネルで、Privacy & Security セクションを選択します。
図13.5 セキュリティーセクションの選択
- Certificates までスクロールします。
Manage Certificates をクリックして、Certificate Manager を開きます。
図13.6 Certificate Manager の起動
13.8. Thunderbird での証明書のインポート リンクのコピーリンクがクリップボードにコピーされました!
Mozilla Thunderbird メールクライアントに証明書をインポートできます。
前提条件
- デバイスに CA 証明書が保存されている。
手順
- Certificate Manager を開きます。
Authorities タブを選択し、Import をクリックします。
図13.7 Thunderbird で CA 証明書のインポート
- ダウンロードした CA 証明書を選択します。
13.9. Thunderbird での証明書信頼設定の編集 リンクのコピーリンクがクリップボードにコピーされました!
Mozilla Thunderbird メールクライアントで証明書信頼設定を編集できます。
前提条件
- 証明書が正常にインポートされました。
手順
- Certificate Manager を開きます。
- Authorities タブで、適切な証明書を選択し、Edit Trust をクリックします。
証明書信頼設定を編集します。
図13.8 Thunderbird で証明書の信頼設定の編集
13.10. Thunderbird での個人証明書のインポート リンクのコピーリンクがクリップボードにコピーされました!
Mozilla Thunderbird メールクライアントに個人認証用の証明書をインポートできます。
前提条件
- デバイスに個人証明書が保存されている。
手順
- Certificate Manager を開きます。
Your Certificates タブで、Import をクリックします。
図13.9 Thunderbird での認証用個人証明書のインポート
- 必要な証明書をコンピューターからインポートします。
- Certificate Manager を閉じます。
メインメニューを開き、Account Settings を選択します。
図13.10 メニューからアカウント設定を選択する
アカウントのメールアドレスの下の左側のパネルで End-To-End Encryption を選択します。
End-To-End Encryption セクションの選択
- S/MIME セクションで、1 つ目の Select ボタンをクリックして、メッセージの署名に使用する個人証明書を選択します。
S/MIME セクションで、2 つ目の Select ボタンをクリックして、メッセージの暗号化と復号に使用する個人証明書を選択します。
署名および暗号化/復号に使用する証明書の選択
注記有効な証明書をインポートし忘れた場合は、Manage S/MIME certificate オプションを使用すると、Certificate Manager を直接開くことができます。