RHEL システムと Windows Active Directory を直接統合
RHEL ホストを AD に参加させ、AD のリソースにアクセスする
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は質の高いドキュメントを提供することに尽力しており、皆様からのフィードバックを大切にしています。改善にご協力いただくため、Red Hat Jira トラッキングシステムを通じてご提案やエラー報告をお寄せください。
手順
Jira の Web サイトにログインします。
アカウントがない場合、アカウント作成オプションを選択します。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ウィンドウ下部の Create をクリックします。
第1章 SSSD を使用した RHEL システムから AD への直接接続 リンクのコピーリンクがクリップボードにコピーされました!
SSSD と realmd を使用して、RHEL システムを Active Directory (AD) フォレストに直接統合します。この方法は、アルゴリズムによる POSIX ID マッピングと、明示的に定義された AD 属性の使用の両方をサポートします。
RHEL システムを Active Directory (AD) に接続するには、次を使用します。
- アイデンティティーと認証のための System Security Services Daemon (SSSD)
-
realmdは、利用可能なドメインを検出し、基盤となる RHEL システムサービスを設定します。
1.1. SSSD を使用した直接統合の概要 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、認証と認可のための中心的なフレームワークを提供し、オフラインアクセスにはユーザーキャッシュを利用します。これは、Pluggable Authentication Modules (PAM) およびネームスイッチサービス (NSS) と統合され、RHEL システムを AD フォレストに直接接続します。
SSSD は、RHEL システムを以下のいずれかの ID サーバーに接続するのに推奨されるコンポーネントです。
- Active Directory
- RHEL の Identity Management (IdM)
- あらゆる汎用 LDAP または Kerberos サーバー
SSSD との直接統合は、デフォルトで 1 つの AD フォレスト内でのみ機能します。
SSSD が AD と Linux システムを直接統合するように設定する最も便利な方法は、realmd サービスを使用することです。これにより、呼び出し元はネットワーク認証およびドメインメンバーシップを標準的な方法で設定できます。realmd サービスは、アクセス可能なドメインおよびレルムに関する情報を自動的に検出し、ドメインまたはレルムに参加するのに高度な設定を必要としません。
SSSD は、AD との直接統合および間接統合の両方に使用でき、ある統合アプローチから別の統合アプローチに切り替えることができます。直接統合は、RHEL システムを AD 環境に導入する簡単な方法です。ただし、RHEL システムの共有が増えると、デプロイメントは通常、ホストベースのアクセス制御、sudo、SELinux ユーザーマッピングなどの ID 関連のポリシーをより集中管理する必要があります。最初に、ローカル設定ファイルで、RHEL システムのこのような設定を維持できます。ただし、システムの数が増えると、Red Hat Satellite などのプロビジョニングシステムでは、設定ファイルの配布と管理が簡単になります。直接統合がスケーリングされない場合は、間接統合を検討する必要があります。直接統合 (RHEL クライアントは AD ドメインにあります) から間接統合 (AD と信頼関係がある IdM) への移行の詳細は、Moving RHEL clients from AD domain to IdM Server を参照してください。
IdM が FIPS モードの場合、AD は AES HMAC-SHA1 暗号化のみをサポートしているのに対し、FIPS モードの RHEL 9 はデフォルトで AES HMAC-SHA2 のみをサポートしているため、IdM と AD の統合は機能しません。詳細は、AD ドメインユーザーが FIPS 準拠環境にログインできない (Red Hat ナレッジベース) の ソリューションを参照してください。
IdM は、より制限の厳しい FIPS:OSPP 暗号化ポリシーはサポートしていません。このポリシーは、Common Criteria で評価されたシステムでしか使用できません。
1.2. 直接統合でサポートされる Windows プラットフォーム リンクのコピーリンクがクリップボードにコピーされました!
直接統合するには、特定の Windows Server バージョンと機能レベルが必要です。互換性は、Windows Server 2008 から 2016 までのレベルで動作するフォレストにまで及びます。
- フォレスト機能レベルの範囲: Windows Server 2008 - Windows Server 2016
- ドメイン機能レベルの範囲: Windows Server 2008 - Windows Server 2016
直接統合は、以下のサポート対象のオペレーティングシステムでテストされています。
- Windows Server 2022
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
Windows Server 2019 および Windows Server 2022 では、新しい機能レベルは導入されていません。Windows Server 2019 および Windows Server 2022 で使用される最高の機能レベルは、Windows Server 2016 です。
1.3. AD との統合オプション: POSIX ID マッピングまたは POSIX 属性の使用 リンクのコピーリンクがクリップボードにコピーされました!
Linux と Windows は異なるアイデンティティーフォーマットを使用している。SSSD は、アルゴリズムによる ID マッピングまたは明示的な AD 属性のいずれかを使用して、POSIX UID と GID を AD ユーザーに割り当てることにより、これらのシステムを整合させます。
- Linux では、ユーザー ID (UID) と グループ ID (GID) が使用されます。ユーザーアカウントおよびグループアカウントの管理の概要 を参照してください。Linux の UID および GID は、POSIX 標準に準拠します。
- Windows は、セキュリティー ID (SID) を使用します。
RHEL システムを AD に接続すると、AD のユーザー名とパスワードを使用して認証できます。名前の重複が原因で競合が生じ、認証プロセスが中断される可能性があるため、Windows ユーザーと同じ名前の Linux ユーザーを作成しないでください。
RHEL システムに対して AD ユーザーとして認証するには、UID と GID が割り当てられている必要があります。SSSD を使用すると、POSIX ID マッピングまたは AD の POSIX 属性を使用して AD と統合できます。デフォルトでは、POSIX ID マッピングが使用されます。
1.4. POSIX ID マッピングを使用した AD への接続 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、Active Directory セキュリティー識別子 (SID) をアルゴリズムによって POSIX ID に変換します。このマッピングにより、同じ ID 範囲内にあるすべての RHEL システム間で、UID と GID の一貫性が確保されます。
- SSSD が新しい AD ドメインを検出すると、利用可能な ID の範囲を新しいドメインに割り当てます。
- AD ユーザーが SSSD クライアントマシンに初めてログインすると、SSSD は、ユーザーの SID およびそのドメインの ID 範囲を基にした UID など、SSSD キャッシュにユーザーのエントリーを作成します。
- AD ユーザーの ID は同じ SID から一貫した方法で生成されます。そのため、ユーザーはどの RHEL システムにログインしても、同じ UID と GID を持ちます。
全クライアントシステムが SSSD を使用して SID を Linux ID にマッピングすると、マッピングは一貫性を維持します。一部のクライアントが別のソフトウェアを使用する場合は、以下のいずれかを選択します。
- すべてのクライアントで同じマッピングアルゴリズムが使用されていることを確認します。
- AD に定義されている明示的な POSIX 属性を使用します。
詳細は、sssd-ad man ページの ID マッピングに関するセクションを参照してください。
1.4.1. SSSD を使用した AD ドメインの検出および参加 リンクのコピーリンクがクリップボードにコピーされました!
realmd サービスを使用して Active Directory ドメインを特定し、SSSD を使用して RHEL システムをドメインに自動的に登録します。このプロセスは、SSSD をアイデンティティーと認証用に設定します。
前提条件
必要なポートが開いていることを確認する。
- DNS に AD ドメインコントローラーサーバーが使用されていることを確認します。
- 両方のシステムのシステム時刻が同期していることを確認します。これにより、Kerberos が正常に機能できるようになります。
手順
以下のパッケージをインストールします。
# dnf install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation特定のドメインの情報を表示するには、
realm discoverを実行して、検出するドメイン名を追加します。# realm discover ad.example.comad.example.com type: kerberos realm-name: AD.EXAMPLE.COM domain-name: ad.example.com configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-commonrealmdシステムは DNS SRV ルックアップを使用して、このドメイン内のドメインコントローラーを自動検索します。注記realmdシステムは、Active Directory ドメインと Identity Management ドメインの両方を検出できます。両方のドメインが環境に存在する場合は、特定タイプのサーバーに検出結果を絞り込むには--server-software=active-directoryオプションを使用します。realm joinコマンドを使用して、ローカルの RHEL システムを設定します。realmdスイートは、必要なすべての設定ファイルを自動的に編集します。たとえば、ad.example.comドメインの場合は、次のコマンドを実行します。# realm join ad.example.com
検証
管理者ユーザーなど、AD ユーザーの詳細を表示します。
# getent passwd administrator@ad.example.comadministrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bash
1.5. Active Directory で定義された POSIX 属性を使用した AD への接続 リンクのコピーリンクがクリップボードにコピーされました!
Active Directory は、UID やホームディレクトリーなどの POSIX 属性を保存します。SSSD はデフォルトでローカルオーバーライドを作成します。自動 ID マッピングを無効にすると、SSSD は代わりに AD で定義された値を使用するようになります。最適なパフォーマンスを得るには、これらの属性を AD グローバルカタログに公開してください。
POSIX 属性がグローバルカタログにない場合、SSSD は LDAP ポート上の個々のドメインコントローラーに直接接続します。
前提条件
必要なポートが開いていることを確認する。
- DNS に AD ドメインコントローラーサーバーが使用されていることを確認します。
- 両方のシステムのシステム時刻が同期していることを確認します。これにより、Kerberos が正常に機能できるようになります。
手順
以下のパッケージをインストールします。
# dnf install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation--automatic-id-mapping=noオプションを指定したrealm joinコマンドを使用して、POSIX ID マッピングを無効にしてローカル RHEL システムを設定します。realmdスイートは、必要なすべての設定ファイルを自動的に編集します。たとえば、ad.example.comドメインの場合は、次のコマンドを実行します。# realm join --automatic-id-mapping=no ad.example.comすでにドメインに参加している場合は、SSSD で POSIX ID マッピングを手動で無効にできます。
-
/etc/sssd/sssd.confファイルを開きます。 -
AD ドメインセクションで、
ldap_id_mapping = false設定を追加します。 SSSD キャッシュを削除します。
rm -f /var/lib/sss/db/*SSSD を再起動します。
systemctl restart sssdSSSD は、ローカルで作成するのではなく、AD の POSIX 属性を使用するようになりました。
注記AD のユーザーに関連する POSIX 属性 (
uidNumber、gidNumber、unixHomeDirectory、およびloginShell) を設定する必要があります。-
検証
管理者ユーザーなど、AD ユーザーの詳細を表示します。
# getent passwd administrator@ad.example.comadministrator@ad.example.com:*:10000:10000:Administrator:/home/Administrator:/bin/bash
1.6. SSSD を使用したさまざまな AD フォレストでの複数ドメインへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Active Directory (AD) マネージドサービスアカウント (MSA) を使用すると、複数のフォレストにまたがる AD ドメインにアクセスできます。このアプローチでは、環境間の正式な信頼関係を構築する必要がなくなります。
Managed Service Account を使用した AD へのアクセス を参照してください。
1.7. AD プロバイダーが動的 DNS 更新を処理する方法 リンクのコピーリンクがクリップボードにコピーされました!
Active Directory (AD) は、非アクティブな DNS レコードを削除します。SSSD は、安全な GSS-TSIG アップデートを介してクライアントレコードを自動的に更新することで、このようなデータ損失を防ぎます。これらのアップデートは、システム再起動時、プロバイダーの再起動時、またはスケジュールされた間隔で実行されます。
AD は、非アクティブなレコードをタイムアウト (エイジング) させ、削除 (スカベンジング) することで、DNS レコードを積極的に維持します。
デフォルトでは、SSSD サービスは、RHEL クライアントの DNS レコードを以下の間隔で更新します。
- アイデンティティープロバイダーがオンラインになるタイミング。
- RHEL システムが再起動したタイミング。
/etc/sssd/sssd.conf設定ファイルのdyndns_refresh_intervalオプションで指定される間隔。デフォルト値は86400秒 (24 時間) です。注記dyndns_refresh_intervalオプションを DHCP リースと同じ間隔に設定すると、IP リースの更新後に DNS レコードを更新できます。
SSSD は、Kerberos/GSSAPI for DNS (GSS-TSIG) を使用して動的 DNS 更新を AD サーバーに送信します。そのため、必要な操作は、AD へのセキュアな接続を有効にするだけです。
1.8. AD プロバイダーの動的 DNS 設定の変更 リンクのコピーリンクがクリップボードにコピーされました!
System Security Services Daemon (SSSD) サービスは、デフォルトの間隔で DNS レコードを更新します。sssd.conf の 設定を変更することで、カスタム更新スケジュールを設定したり、PTR レコードの更新を制御したり、特定の有効期限 (TTL) 値を定義したりすることが可能になります。
前提条件
- RHEL ホストが SSSD サービスを使用して Active Directory 環境に追加している。
-
/etc/sssd/sssd.conf設定ファイルを編集するのに必要なroot権限がある。
手順
-
テキストエディターで
/etc/sssd/sssd.conf設定ファイルを開きます。 AD ドメインの
[domain]セクションに以下のオプションを追加して、DNS レコードの更新間隔を 12 時間に設定し、PTR レコードの更新を無効にして DNS レコード Time To Live (TTL) を 1 時間に設定します。[domain/ad.example.com] id_provider = ad ... dyndns_refresh_interval = 43200 dyndns_update_ptr = false dyndns_ttl = 3600-
/etc/sssd/sssd.conf設定ファイルを保存して閉じます。 SSSD サービスを再起動して、設定の変更を読み込みます。
[root@client ~]# systemctl restart sssd注記sssd.confファイルのdyndns_updateオプションをfalseに設定すると、動的 DNS 更新を無効にできます。[domain/ad.example.com] id_provider = ad ... dyndns_update = false
1.9. AD プロバイダーが信頼されるドメインを処理する方法 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、単一の Active Directory (AD) フォレスト内でのドメイン検出のみをサポートします。デフォルトでは、すべてのフォレストドメインのオブジェクトを解決しようとします。ad_enabled_domains で特定のドメインを定義することで、到達不能な接続を除外し、パフォーマンスを最適化できます。
/etc/sssd/sssd.conf 設定ファイルで id_provider = ad オプションを設定すると、SSSD は信頼できるドメインを次のように処理します。
-
SSSD は、AD フォレストのドメインを 1 つだけサポートします。SSSD が複数のフォレストから複数のドメインにアクセスする必要がある場合は、SSSD の代わりに信頼 (推奨) または
winbinddサービスで IPA を使用することを検討してください。 デフォルトでは、SSSD はフォレスト内のすべてのドメインを検出し、信頼されるドメイン内のオブジェクトの要求が到達すると、SSSD はこれを解決しようとします。
信頼できるドメインに到達できない、または地理的に離れているために遅くなる場合は、
/etc/sssd/sssd.confにad_enabled_domainsパラメーターを設定して、どの信頼ドメインから SSSD がオブジェクトを解決するかを制限できます。- デフォルトでは、完全修飾ユーザー名を使用して信頼されるドメインのユーザーを解決する必要があります。
1.10. SSSD を使用した Active Directory サイトの自動検出のオーバーライド リンクのコピーリンクがクリップボードにコピーされました!
Active Directory (AD) サイトは、ドメインコントローラーを地理的にグループ化することでトラフィックを最適化します。SSSD は低遅延を確保するために、最も近いサイトを自動的に照会します。サイトを手動で定義すると、このプロセスが上書きされ、特定の場所への接続が強制されます。
このセクションでは、SSSD が自動検出を使用して接続先である AD サイトを見つけ、自動検出を上書きし、サイトを手動で指定する方法を説明します。
1.10.1. SSSD が AD サイトの自動検出を処理する方法 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、DNS SRV ルックアップとコネクションレス LDAP(CLDAP) ピングを通じて、最適な Active Directory (AD) サイトを特定します。このサービスはこれらのリクエストをバッチ処理することで、最も近いドメインコントローラーを効率的に識別し、キャッシュします。
-
SSSD は SRV クエリーを実行して、ドメイン内のドメインコントローラー (DC) を検索します。SSSD は、SSSD 設定ファイルの
dns_discovery_domainオプションまたはad_domainオプションから検出ドメインを読み取ります。 - SSSD は Connection-Less LDAP (CLDAP) を 3 つのバッチでこの DC に ping し、多数の DC に ping 送信しないようにし、到達不可能な DC のタイムアウトを回避します。SSSD がこれらのバッチのいずれかでサイトとフォレスト情報を受け取ると、残りのバッチはスキップされます。
- SSSD は、サイト固有およびバックアップサーバーのリストを作成して保存します。
1.10.2. AD サイトの自動検出の上書き リンクのコピーリンクがクリップボードにコピーされました!
自動サイト検出を回避するには、/etc/sssd/sssd.conf ファイルに ad_site パラメーターを定義してください。サイトを明示的に設定することで、SSSD は認証トラフィックを検出された最寄りのサイトではなく、特定の場所にルーティングするようになります。
前提条件
- SSSD サービスを使用して、RHEL ホストを Active Directory 環境に追加している。
-
rootユーザーとして認証できるため、/etc/sssd/sssd.conf設定ファイルを編集できます。
手順
-
テキストエディターで
/etc/sssd/sssd.confファイルを開きます。 AD ドメインの
[domain]セクションにad_siteオプションを追加します。[domain/ad.example.com] id_provider = ad ... ad_site = ExampleSite-
/etc/sssd/sssd.conf設定ファイルを保存して閉じます。 SSSD サービスを再起動して、設定の変更を読み込みます。
# systemctl restart sssd
1.11. realm コマンド リンクのコピーリンクがクリップボードにコピーされました!
レルム ユーティリティーは、ドメイン登録を管理し、ローカルアクセスポリシーを適用します。特定のサブコマンドは、ネットワークの検出、参加操作、およびローカルホスト上のドメインユーザーの認可を処理します。
realmd では、コマンドラインツールの realm を使用してコマンドを実行します。ほとんどの realm コマンドでは、ユーティリティーが実行するアクションと、アクションを実行するドメインやユーザーアカウントなどのエンティティーを指定する必要があります。
| コマンド | 説明 |
|---|---|
| レルムコマンド | |
| discover | ネットワーク上にあるドメインの検出スキャンを実行します。 |
| join | 指定したドメインにシステムを追加します。 |
| leave | 指定したドメインからシステムを削除します。 |
| list | システムに設定したすべてのドメイン、または検出され設定されているすべてのドメインを表示します。 |
| ログインコマンド | |
| permit | 設定されているドメイン内の特定のユーザーまたはすべてのユーザーによるローカルシステムへのアクセスを有効にします。 |
| deny | 設定されているドメイン内の特定のユーザーまたはすべてのユーザーがローカルシステムにアクセスするのを制限します。 |
1.12. SSSD を使用して RHEL システムを AD に直接統合するために必要なポート リンクのコピーリンクがクリップボードにコピーされました!
直接統合は、DNS、Kerberos、LDAP、および SMB プロトコル用の特定のネットワークポートに依存します。ファイアウォールは、認証とグループポリシー処理を有効にするために、RHEL ホストと Active Directory ドメインコントローラー間のトラフィックを許可する必要があります。
次のポートが開いており、AD ドメインコントローラーと RHEL ホストにアクセスできるようにする必要があります。
| サービス | ポート | プロトコル | 備考 |
|---|---|---|---|
| DNS | 53 | UDP および TCP | |
| LDAP | 389 | UDP および TCP | |
| LDAPS | 636 | TCP | 任意 |
| Samba | 445 | UDP および TCP | AD グループポリシーオブジェクト (GPO) の場合 |
| Kerberos | 88 | UDP および TCP | |
| Kerberos | 464 | UDP および TCP |
パスワードを設定または変更するために、 |
| LDAP グローバルカタログ | 3268 | TCP |
|
| LDAPS グローバルカタログ | 3269 | TCP | 任意 |
| NTP | 123 | UDP | 任意 |
| NTP | 323 | UDP | 任意 |
第2章 Samba Winbind を使用した RHEL システムから AD への直接接続 リンクのコピーリンクがクリップボードにコピーされました!
Samba Winbind は、RHEL システムと Active Directory を統合し、SMB ファイルおよびプリンターのシームレスな共有を実現します。realmd ユーティリティーは、ドメイン検出を自動化し、基盤となる Winbind 認証サービスを設定します。
RHEL システムを Active Directory (AD) に接続するには、次を使用します。
- AD アイデンティティーおよび認証ソースと対話するための Samba Winbind
-
realmdは、利用可能なドメインを検出し、基盤となる RHEL システムサービスを設定します。
2.1. Samba Winbind を使用した直接統合の概要 リンクのコピーリンクがクリップボードにコピーされました!
Samba Winbind は Windows クライアントをエミュレートすることで、Active Directory との直接通信を可能にします。realmd サービスは、NSS 認証のための winbindd サービスの設定を自動化します。このアプローチは中小企業のリソース共有を簡素化するが、マルチフォレストをサポートするには双方向の信頼関係が必要となる。
realmd サービスを使用すると、以下を実行して Samba Winbind を設定できます。
- ネットワーク認証およびドメインメンバーシップの標準的な設定。
- アクセス可能なドメインおよびレルムに関する情報を自動的に検出します。
- ドメインまたはレルムに参加するために高度な設定を必要としません。
以下の点に留意してください。
- マルチフォレストの AD 設定における Winbind との直接統合は、双方向の信頼が必要になります。
-
idmap_adプラグインがリモートフォレストユーザーを正常に処理するには、リモートフォレストがローカルフォレストを信頼する必要があります。
Samba の winbindd サービスは、Name Service Switch (NSS) のインターフェイスを提供し、ローカルシステムにログインする際にドメインユーザーが AD に対して認証できるようにします。
winbindd を使用すると、追加のソフトウェアをインストールしなくてもディレクトリーとプリンターを共有する設定が強化されます。
2.2. Samba Winbind を使用した RHEL システムから AD への直接接続 リンクのコピーリンクがクリップボードにコピーされました!
レルム ユーティリティーは、Active Directory との統合のために Samba Winbind の設定を自動化します。このツールは、依存関係をインストールし、smb.conf ファイルを生成し、システム認証スタックを更新してドメインユーザーを認証します。
手順
AD で Kerberos 認証に非推奨の RC4 暗号化タイプが必要な場合は、RHEL でこの暗号のサポートを有効にします。
# update-crypto-policies --set DEFAULT:AD-SUPPORT以下のパッケージをインストールします。
# dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator \ rb5-workstationドメインメンバーでディレクトリーまたはプリンターを共有するには、
sambaパッケージをインストールします。# dnf install samba既存の Samba 設定ファイル
/etc/samba/smb.confをバックアップします。# mv /etc/samba/smb.conf /etc/samba/smb.conf.bakドメインに参加します。たとえば、ドメイン
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サービスを起動し、システムの起動時にサービスを起動できるようにします。
-
オプション:
/etc/samba/smb.confファイルで、別の ID マッピングバックエンドまたはカスタマイズした ID マッピング設定を指定します。詳細は、Samba ID マッピングの理解および設定 を参照してください。
/etc/krb5.confファイルを編集し、以下のセクションを追加します。[plugins] localauth = { module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so enable_only = winbind }winbindサービスが稼働していることを確認します。# systemctl status winbindActive: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago重要Samba がドメインのユーザーおよびグループの情報をクエリーできるようにするには、
smbを起動する前にwinbindサービスを実行する必要があります。sambaパッケージをインストールしてディレクトリーおよびプリンターを共有している場合は、smbサービスを有効化して開始します。# systemctl enable --now smb
検証
AD ドメインの AD 管理者アカウントなど、AD ユーザーの詳細を表示します。
# getent passwd "AD\administrator"AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bashAD ドメイン内のドメインユーザーグループのメンバーをクエリーします。
# getent group "AD\Domain Users"AD\domain users:x:10000:user1,user2オプション: ファイルとディレクトリーの権限を設定するときに、ドメインのユーザーおよびグループを使用できることを確認します。たとえば、
/srv/samba/example.txtファイルの所有者をAD\administratorに設定し、グループをAD\Domain Usersに設定するには、以下のコマンドを実行します。# chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txtKerberos 認証が期待どおりに機能することを確認します。
AD ドメインメンバーで、
administrator@AD.EXAMPLE.COMプリンシパルのチケットを取得します。# kinit administrator@AD.EXAMPLE.COMキャッシュされた Kerberos チケットを表示します。
# klistTicket 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
利用可能なドメインの表示:
# wbinfo --all-domainsBUILTIN SAMBA-SERVER AD
第3章 RHEL システムロールを使用した Active Directory への RHEL システムの参加 リンクのコピーリンクがクリップボードにコピーされました!
組織で Microsoft Active Directory (AD) を使用してユーザー、グループ、およびその他のリソースを集中管理している場合は、(RHEL) ホストをこの AD に参加させることができます。ad_integration RHEL システムロールを使用すると、Red Hat Enterprise Linux システムの Active Directory (AD) ドメインへの統合を自動化できます。
たとえば、ホストが AD に参加している場合、AD ユーザーは RHEL にログインできるようになり、認証された AD ユーザーが RHEL ホスト上のサービスを利用できるようになります。
ad_integration ロールは、Red Hat Enterprise Linux 環境で Identity Management (IdM) を使用せずに直接 AD 統合を使用するデプロイメント用です。IdM 環境の場合は、ansible-freeipa ロールを使用します。
3.1. ad_integration RHEL システムロールを使用した Active Directory への RHEL システムの参加 リンクのコピーリンクがクリップボードにコピーされました!
RHEL ホストの Active Directory への登録を自動化するには、ad_integration RHEL システムロールをデプロイします。この Ansible ワークフローは、パッケージのインストール、サービスの設定、および暗号化された認証情報による安全なドメイン参加を処理します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードが、AD の DNS エントリーを解決できる DNS サーバーを使用している。
- コンピューターをドメインに参加させる権限を持つ AD アカウントの認証情報がある。
管理対象ノードが、次のポートを使用して AD のドメインコントローラーへの接続を確立できる。
Expand 送信元ポート 送信先ポート プロトコル サービス 1024 - 65535
53
UDP および TCP
DNS
1024 - 65535
389
UDP および TCP
LDAP
1024 - 65535
636
TCP
LDAPS
1024 - 65535
88
UDP および TCP
Kerberos
1024 - 65535
464
UDP および TCP
Kerberos パスワード変更リクエスト
1024 - 65535
3268
TCP
LDAP グローバルカタログ
1024 - 65535
3269
TCP
LDAPS グローバルカタログ
1024 - 65535
123
UDP
NTP (時刻同期が有効な場合)
1024 - 65535
323
UDP
NTP (時刻同期が有効な場合)
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
$ ansible-vault create ~/vault.ymlNew Vault password: <vault_password> Confirm New Vault password: <vault_password>ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。usr: administrator pwd: <password>- 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。--- - name: Active Directory integration hosts: managed-node-01.example.com vars_files: - ~/vault.yml tasks: - name: Join an Active Directory ansible.builtin.include_role: name: redhat.rhel_system_roles.ad_integration vars: ad_integration_user: "{{ usr }}" ad_integration_password: "{{ pwd }}" ad_integration_realm: "ad.example.com" ad_integration_allow_rc4_crypto: false ad_integration_timesync_source: "time_server.ad.example.com"サンプル Playbook で指定されている設定は次のとおりです。
ad_integration_allow_rc4_crypto: <true|false>ロールが管理対象ノードで
AD-SUPPORT暗号化ポリシーを有効にするかどうかを設定します。デフォルトでは、RHEL は脆弱な RC4 暗号化をサポートしていませんが、それでも AD 内の Kerberos で RC4 が必要な場合は、ad_integration_allow_rc4_crypto: trueを設定することでこの暗号化タイプを有効にできます。Kerberos が AES 暗号化を使用する場合は、この変数を省略するか、
falseに設定します。ad_integration_timesync_source: <time_server>-
時刻同期に使用する NTP サーバーを指定します。Kerberos は、リプレイ攻撃を防ぐために、AD のドメインコントローラーとドメインメンバー間の時刻同期を必要とします。この変数を省略すると、
ad_integrationロールは、管理対象ノードで時刻同期を設定するためにtimesyncRHEL システムロールを使用しません。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.mdファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlこのコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook --ask-vault-pass ~/playbook.yml
検証
administratorなどの AD ユーザーが管理対象ノードでローカルに使用可能かどうかを確認します。$ ansible managed-node-01.example.com -m command -a 'getent passwd administrator@ad.example.com'administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bash
第4章 AD への直接接続の管理 リンクのコピーリンクがクリップボードにコピーされました!
接続後の管理により、セキュリティーコンプライアンスとシステム安定性が確保されます。管理者は、RHEL システムを Active Directory の標準に準拠させるために、Kerberos チケットの更新を設定し、きめ細かなアクセス制御を適用し、グループポリシーオブジェクト (GPO) を適用する必要があります。
4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- SSSD または Samba Winbind を使用して、RHEL システムを Active Directory ドメインに接続している。
4.2. デフォルトの Kerberos ホストのキータブの更新間隔を変更 リンクのコピーリンクがクリップボードにコピーされました!
SSSD は adcli を使用して、マシンアカウントのパスワードを 30 日ごとに自動的に更新します。ad_maximum_machine_account_password_age パラメーターを設定すると、このデフォルトの間隔が変更され、特定のセキュリティーポリシーに合わせることができます。
手順
以下のパラメーターを
/etc/sssd/sssd.confファイルの AD プロバイダーに追加します。ad_maximum_machine_account_password_age = value_in_daysSSSD を再起動します。
# systemctl restart sssd-
Kerberos ホストのキータブの自動更新を無効にするには、
ad_maximum_machine_account_password_age = 0を設定します。
4.3. AD ドメインからの RHEL システムの削除 リンクのコピーリンクがクリップボードにコピーされました!
レルム leave コマンドは、ローカル SSSD 設定をクリアすることでシステムを登録解除します。--remove オプションを追加すると、Active Directory データベースからコンピューターアカウントも削除されます。
前提条件
- System Security Services Daemon (SSSD) または Samba Winbind を使用して、RHEL システムを AD に接続しました。
手順
realm leaveコマンドを使用して、ID ドメインからシステムを削除します。このコマンドは、SSSD およびローカルシステムからドメイン設定を削除します。# realm leave ad.example.com注記クライアントがドメインを離れると、AD はアカウントを削除せず、ローカルクライアント設定のみを削除します。AD アカウントを削除するには、
--removeオプションを指定してコマンドを実行します。最初は認証情報なしで接続を試行しますが、有効な Kerberos チケットを持っていない場合は、ユーザーパスワードの入力を求められます。Active Directory からアカウントを削除する権限が必要です。realm leaveコマンドに-Uオプションを付けて実行し、システムを ID ドメインから削除する別のユーザーを指定します。デフォルトでは、
realm leaveコマンドはデフォルトの管理者として実行されます。AD の場合は、管理者アカウントはAdministratorと呼ばれます。ドメインに参加するために別のユーザーを使用していた場合は、そのユーザーとして削除を実行しないといけない場合があります。# realm leave [ad.example.com] -U [AD.EXAMPLE.COM\user]'コマンドは最初に認証情報なしで接続を試みますが、必要に応じてパスワードが要求されます。
検証
ドメインが設定されていないことを確認します。
# realm discover [ad.example.com]ad.example.com type: kerberos realm-name: EXAMPLE.COM domain-name: example.com configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools
4.4. SSSD でドメイン解決順序を設定して、AD ユーザーの短縮名を解決する手順 リンクのコピーリンクがクリップボードにコピーされました!
SSSD はデフォルトで完全修飾名を必須としています。domain_resolution_order を設定すると、デーモンが特定の優先順位に従ってドメインを検索するように強制することで、短い名前解決が可能になります。
この手順では、SSSD 設定でドメイン解決の順序を設定し、ad_username などの短縮名を使用して AD ユーザーおよびグループを解決できるようにします。この設定例では、以下の順序でユーザーおよびグループを検索します。
-
Active Directory (AD) 子ドメイン
subdomain2.ad.example.com -
AD 子ドメイン
subdomain1.ad.example.com -
AD root ドメイン
ad.example.com
前提条件
- SSSD サービスを使用して、RHEL ホストを直接 AD に接続している。
手順
-
テキストエディターで
/etc/sssd/sssd.confファイルを開きます。 このファイルの
[sssd]セクションにdomain_resolution_orderオプションを設定します。domain_resolution_order = subdomain2.ad.example.com, subdomain1.ad.example.com, ad.example.com- ファイルを保存してから閉じます。
SSSD サービスを再起動して、新しい設定を読み込みます。
[root@ad-client ~]# systemctl restart sssd
検証
短縮名だけを使用して、最初のドメインからユーザー情報を取得できることを確認します。
[root@ad-client ~]# id <user_from_subdomain2>uid=1916901142(user_from_subdomain2) gid=1916900513(domain users) groups=1916900513(domain users)
4.5. ドメインユーザーのログインパーミッションの管理 リンクのコピーリンクがクリップボードにコピーされました!
オーバーライドのデフォルトの Active Directory ポリシーには、クライアント側のアクセス制御が含まれています。レルム ユーティリティーは、ローカルの許可ルールと拒否ルールを適用して、特定のドメインユーザーおよびグループへのシステムアクセスを制限します。
ドメインがクライアント側のアクセス制御を適用する場合は、realmd を使用して、そのドメインのユーザーの基本的なアクセスルールである allow または deny を設定できます。
アクセスルールは、システムにあるすべてのサービスへのアクセスを許可または拒否します。特定のシステムリソースまたはドメインに、より具体的なアクセスルールを設定する必要があります。
4.5.1. ドメイン内でユーザーのアクセス権を有効化 リンクのコピーリンクがクリップボードにコピーされました!
レルム permit コマンドは、Active Directory ユーザー用のローカル許可リストを作成します。特定のアカウントに明示的に権限を付与すると、ドメインの残りのアカウントに対して自動的に制限的なデフォルト拒否ポリシーが設定されます。
デフォルトですべてへのアクセスを許可し、レルム許可 -x を使用して特定のユーザーにのみアクセスを拒否することは推奨しません。Red Hat では、代わりに、すべてのユーザーに対してデフォルトのアクセス禁止ポリシーを維持し、レルム許可を使用して選択したユーザーのアクセスのみを許可することが推奨されます。
前提条件
- RHEL システムが Active Directory ドメインのメンバーである。
手順
すべてのユーザーにアクセス権を付与します。
# realm permit --all特定のユーザーにアクセス権を付与します。
$ realm permit aduser01@example.com $ realm permit 'AD.EXAMPLE.COM\aduser01'現在、アクセスを許可できるのはプライマリードメインのユーザーのみで、信頼できるドメインのユーザーには許可できません。これは、ユーザーログインにドメイン名を含める必要があり、SSSD は、現在、
realmdに利用可能な子ドメインに関する情報を提供できないためです。
検証
SSH を使用して、
aduser01@example.comユーザーとしてサーバーにログインします。$ ssh aduser01@example.com@server_name[aduser01@example.com@server_name ~]$ssh コマンドをもう一度使用して、
aduser02@example.comユーザーと同じサーバーにアクセスします。$ ssh aduser02@example.com@server_nameAuthentication failed.
aduser02@example.com ユーザーがシステムへのアクセスを拒否する方法に注目してください。aduser01@example.com ユーザーにのみ、システムにログインするパーミッションを付与しています。指定したログインポリシーが原因で、その Active Directory ドメインの他のユーザーはすべて拒否されます。
sssd.conf ファイルで use_fully_qualified_names を true に設定すると、すべての要求で完全修飾ドメイン名を使用する必要があります。ただし、use_fully_qualified_names を false に設定すると、要求で完全修飾名を使用できますが、出力には簡略化されたバージョンのみが表示されます。
4.5.2. ドメイン内でユーザーのアクセス権を拒否 リンクのコピーリンクがクリップボードにコピーされました!
レルム deny コマンドは、指定されたユーザーまたはドメイン全体からのログイン試行を明示的にブロックします。このローカル制限により、Active Directory で付与されたアクセス許可に関係なくアクセスが防止されます。
特定のユーザーまたはグループのアクセスのみを許可する方が、一部のユーザーへのアクセスを拒否して、他のすべてのユーザーにアクセスを許可するよりも安全です。したがって、デフォルトで全ユーザーにアクセスを許可し、レルムの許可 -x を使用して特定のユーザーのみを拒否することは推奨されません。Red Hat では、代わりに、すべてのユーザーに対してデフォルトのアクセス禁止ポリシーを維持し、レルム許可を使用して選択したユーザーのアクセスのみを許可することが推奨されます。
前提条件
- RHEL システムが Active Directory ドメインのメンバーである。
手順
ドメイン内のすべてのユーザーへのアクセスを拒否します。
# realm deny --allこのコマンドは、
realmアカウントがローカルマシンにログインできないようにします。realm permitを使用して、ログインを特定アカウントに制限します。ドメインユーザーの
login-policyがdeny-any-loginに設定されていることを確認します。[root@replica1 ~]# realm listexample.net type: kerberos realm-name: EXAMPLE.NET domain-name: example.net configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools login-formats: %U@example.net login-policy: deny-any-login-xオプションを使用して特定のユーザーへのアクセスを拒否します。$ realm permit -x 'AD.EXAMPLE.COM\aduser02'
検証
SSH を使用して、
aduser01@example.netユーザーとしてサーバーにログインします。$ ssh aduser01@example.net@server_nameAuthentication failed.
sssd.conf ファイルで use_fully_qualified_names を true に設定すると、すべての要求で完全修飾ドメイン名を使用する必要があります。ただし、use_fully_qualified_names を false に設定すると、要求で完全修飾名を使用できますが、出力には簡略化されたバージョンのみが表示されます。
4.6. RHEL でのグループポリシーアクセス制御の適用 リンクのコピーリンクがクリップボードにコピーされました!
Group Policy Object (GPO) は、AD 環境のコンピューターおよびユーザーに適用可能な Microsoft Active Directory (AD) に保存されているアクセス制御設定の集合です。SSSD は、特定のログオン権限を Linux PAM サービスにマッピングすることにより、これらの Windows ベースのログオンポリシーを RHEL ホストに適用します。
4.6.1. SSSD が GPO アクセス制御ルールを解釈する方法 リンクのコピーリンクがクリップボードにコピーされました!
SSSD はグループポリシーオブジェクト (GPO) を取得し、Active Directory のルールに基づいてユーザーログインを検証します。Windows ログオン権限を Linux PAM サービスにマッピングすることで、デーモンは RHEL ホスト上で集中型アクセスポリシーを直接適用します。
SSSD は AD Windows Logon Rights を Pluggable Authentication Module (PAM) サービス名にマッピングし、GNU/Linux 環境でこれらのパーミッションを強制します。
AD 管理者として、セキュリティーフィルター にリストすることで、GPO ルールのスコープを特定のユーザー、グループ、またはホストに制限できます。
- グループ別フィルタリングの制限
-
SSSD は現在、セキュリティー識別子 (SID)
S-1-5-32-544を持つAdministratorsなど、Active Directory の組み込みグループをサポートしていません。Red Hat は、RHEL ホストを対象とする AD GPO で AD 組み込みグループを使用することは推奨していません。
4.6.2. SSSD がサポートする GPO 設定のリスト リンクのコピーリンクがクリップボードにコピーされました!
SSSD は、Windows ログオン権限の特定のサブセットを適用します。このサービスは、これらの Active Directory ポリシーを sssd.conf パラメーターに直接マッピングし、対話型アクセス、リモートアクセス、およびネットワークアクセスを制御します。
この表は、Windows の グループポリシー管理エディター で指定される Active Directory GPO オプションに対応する SSSD オプションを示しています。
| GPO オプション | 対応する sssd.conf オプション |
|---|---|
| ローカルでのログオンの許可 ローカルでのログオン拒否 |
|
| リモートデスクトップサービスを介したログオンの許可 リモートデスクトップサービスを介したログオンの拒否 |
|
| ネットワークからこのコンピューターへのアクセス ネットワークからこのコンピューターへのアクセスを拒否 |
|
| バッチジョブとしてのログオンの許可 バッチジョブとしてのログオンの拒否 |
|
| サービスとしてのログオンの許可 サービスとしてのログオンの拒否 |
|
4.6.3. GPO 強制を制御する SSSD オプションのリスト リンクのコピーリンクがクリップボードにコピーされました!
/etc/sssd/sssd.conf にある SSSD パラメーターは、グループポリシーオブジェクト (GPO) の適用を制御します。これらの設定により、管理者は厳格な監査と寛容な監査を切り替えたり、デフォルトで拒否するセキュリティーモデルを適用したりすることができます。
ad_gpo_access_controlオプション-
/etc/sssd/sssd.confファイルにad_gpo_access_controlオプションを設定して、GPO ベースのアクセス制御が動作する 3 種類のモードを選択できます。
| ad_gpo_access_control の値 | 動作 |
|---|---|
|
| GPO ベースのアクセス制御ルールが評価され、適用されます。これは、RHEL 8 ではデフォルトの設定です。 |
|
|
GPO ベースのアクセス制御ルールは評価されますが、強制 されません。 |
|
| GPO ベースのアクセス制御ルールは、評価も強制もされません。 |
ad_gpo_implicit_denyオプション-
ad_gpo_implicit_denyオプションは、デフォルトでFalseに設定されます。このデフォルトの状態では、適用可能な GPO が見つからない場合にユーザーがアクセスが許可されます。このオプションをTrueに設定する場合は、GPO ルールを使用したユーザーアクセスを明示的に許可する必要があります。
この機能を使用してセキュリティーを強化することはできますが、アクセスを意図せずに拒否しないように注意してください。Red Hat は、ad_gpo_access_control が permissive に設定されている間に、この機能をテストすることを推奨します。
以下の表では、AD サーバー側で定義したログイン権限と ad_gpo_implicit_deny の値に基づいてユーザーがアクセスを許可または拒否されるタイミングを表しています。
| allow-rules | deny-rules | 結果 |
|---|---|---|
| なし | なし | すべてのユーザーが許可 |
| なし | あり | deny-rules でないユーザーのみが許可 |
| あり | なし | allow-rules のユーザーのみを許可 |
| あり | あり | allow-rules のユーザーのみが許可されますが、拒否ルールでは許可されません |
| allow-rules | deny-rules | 結果 |
|---|---|---|
| なし | なし | すべてのユーザーを拒否 |
| なし | あり | すべてのユーザーを拒否 |
| あり | なし | allow-rules のユーザーのみを許可 |
| あり | あり | allow-rules のユーザーのみが許可されますが、拒否ルールでは許可されません |
4.6.4. GPO アクセス制御モードの変更 リンクのコピーリンクがクリップボードにコピーされました!
グループポリシーオブジェクト (GPO) のアクセス制御モードを調整することで、トラブルシューティングやポリシーのテストが容易になります。SSSD を permissive モードに切り替えると、ログインをブロックすることなくアクセス拒否をログに記録するため、管理者はルールを適用する前に検証できます。
この例では、テスト目的で GPO 操作モードを Enforcing (デフォルト) から Permissive に変更します。
以下のエラーが表示された場合には、GPO ベースのアクセス制御により Active Directory ユーザーはログインできません。
/var/log/secure:Oct 31 03:00:13 client1 sshd[124914]: pam_sss(sshd:account): Access denied for user aduser1: 6 (Permission denied) Oct 31 03:00:13 client1 sshd[124914]: Failed password for aduser1 from 127.0.0.1 port 60509 ssh2 Oct 31 03:00:13 client1 sshd[124914]: fatal: Access denied for user aduser1 by PAM account configuration [preauth]/var/log/sssd/sssd__example.com_.log:(Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad_gpo_perform_hbac_processing] (0x0040): GPO access check failed: [1432158236](Host Access Denied) (Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad_gpo_cse_done] (0x0040): HBAC processing failed: [1432158236](Host Access Denied} (Sat Oct 31 03:00:13 2020) [sssd[be[example.com]]] [ad_gpo_access_done] (0x0040): GPO-based access control failed.
これが望ましくない動作の場合は、AD で正しい GPO 設定のトラブルシューティング中に、この手順で説明されているように、ad_gpo_access_control を Permissive に設定できます。
前提条件
- SSSD を使用して RHEL ホストを AD 環境に追加している。
-
/etc/sssd/sssd.conf設定ファイルの編集には、root権限が必要になります。
手順
SSSD サービスを停止します。
[root@server ~]# systemctl stop sssd-
テキストエディターで
/etc/sssd/sssd.confファイルを開きます。 AD ドメインの
domainセクションで、ad_gpo_access_controlをPermissiveに設定します。[domain/example.com] ad_gpo_access_control=permissive ...-
/etc/sssd/sssd.confファイルを保存します。 SSSD サービスを再起動して、設定の変更を読み込みます。
[root@server ~]# systemctl restart sssd
4.6.5. AD GUI での RHEL ホストの GPO の作成および設定 リンクのコピーリンクがクリップボードにコピーされました!
Group Policy Object (GPO) は、AD 環境のコンピューターおよびユーザーに適用可能な Microsoft Active Directory (AD) に保存されているアクセス制御設定の集合です。この例では、AD ドメインに直接統合された RHEL ホストへのログオンアクセスを制御するために、AD グラフィカルユーザーインターフェイス (GUI) で GPO を作成する方法を示します。
前提条件
- SSSD を使用して RHEL ホストを AD 環境に追加している。
- GUI を使用して AD に変更を加えるための AD 管理者権限がある。
手順
Active Directory Users and Computers 内で、新しい GPO に関連付ける組織単位 (OU) を作成します。
- ドメインを右クリックします。
- New を選択します。
- Organizational Unit を選択します。
- RHEL ホストを表すコンピューターオブジェクトの名前 (ホストが Active Directory に参加したときに作成されたもの) をクリックし、新しい OU にドラッグします。独自の OU に RHEL ホストがあると、GPO はこのホストをターゲットとします。
Group Policy Management Editor 内で、作成した OU の新しい GPO を作成します。
- Forest を展開します。
- Domains を展開します。
- ドメインを展開します。
- 新しい OU を右クリックします。
- Create a GPO in this domain を選択します。
- 新しい GPO の名前 (Allow SSH access や Allow Console/GUI access など) を指定して、OK をクリックします。
新しい GPO を編集します。
- Group Policy Management Editor 内で OU を選択します。
- 右クリックして Edit を選択します。
- User Rights Assignment を選択します。
- Computer Configuration を選択します。
- Policies を選択します。
- Windows Settings を選択します。
- Security Settings を選択します。
- Local Policies を選択します。
- User Rights Assignment を選択します。
ログインパーミッションを割り当てます。
- ローカルコンソール/GUI アクセスを許可するには、Allow log on locally をダブルクリックします。
- SSH アクセスを許可するには、Allow log on through Remote Desktop Services をダブルクリックします。
これらのポリシーのいずれかにアクセスするユーザーをポリシー自体に追加します。
- Add User or Group をクリックします。
- 空白フィールドにユーザー名を入力します。
- OK をクリックします。
第5章 Managed Service Account を使用した AD へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
Active Directory (AD) マネージドサービスアカウント (MSA) は、RHEL ホストが完全なドメイン登録なしにドメインリソースにアクセスするためのメカニズムを提供します。これらのアカウントは、特定のユーザープリンシパルを利用して、安全な LDAP 接続を認証し、システムの主要ドメインメンバーシップとは独立してアイデンティティーインタラクションを管理します。
5.1. Managed Service Account の利点 リンクのコピーリンクがクリップボードにコピーされました!
マネージドサービスアカウント (MSA) を使用すると、RHEL ホストはドメインに参加することなく Active Directory にアクセスできます。このアプローチは、一方通行の信頼の制限を克服し、特定のクライアントが、本来信頼できない環境においても認証を行い、リソースを照会することを可能にする。
たとえば、AD ドメイン production.example.com が、lab.example.com AD ドメインと一方向の信頼関係を持つ場合は、以下の条件が適用されます。
-
labドメインは、productionドメインのユーザーとホストを信頼します。 -
productionドメインは、labドメインのユーザーとホストを 信頼しません。
つまり、client.lab.example.com などの lab ドメインに参加しているホストは、信頼を介して production ドメインからリソースにアクセスできないことを意味します。
client.lab.example.com ホストの例外を作成する場合は、adcli ユーティリティーを使用して、production.example.com ドメイン内の client ホストの MSA を作成できます。MSA の Kerberos プリンシパルを使用して認証することにより、client ホストから production ドメインで安全な LDAP 検索を実行できます。
5.2. RHEL ホスト用の Managed Service Account の設定 リンクのコピーリンクがクリップボードにコピーされました!
adcli ユーティリティーは、ドメイン間認証を容易にするために、マネージドサービスアカウント (MSA) とキーファイルを生成します。これらの認証情報を使用して SSSD を設定することで、完全な登録を必要とせずに、RHEL ホストが対象の Active Directory ドメインにアクセスできるようになります。
RHEL ホストから AD リソースにアクセスする必要がある場合、Red Hat では、realm コマンドを使用して RHEL ホストを AD ドメインに参加させることを推奨しています。SSSD を使用した RHEL システムから AD への直接接続 を参照してください。
以下の条件のいずれかが当てはまる場合に限り、この手順を実行します。
- RHEL ホストを AD ドメインに参加させることはできませんが、AD でそのホストのアカウントを作成する必要があります。
- RHEL ホストを AD ドメインに参加させており、一方向の信頼など、参加しているドメインのホストの認証情報が無効な別の AD ドメインにアクセスする必要があります。
前提条件
RHEL ホストの以下のポートが開放され、AD ドメインコントローラーからアクセスできることを確認している。
Expand サービス ポート プロトコル DNS
53
TCP、UDP
LDAP
389
TCP、UDP
LDAPS (オプション)
636
TCP、UDP
Kerberos
88
TCP、UDP
-
production.example.comドメインに MSA を作成する権限を持つ AD 管理者のパスワードがある。 -
adcliコマンドを実行し、/etc/sssd/sssd.conf設定ファイルを変更するために必要な root 権限がある。 -
オプション:
klist診断ユーティリティーを含むkrb5-workstationパッケージがインストールされている。
手順
production.example.comAD ドメインにホスト用の MSA を作成します。[root@client ~]# adcli create-msa --domain=production.example.com作成された Kerberos キータブから MSA に関する情報を表示します。MSA の名前を書き留めておきます。
[root@client ~]# klist -k /etc/krb5.keytab.production.example.comKeytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes128-cts-hmac-sha1-96)/etc/sssd/sssd.confファイルを開き、適切な SSSD ドメイン設定を選択して追加します。MSA が 別のフォレストの AD ドメイン に対応する場合は、
[domain/<name_of_domain>]という名前の新しいドメインセクションを作成し、MSA とキータブに関する情報を入力します。最も重要なオプションは、ldap_sasl_authid、ldap_krb5_keytab、およびkrb5_keytabです。[domain/production.example.com] ldap_sasl_authid = CLIENT!S3A$@PRODUCTION.EXAMPLE.COM ldap_krb5_keytab = /etc/krb5.keytab.production.example.com krb5_keytab = /etc/krb5.keytab.production.example.com ad_domain = production.example.com krb5_realm = PRODUCTION.EXAMPLE.COM access_provider = ad ...警告既存の信頼関係があっても、
sssd-adでは 2 番目のフォレストに MSA が必要です。MSA が ローカルフォレストの AD ドメイン に対応する場合は、
[domain/root.example.com/sub-domain.example.com]形式で新しいサブドメインセクションを作成し、MSA とキータブに関する情報を入力します。最も重要なオプションは、ldap_sasl_authid、ldap_krb5_keytab、およびkrb5_keytabです。[domain/ad.example.com/production.example.com] ldap_sasl_authid = CLIENT!S3A$@PRODUCTION.EXAMPLE.COM ldap_krb5_keytab = /etc/krb5.keytab.production.example.com krb5_keytab = /etc/krb5.keytab.production.example.com ...
検証
MSA として Kerberos TGT (Ticket-granting ticket) を取得できることを確認します。
[root@client ~]# kinit -k -t /etc/krb5.keytab.production.example.com 'CLIENT!S3A$' [root@client ~]# klistTicket cache: KCM:0:54655 Default principal: CLIENT!S3A$@PRODUCTION.EXAMPLE.COM Valid starting Expires Service principal 11/22/2021 15:48:03 11/23/2021 15:48:03 krbtgt/PRODUCTION.EXAMPLE.COM@PRODUCTION.EXAMPLE.COM- AD で、Managed Service Accounts Organizational Unit (OU) にホストの MSA があることを確認します。
5.3. Managed Service Account のパスワードの更新 リンクのコピーリンクがクリップボードにコピーされました!
システムサービスセキュリティーデーモン (SSSD) は、管理対象サービスアカウントの定期的なパスワード変更を自動化します。管理者は、adcli を実行して認証情報を手動で更新することで、このスケジュールを回避し、ローカルのキーファイルが Active Directory の変更と同期されるようにすることができます。
前提条件
- production.example.com AD ドメインにホストの MSA を作成している。
-
オプション:
klist診断ユーティリティーを含むkrb5-workstationパッケージがインストールされている。
手順
Kerberos キータブで、MSA の現在の Key Version Number (KVNO) を表示します。現在の KVNO は 2 です。
[root@client ~]# klist -k /etc/krb5.keytab.production.example.comKeytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes128-cts-hmac-sha1-96)production.example.comAD ドメイン内の MSA のパスワードを更新します。[root@client ~]# adcli update --domain=production.example.com --host-keytab=/etc/krb5.keytab.production.example.com --computer-password-lifetime=0
検証
Kerberos キータブで、KVNO が増加していることを確認します。
[root@client ~]# klist -k /etc/krb5.keytab.production.example.comKeytab name: FILE:/etc/krb5.keytab.production.example.com KVNO Principal ---- ------------------------------------------------------------ 3 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 3 CLIENT!S3A$@PRODUCTION.EXAMPLE.COM (aes128-cts-hmac-sha1-96)
5.4. Managed Service Account の仕様 リンクのコピーリンクがクリップボードにコピーされました!
adcli ユーティリティーは、Active Directory 内で一意のアイデンティティーが作成されることを保証するために、厳格な命名規則を適用します。このユーティリティーは、切り詰められたホスト名にランダムな接尾辞を追加し、既存のアカウントとの競合を防ぐために認証情報を特定のキータブに分離します。
adcli ユーティリティーが作成する MSA (Managed Service Account) の仕様は次のとおりです。
- 追加のサービスプリンシパル名 (SPN) を持つことはできません。
-
デフォルトでは、MSA の Kerberos プリンシパルは、
/etc/krb5.keytab.production.example.comのように、<default_keytab_location>.<Active_Directory_domain>という名前の Kerberos キータブに保存されます。 MSA の名前は 20 文字以内に制限されています。最後の 4 文字は、
!の文字を区切り文字として使用して、指定した短いホスト名に追加された、数字と大文字および小文字の ASCII 範囲からの 3 つのランダムな文字の接尾辞です。たとえば、myhostという短い名前のホストは、次の仕様の MSA を受け取ります。Expand 仕様 値 共通名 (CN) 属性
myhost!A2cNetBIOS 名
myhost!A2c$sAMAccountName
myhost!A2c$production.example.comAD ドメイン内の Kerberos プリンシパルmyhost!A2c$@PRODUCTION.EXAMPLE.COM
5.5. adcli create-msa コマンドのオプション リンクのコピーリンクがクリップボードにコピーされました!
adcli create-msa コマンドは、アカウントのプロビジョニングをカスタマイズするための引数を受け付けます。これらのオプションにより、管理者は組織単位 (OU) を指定したり、DNS 命名規則を上書きしたり、カスタムキーファイルパスを定義したり、安全な LDAPS 通信を強制したりすることができます。
adcli ユーティリティーに渡すことができるグローバルオプションのほかに、MSA (Managed Service Accounts) の処理方法を制御する以下のオプションを指定できます。
-N,--computer-name-
Active Directory (AD) ドメインで作成される MSA の短縮名 (ドットなし)。名前を指定しない場合、
-host-fqdnの最初の部分、またはそのデフォルトがランダムな接尾辞とともに使用されます。 -O,--domain-ou=OU=<path_to_OU>-
MSA を作成する
OUの正式名称。この値を指定しないと、MSA がデフォルトの場所のOU=CN=Managed Service Accounts,DC=EXAMPLE,DC=COMに作成されます。 -H,--host-fqdn=host- ローカルマシンの完全修飾 DNS ドメイン名を上書きします。このオプションを指定しない場合は、ローカルマシンのホスト名が使用されます。
-K,--host-keytab=<path_to_keytab>-
MSA 認証情報を保存するホストのキータブのパス。この値を指定しない場合は、デフォルトの場所の
/etc/krb5.keytabが使用され、/etc/krb5.keytab.domain.example.comのように小文字の Active Directory ドメイン名が接尾辞として追加されます。 --use-ldaps- セキュア LDAP (LDAPS) チャネルを介して MSA を作成します。
--verbose- MSA の作成時に、詳細情報を出力します。
--show-details- MSA の作成後に、その MSA に関する情報を出力します。
--show-password- MSA の作成後、MSA パスワードを出力します。