3 System Security Services Daemonの使用
System Security Services Daemon (SSSD)機能により、クライアント・システムでリモートのアイデンティティ・プロバイダおよび認証プロバイダにアクセスできます。SSSDは、ローカル・クライアントと、構成したバックエンド・プロバイダの間の仲介として機能します。
SSSDを構成する利点は、次のとおりです。
-
システム負荷の削減
クライアントは、識別サーバーまたは認証サーバーと直接通信する必要がありません。
-
オフライン認証
ユーザーIDおよび資格証明のキャッシュを保持するようにSSSDを構成できます。
-
シングル・サインオン・アクセス
ネットワーク資格証明を格納するようにSSSDを構成すると、ユーザーは、ネットワーク・リソースにアクセスするために、各セッションで1回のみローカル・システムに認証される必要があります。
Oracle Linux sssd
プロファイルがデフォルトで使用されるため、SSSDサービスも自動的にインストールされ、新しくインストールされたシステムで有効になります。デフォルトの構成では、システム上のアクセスおよび認証を管理するために、Pluggable Authentication Module (PAM)および名前サービス・スイッチ(NSS)が使用されます。別の認証サービスを使用するか、デフォルト設定の代替値を使用するように構成をカスタマイズする場合を除き、これ以上の構成は必要ありません。
SSSDの詳細は、https://sssd.io/を参照してください。
SSSDのカスタマイズ
デフォルトでは、sssd
プロファイルで使用されるSSSDサービスは、システム上のアクセスおよび認証を管理するために、Pluggable Authentication Module (PAM)および名前サービス・スイッチ(NSS)を使用します。プロファイルの追加機能を有効にしてSSSD認証をカスタマイズする場合は、有効にした機能に対してSSSDを構成する必要もあります。
SSSD構成をカスタマイズするには、/etc/SSSD/conf.d
ディレクトリ内に構成ファイルを作成します。SSSDの開始時に各構成ファイルを有効にするには、.conf
接尾辞が必要です。構成ファイルは、フォーマットとしてini形式の構文を使用します。コンテンツは、大カッコで識別されるセクションと、key = value
エントリとしてリストされるパラメータで構成されます。SSSD用に提供されているマニュアル・ページは包括的で、使用可能なオプションに関する詳細情報を提供します。
次の例は、構成されたKerberosでLDAPプロバイダに対して認証するようにSSSDを構成する方法を示しています。
-
機能の構成ファイルを作成し、
/etc/sssd/conf.d
(/etc/sssd/conf.d/00-ldap.conf
など)に格納します -
次のようなパラメータ定義を使用して
/etc/sssd/conf.d/00-ldap.conf
を構成します。[sssd] config_file_version = 2 domains = LDAP services = nss, pam [domain/LDAP] id_provider = ldap ldap_uri = ldap://ldap.mydom.com ldap_search_base = dc=mydom,dc=com auth_provider = krb5 krb5_server = krbsvr.mydom.com krb5_realm = MYDOM.COM cache_credentials = true min_id = 5000 max_id = 25000 enumerate = false [nss] filter_groups = root filter_users = root reconnection_retries = 3 entry_cache_timeout = 300 [pam] reconnection_retries = 3 offline_credentials_expiration = 2 offline_failed_login_attempts = 3 offline_failed_login_delay = 5
-
[sssd]
-
SSSD監視オプション、ドメインおよびサービスの構成設定が含まれています。SSSD監視サービスは、SSSDで提供されるサービスを管理します。
-
services
は、サポートされているサービスを定義し、nss
(名前サービス・スイッチ)およびpam
(Pluggable Authentication Module)が含まれています。 -
domains
エントリでは、認証ドメインを定義するセクションの名前を指定します。
-
-
[domain/LDAP]
-
Kerberos認証を使用するLDAPアイデンティティ・プロバイダのドメインを定義します。各ドメインでは、ユーザー情報の格納場所、認証方法および構成オプションを定義します。SSSDは、LDAPアイデンティティ・プロバイダ(OpenLDAP、Red Hat Directory Server、IPA、Microsoft Active Directoryなど)とともに使用でき、システム固有のLDAPまたはKerberos認証のいずれかを使用できます。
-
id_provider
では、プロバイダのタイプ(この例ではLDAP)を指定します。 -
ldap_uri
では、SSSDが接続できるLDAPサーバーのUniversal Resource Identifier (URI)のカンマ区切りリスト(優先度順)を指定します。 -
ldap_search_base
では、共通名(cn
)などの相対識別名(RDN)でLDAPユーザー操作を実行するときにSSSDで使用する基本識別名(dn
)を指定します。 -
auth_provider
エントリでは、認証プロバイダ(この例ではKerberos)を指定します。 -
krb5_server
は、SSSDが接続できるKerberosサーバーのカンマ区切りリスト(優先度順)を指定します。 -
krb5_realm
では、Kerberosレルムを指定します。 -
cache_credentials
では、SSSDがユーザー資格証明(チケット、セッション・キー、オフライン認証とシングル・サインオンをサポートするためのその他の識別情報など)をキャッシュするかどうかを指定します。ノート:
SSSDがLDAPサーバーでKerberos認証を使用できるようにするには、Simple Authentication and Security Layer (SASL)およびGeneric Security Services API (GSSAPI)の両方を使用するようにLDAPサーバーを構成する必要があります。OpenLDAPに対するSASLおよびGSSAPIの構成の詳細は、https://www.openldap.org/doc/admin24/sasl.htmlを参照してください。
-
min_id
およびmax_id
では、ユーザーおよびグループIDの値に対する上限と下限を指定します。 -
enumerate
では、SSSDがプロバイダで使用可能なユーザーおよびグループの完全なリストをキャッシュするかどうかを指定します。ドメインに含まれるユーザーまたはグループが比較的少数である場合を除き、False
に設定することをお薦めします。
-
-
[nss]
-
SSSデータベースと名前サービス・スイッチ(NSS)を統合するNSSモジュールを構成します。
-
filter_users
およびfilter_groups
のために、NSSはSSSから取得される指定されたユーザーおよびグループに関する情報を抽出できません。 -
reconnection_retries
では、データ・プロバイダがクラッシュした場合にSSSDで再接続を試行する回数を指定します。 -
enum_cache_timeout
では、SSSDがユーザー情報リクエストをキャッシュする秒数を指定します。
-
-
[pam]
-
SSSDとPAMを統合するPAMモジュールを構成します。
-
offline_credentials_expiration
では、認証プロバイダがオフラインの場合にキャッシュ・ログインを許可する日数を指定します。 -
offline_failed_login_attempts
では、認証プロバイダがオフラインの場合に許可されるログイン試行の失敗回数を指定します。 -
offline_failed_login_delay
では、許可されるログイン試行の失敗の制限を超えてから何分後に新しいログイン試行が許可されるかを指定します。
-
-
-
/etc/sssd/conf.d/00-ldap.conf
のモードを0600に変更します。sudo chmod 0600 /etc/sssd/conf.d/00-ldap.conf
-
まだ開始していない場合は、SSSDサービスを有効にします。
-
sssd
プロファイルを選択します。sudo authselect select sssd
SSSDサービスの詳細は、sssd(8)
マニュアル・ページおよびhttps://pagure.io/SSSD/sssd/を参照してください。また、sssd.conf(5)
、sssd-ldap(5)
、sssd-krb5(5)
、sssd-ipa(5)
およびその他のマニュアル・ページも参照できます。
Pluggable Authentication Moduleについて
Pluggable Authentication Modules (PAM)機能は、sssd
プロファイルで使用される認証メカニズムで、アプリケーションで認証を使用してユーザーのアイデンティティを検証する方法を構成できます。/etc/pam.d
ディレクトリにあるPAM構成ファイルには、アプリケーションでの認証手順が記述されています。各構成ファイルの名前は、モジュールが認証を提供するアプリケーションの名前と同じかほぼ同じす。たとえば、passwdおよびsudoの構成ファイルの名前は、passwd
およびsudo
です。
各PAM構成ファイルには、認証モジュールに対するコールのリストまたはスタックが含まれます。たとえば、次のリストでは、login
構成ファイルのデフォルト・コンテンツを示します。
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
auth include postlogin
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
ファイルのコメントは#
文字で始まります。残りの各行で、操作タイプ、制御フラグ、pam_rootok.so
などのモジュール名またはsystem-auth
などの含まれている構成ファイル名、およびモジュールに対する引数を定義しています。PAMは/usr/lib64/security
の共有ライブラリとしての認証モジュールを提供します。
特定の操作タイプの場合、PAMは上から下にスタックを読み取って、構成ファイルに表示されているモジュールをコールします。各モジュールはコールされると、結果(成功または失敗)を生成します。
使用する操作タイプとして、次のタイプが定義されています。
-
auth
-
モジュールは、サービスまたはアプリケーションを使用するために、ユーザーが認証または認可されているかどうかをテストします。たとえば、モジュールはパスワードをリクエストおよび検証できます。こうしたモジュールは、グループ・メンバーシップやKerberosチケットなどの資格証明を設定することもできます。
-
account
-
モジュールは、認証されたユーザーがサービスまたはアプリケーションへのアクセスを許可されているかどうかをテストします。たとえば、モジュールはユーザー・アカウントが期限切れかどうか、またはユーザーが指定の時間にサービスの使用を許可されているかどうかを確認できます。
-
password
-
モジュールは、認証トークンへの更新を処理します。
-
session
-
モジュールは、ユーザーのホーム・ディレクトリのマウントやアンマウントなどの作業を実行して、ユーザー・セッションを構成および管理します。
操作タイプの前にダッシュ(-
)が付いていると、そのモジュールがない場合にPAMはシステム・ログ・エントリを作成および追加しません。
include
以外の制御フラグは、PAMにモジュールの実行結果に対して行う動作を通知します。使用する制御フラグとして、次のフラグが定義されています。
optional
-
それがサービスにリストされている唯一のモジュールである場合、認証にはそのモジュールが必要です。
required
-
アクセスを付与するには、モジュールが成功する必要があります。PAMはモジュールが成功しても失敗しても、スタックの残りのモジュールの実行を継続します。PAMは、失敗をただちにユーザーに通知しません。
requisite
-
アクセスを付与するには、モジュールが成功する必要があります。モジュールが成功した場合、PAMはスタック内の残りのモジュールの実行を継続します。ただし、モジュールが失敗した場合、PAMはただちにユーザーに通知して、スタック内の残りのモジュールの処理を続行しません。
sufficient
-
モジュールが成功した場合、PAMは同じ操作タイプの残りのモジュールを処理しません。モジュールが失敗した場合、PAMは同じ操作タイプの残りのモジュールを処理して、全体的な成功または失敗を判断します。
制御フラグ・フィールドでは、モジュールから返された値に応じてPAMが実行するアクションを指定する1つ以上のルールも指定できます。各ルールは、value=action
という形式をとり、ルールは大カッコで囲まれます。次に例を示します。
[user_unknown=ignore success=ok ignore=ignore default=bad]
モジュールから返された結果が値と一致する場合、PAMは対応するアクションを使用し、一致しない場合は、デフォルトのアクションを使用します。
include
フラグは、PAMが引数として指定されたPAM構成ファイルも参照すべきであることを示します。
ほとんどの認証モジュールおよびPAM構成ファイルには、それぞれ独自のマニュアル・ページがあります。関連するファイルは、/usr/share/doc/pam
ディレクトリに格納されます。
詳細は、pam(8)
マニュアル・ページを参照してください。また、それぞれのPAMモジュールには、pam_unix(8)
、postlogin(5)
、system-auth(5)
など独自のマニュアル・ページがあります。