第 6 章 使用 RHEL 系统角色将 RHEL 系统加入到 Active Directory
如果您的组织使用 Microsoft Active Directory (AD)集中管理用户、组和其他资源,您可以将 Red Hat Enterprise Linux (RHEL)主机加入到这个 AD 中。例如,AD 用户可以登录 RHEL,您可以在 RHEL 主机上为经过身份验证的 AD 用户提供服务。通过使用 ad_integration
RHEL 系统角色,您可以将 Red Hat Enterprise Linux 系统集成到活动目录(AD)域中。
ad_integration
角色用于使用没有身份管理(IdM)环境的直接 AD 集成的部署。对于 IdM 环境,请使用 ansible-freeipa
角色。
6.1. 使用 ad_integration
RHEL 系统角色将 RHEL 加入到 Active Directory 域中
您可以使用 ad_integration
RHEL 系统角色来自动化将 RHEL 加入到活动目录(AD)域的过程。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 受管节点使用 DNS 服务器来解析 AD DNS 条目。
- AD 帐户的凭证,该帐户有权将计算机加入到域中。
受管节点可使用以下端口建立到 AD 域控制器的连接:
源端口 目的地端口 协议 service 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.yml New 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: 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
角色不会利用timesync
RHEL 系统角色在受管节点上配置时间同步。
有关 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
验证
检查 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
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.md
文件 -
/usr/share/doc/rhel-system-roles/ad_integration/
目录 - Ansible vault