見出し画像

391.2 アクティブディレクトリおよびKerberosとLDAPの統合


主題391:OpenLDAPの認証バックエンドとしての利用
391.2 アクティブディレクトリおよびKerberosとLDAPの統合

LinuC300の試験範囲である主題390~397まであるうちの「主題391:OpenLDAPの認証バックエンドとしての利用」から「391.2 アクティブディレクトリおよびKerberosとLDAPの統合」についてのまとめ

  • 重要度:2

  • 説明:
    LDAPとActive Directoryを統合できること。

  • 主要な知識範囲:
    - LDAPのKerberos認証との統合
    - クロスプラットフォーム認証
    - シングルサインオンの概念
    - OpenLDAPとActive Directoryの統合および互換性の制約

  • 重要なファイル、用語、ユーティリティ:
    - Kerberos
    - Active Directory
    - シングル・サインオン
    - DNS


(補足)Kerberos認証の用語

  • KDC(Key Distribution Center)
    ASとTGSで構成されるKerberos認証を実現するための認証機関。

  • AS(Authentication Server)
    認証処理をするサーバー。

  • TGT(Ticket Granting Ticket)
    認証処理で発行されるチケット。

  • TGS(Ticket Granting Server)
    認証処理でチケットを発行するサーバー

  • プリンシパル
    認証するユーザーやコンピューター

  • レルム
    LDAPやActiveDirectoryのドメインに相当するもの。

(参考文献)


LDAPのKerberos認証との統合(1)

WindowsのActiveDirectoryの認証にはKerberos認証が使われていることから、LinuxからActiveDirectoryに対してKerberosで認証することができる。
ただし、Kerberos認証の統合はパスワードのみとなり、ユーザー情報はActiveDirectoryだけでなくLinux側にも保持している必要がある。

~pam_krb5を使う~
Linuxでpam_krb5を使うことでActiveDirectoryに対してKerberos認証することができる。

設定ファイル:
・/etc/krb5.conf:レルム(ドメイン)やKDCサーバーを指定する。
・/etc/pam.d/system-auth:pam_krb5を使う設定をする。
・/etc/nsswitch.conf:ローカルユーザーを参照するfilesを指定する。

(参考文献)

~Kerberosクライアントを使う~
CentOS7、RockyLinux9であればkrb5-workstationとsssdというパッケージを、Ubuntuであればkrb5-userとsssdというパッケージを使う。
設定ファイルは/etc/krb5.confと/etc/sssd/sssd.confで、Kerberos認証に必要なレルムやKDCサーバーの設定をする。

★ /etc/krb5.conf の設定例 ★
[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 allow_weak_crypto = true

[realms]
  EXAMPLE.COM = {
  kdc = kdc.example.com.:88
  admin_server = kdc.example.com
  default_domain = example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
★ /etc/sssd/sssd.conf の設定例 ★
[sssd]
    services = nss, pam
    domains = EXAMPLE.COM

[domain/KDC.EXAMPLE.COM]
    id_provider = files
    auth_provider = krb5
    krb5_realm = EXAMPLE.COM
    krb5_server = kdc.example.com
    krb5_validate = false
    debug_level = 0

(参考文献)


LDAPのKerberos認証との統合(2)

Kerberos認証を実現するためにはKDC(Key Distribution Center)が必要になるが、このKDCのバックエンドデータベースにはdb2, klmdb(lmdb), kldap(ldap) が選択できる。

(参考文献)


クロスプラットフォーム認証

~クロスプラットフォームとは~
Windows、Linux、macOS など異なるOSやハードウェアが混在していたとしても、それを意識することなく利用できる仕組み。 

~クロスプラットフォーム認証~
MicrosoftのActiveDirectoryを使用した認証基盤を使ってLinuxサービスにログオン認証したり、LinuxベースのLDAP サーバー(OpenLDAP)を使用した認証基盤を使ってWindowsクライアントのログオン認証をする仕組み。

OpenLDAPはLDAPそのもの(LDAPのリファレンス実装)であるのに対して、MicrosoftのActiveDirectoryはLDAPを独自に拡張したディレクトリサービス(LDAP互換)と言える。
さらに、Samba4になってからActiveDirectoryドメインコントローラー機能が実装されたことにより、Samba4単体でMicrosoftのActiveDirectoryと同等の機能を提供できるほか、既存のActiveDirectory環境との統合が容易になっている。

~クロスプラットフォームの組み合わせ例~

  • ID管理:Samba4 もしくは WindowsServer によるADドメイン
    Linuxクライアント:nss+pam_krb5, nss+pam_ldap, nss+pam_winbind
    Windowsクライアント:ADドメインに参加する。

  • ID管理:Samba3 もしくは WindowsServer  によるNTドメイン
    Linuxクライアント:nss+pam_winbind
    Windowsクライアント:NTドメインに参加する。

  • ID管理:OpenLDAP
    Linuxクライアント:nss+pam_ldap
    Windowsクライアント:Windowsの資格情報マネージャーを使用する。


シングルサインオンの概念

~シングルサインオン(Single Sign-On:SSO)とは~
1回の認証操作で異なるシステムにログインできるようにする仕組みのこと。

~シングルサインオンの方式~

  • 代行認証方式
    ユーザーがアクセスしようとするサーバーとユーザーの間に配置をした代理認証サーバーがユーザーに代わって認証をする方式。

  • リバースプロキシ方式
    ユーザーがアクセスしようとするWEBサーバーとユーザーの間に配置をしたリバースプロキシが認証サーバーにユーザーが認証済みであるかを確認する方式。

  • エージェント方式
    ユーザーがアクセスしようとするサーバー側にエージェントを組み込んで、ユーザーからアクセスがあるとエージェントが認証サーバーにユーザーが認証済みであるかを確認する方式。

  • フェデレーション方式
    クラウドサービスで多く使われている方式。
    ユーザーの認証情報を保持しているIdP(Identity Provider)と連携して実現する。
    SAML、OpenID、OAuth2 などがある。

  • 透過型方式
    代理認証方式に似ている構成。
    ユーザーがアクセスしようとするサーバーとユーザーの間に配置をした透過型認証サーバーがユーザーに代わって認証をする方式。
    ユーザーは通信経路に透過型認証サーバーがあることを意識しなくても良い。

  • Kerberos認証
    認証サーバーで認証し、認証が成功したことを示すチケット(TGT)が発行され、そのチケット(TGT)を使って利用したいサービスにアクセスすることができる。

(参考文献)


OpenLDAPとActive Directoryの統合および互換性の制約

OpenLDAPもMicrosoftのActiveDirectoryも「組織のユーザーをツリー構造で管理するLDAPv3をベースにしたディレクトリサービスを提供する」という点では同じだが、Microsoftが独自に拡張している部分もあり両者を統合するにあたって互換性や制約を理解しておく必要がある。

  • LDAPのバージョン
    OpenLDAPは、OpenLDAP2.0からLDAPv3に対応している。
    WindowsServerのActiveDirectoryは、LDAPv3をベースにMicrosoftが独自に拡張したもので、Microsoftが独自に拡張した部分についてはOpenLDAPでは対応が難しい。

  • 機能の違い
    ユーザーやグループを管理するだけであれば、どちらもLDAPv3対応なので大差はない。
    ActiveDirectoryであれば、Windowsクライアントの設定情報をコンピューター単位やユーザー単位で管理できるグループポリシー機能が使える。
    また、Windowsクライアント向けであれば代行認証方式のシングルサインオンも実現できる。
    ActiveDirectoryと同等のことをOpenLDAPで実現することは困難で、ActiveDirectory相当のことをLinuxで実現したい場合はLDAP機能が内包されたSamba4を選択することになり、WindowsとLinuxを統合しようとした場合にOpenLDAPを選択する場面は少なくなっている。


参考文献

この記事が気に入ったらサポートをしてみませんか?