第2章 Samba Winbind を使用して RHEL システムを AD に直接接続

本セクションでは、Samba Winbind を使用して RHEL システムを Active Directory (AD) に接続する方法を説明します。RHEL システムを AD に接続するには、2 つのコンポーネントが必要です。1 つのコンポーネント Samba Winbind は AD のアイデンティティーおよび認証ソースと対話し、もう 1 つのコンポーネントである realmd は利用可能なドメインを検出し、基盤となる RHEL システムサービス (この場合は Samba Winbind) が AD ドメインに接続するように設定します。

2.1. Samba Winbind を使用した直接統合の概要

Samba Winbind は、Linux システムで Windows クライアントをエミュレートし、AD サーバーと通信します。

realmd サービスを使用すると、以下を実行して Samba Winbind を設定できます。

  • ネットワーク認証およびドメインメンバーシップの標準的な設定。
  • アクセス可能なドメインおよびレルムに関する情報を自動的に検出します。
  • ドメインまたはレルムに参加するために高度な設定を必要としません。

以下の点に留意してください。

  • マルチフォレストの AD 設定における Winbind との直接統合は、双方向の信頼が必要になります。
  • idmap_ad プラグインがリモートフォレストユーザーを正常に処理するには、リモートフォレストがローカルフォレストを信頼する必要があります。

Samba の winbindd サービスは、Name Service Switch (NSS) のインターフェースを提供し、ローカルシステムにログインする際にドメインユーザーが AD に対して認証できるようにします。

winbindd を使用すると、追加のソフトウェアをインストールしなくてもディレクトリーとプリンターを共有する設定が強化されます。詳細は、『さまざまな種類のサーバーのデプロイメント』の「Samba をサーバーとして使用」を参照してください。

関連情報

  • man ページの realmd を参照してください。
  • man ページの windbindd を参照してください。

2.2. 直接統合でサポートされる Windows プラットフォーム

RHEL システムと、以下のフォレストおよびドメインの機能レベルを使用する Active Directory フォレストを直接統合できます。

  • フォレスト機能レベルの範囲 - Windows Server 2008 ~ Windows Server 2016
  • ドメイン機能レベルの範囲 - Windows Server 2008 ~ Windows Server 2016

直接統合は、以下のサポート対象のオペレーティングシステムでテストされています。

  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
注記

Windows Server 2019 では、新しい機能レベルが導入されていません。Windows Server 2019 が使用する機能レベルで最も高いものは Windows Server 2016 です。

2.3. AD および RHEL で一般的な暗号化タイプに対応

デフォルトでは、Samba Winbind は RC4、AES-128、および AES-256 の Kerberos 暗号化タイプに対応します。

RC4 暗号化は、新しい暗号化タイプ AES-128 および AES-256 よりも安全ではないと見なされるため、RHEL 8 ではデフォルトで非推奨となり、無効にされています。一方、Active Directory (AD) ユーザーの認証情報と AD ドメイン間の信頼は RC4 暗号化をサポートしており、AES 暗号化タイプに対応していない可能性があります。

一般的な暗号化タイプがないと、RHEL ホストと AD ドメイン間の通信が機能しないか、一部の AD アカウントが認証できない可能性があります。この状況を修正するには、以下の設定のいずれかを変更します。

  • Active Directory で AES 暗号化サポートを有効にする (推奨オプション) - AD フォレストの AD ドメイン間で信頼されるようにするには、Microsoft の記事 「AD DS: Security: Kerberos "Unsupported etype" error when accessing a resource in a trusted domain」を参照してください。
  • RC4 サポートを RHEL で有効化: AD ドメインコントローラーに対する認証が行われるすべての RHEL ホストで次のコマンドを実行します。

    1. update-crypto-policies コマンドを使用して、DEFAULT 暗号化ポリシーに加え AD-SUPPORT 暗号化サブポリシーを有効にします。

      [root@host ~]# update-crypto-policies --set DEFAULT:AD-SUPPORT
      Setting system policy to DEFAULT:AD-SUPPORT
      Note: System-wide crypto policies are applied on application start-up.
      It is recommended to restart the system for the change of policies
      to fully take place.
    2. ホストを再起動します。
重要

AD-SUPPORT 暗号化サブポリシーは、RHEL 8.3 以降でのみ利用できます。

  • RHEL 8.2 以前は RC4 のサポートを有効にするには、cipher = RC4-128+ でカスタム暗号化モジュールポリシーを作成および有効にします。詳細は、ポリシー修飾子を使用したシステム全体の暗号化ポリシーのカスタマイズを参照してください。
  • RHEL 8.0 および RHEL 8.1 で RC4 のサポートを有効にするには、/etc/crypto-policies/back-ends/krb5.config ファイルの permitted_enctypes オプションに +rc4 を追加します。

    [libdefaults]
    permitted_enctypes = aes256-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 camellia256-cts-cmac aes128-cts-hmac-sha1-96 aes128-cts-hmac-sha256-128 camellia128-cts-cmac +rc4

関連情報

2.4. RHEL システムの AD ドメインへの参加

本セクションでは、realmd を使用して Samba Winbind を設定することで、Red Hat Enterprise Linux システムを AD ドメインに参加させる方法を説明します。

手順

  1. AD で Kerberos 認証に非推奨の RC4 暗号化タイプが必要な場合は、RHEL でこの暗号のサポートを有効にします。

    # update-crypto-policies --set DEFAULT:AD-SUPPORT
  2. 以下のパッケージをインストールします。

    # yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator
  3. ドメインメンバーでディレクトリーまたはプリンターを共有するには、samba パッケージをインストールします。

    # yum install samba
  4. 既存の Samba 設定ファイル /etc/samba/smb.conf をバックアップします。

    # mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
  5. ドメインに参加します。たとえば、ドメイン ad.example.com に参加するには、以下のコマンドを実行します。

    # realm join --membership-software=samba --client-software=winbind ad.example.com

    上記のコマンドを使用すると、realm ユーティリティーが自動的に以下を実行します。

    • ad.example.com ドメインのメンバーシップに /etc/samba/smb.conf ファイルを作成します。
    • ユーザーおよびグループの検索用の winbind モジュールを、/etc/nsswitch.conf ファイルに追加します。
    • /etc/pam.d/ ディレクトリーの PAM (プラグ可能な認証モジュール) 設定ファイルを更新します。
    • winbind サービスを起動し、システムの起動時にサービスを起動できるようにします。
  6. 必要に応じて、/etc/samba/smb.conf ファイルの別の ID マッピングバックエンド、またはカスタマイズした ID マッピングを設定します。詳細は、『さまざまな種類のサーバーのデプロイメント』の「Samba ID マッピングの概要」セクションを参照してください。
  7. /etc/krb5.conf ファイルを編集し、以下のセクションを追加します。

    [plugins]
        localauth = {
            module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
            enable_only = winbind
        }
  8. winbind サービスが稼働していることを確認します。

    # systemctl status winbind
    ...
       Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago
    重要

    Samba がドメインのユーザーおよびグループの情報をクエリーできるようにするには、smb を起動する前に winbind サービスを実行する必要があります。

  9. samba パッケージをインストールしてディレクトリーおよびプリンターを共有している場合は、smb サービスを有効化して開始します。

    # systemctl enable --now smb

検証手順

  1. AD ドメインの AD 管理者アカウントなど、AD ユーザーの詳細を表示します。

    # getent passwd "AD\administrator"
    AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
  2. AD ドメイン内のドメインユーザーグループのメンバーをクエリーします。

    # getent group "AD\Domain Users"
        AD\domain users:x:10000:user1,user2
  3. オプションで、ファイルやディレクトリーに権限を設定する際に、ドメインのユーザーおよびグループを使用できることを確認します。たとえば、/srv/samba/example.txt ファイルの所有者を AD\administrator に設定し、グループを AD\Domain Users に設定するには、以下のコマンドを実行します。

    # chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
  4. Kerberos 認証が期待どおりに機能することを確認します。

    1. AD ドメインメンバーで、administrator@AD.EXAMPLE.COM プリンシパルのチケットを取得します。

      # kinit administrator@AD.EXAMPLE.COM
    2. キャッシュされた Kerberos チケットを表示します。

      # klist
      Ticket cache: KCM:0
      Default principal: administrator@AD.EXAMPLE.COM
      
      Valid starting       Expires              Service principal
      01.11.2018 10:00:00  01.11.2018 20:00:00  krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM
              renew until 08.11.2018 05:00:00
  5. 利用可能なドメインの表示:

    # wbinfo --all-domains
    BUILTIN
    SAMBA-SERVER
    AD

関連情報

  • 非推奨の RC4 暗号化を使用しない場合は、AD で AES 暗号化タイプを有効にすることができます。『さまざまな種類のサーバーのデプロイメント』の「GPO を使用した Active Directory で AES 暗号化タイプの有効化」を参照してください。
  • realm ユーティリティーの詳細は、man ページの realm(8) を参照してください。

2.5. realm コマンド

realmd システムの主要なタスク領域は、以下の 2 つになります。

  • ドメインでのシステム登録の管理
  • ローカルシステムリソースへのアクセスが許可されるドメインユーザーの制御

realmd では、コマンドラインツールの realm を使用してコマンドを実行します。ほとんどの realm コマンドでは、ユーティリティーが実行するアクションと、アクションを実行するドメインやユーザーアカウントなどのエンティティーを指定する必要があります。

表2.1 realmd コマンド

コマンド説明

レルムコマンド

discover

ネットワーク上にあるドメインの検出スキャンを実行します。

join

指定したドメインにシステムを追加します。

leave

指定したドメインからシステムを削除します。

list

システムに設定したすべてのドメイン、または検出され設定されているすべてのドメインを表示します。

ログインコマンド

permit

設定されているドメイン内の特定のユーザーまたはすべてのユーザーによるローカルシステムへのアクセスを有効にします。

deny

設定されているドメイン内の特定のユーザーまたはすべてのユーザーがローカルシステムにアクセスするのを制限します。

realm コマンドの詳細は、man ページの realm(8) を参照してください。