Skip to main content

AD 信任前置与建立

建「AD 用户登 Linux」单向信任前要核对的五件事,建信任的命令,以及穿透验证。任一项不满足,trust-add 失败或用户解析不通。

装 IDMatrix 本身不需要这些。它们是建 AD 信任的前置,装前备齐,装完一次建成。需要企业版许可。

信任是什么样的

IDMatrix 与 AD 建立单向信任:IPA 域信任 AD 林,AD 用户拿自己的账号口令登录加入 IPA 域的 Linux 主机;反过来 IPA 用户不能登 Windows。AD 侧不装任何东西,只在 AD 里多一个信任对象和一条到 IPA 域的 DNS 转发。

AD 用户在 Linux 侧的 uid / gid 由 SID 算法映射,信任建立时自动生成 <AD域>_id_range,与本地用户的 ID 范围不重叠。HBAC、sudo 规则可以直接引用 AD 组(通过外部组映射)。

AD 用户登录 Linux 的一次认证

图里没画的:sssd 会缓存票据和 HBAC 规则,AD 不可达时已缓存的用户在 offline_credentials_expiration(默认 0,即不限)内仍能登录;referral 依赖 IPA DNS 能解析 AD 域,这是检查单第 1 条的原因。

检查单

1. DNS

双方要能互相正反解。这是最常见的失败点。

方向要求怎么做
IPA → ADIPA 服务器能解析 AD 域的 SRV 和域控主机名装完后 ipa dnsforwardzone-add <AD域> --forwarder <AD DNS IP> --skip-overlap-check
AD → IPAAD 域控能解析 IPA 服务器 FQDN在 AD DNS 加 IPA 的 A 记录和 PTR,或建到 IPA 域的条件转发
IPA 自身IPA_HOSTNAME 的 A 与 PTR 一致,不是 loopback装机前置,见系统要求

核验:

dig +short _ldap._tcp.<AD> SRV @localhost     # 出 AD 域控
nslookup <AD域控 FQDN>
dig +short -x <IPA IP>                           # 出 IPA FQDN

2. 时间

IPA 与 AD 域控时差小于 5 分钟,最好同一个 NTP 源。超过就是 KRB5KDC_ERR_SKEW,认证全部失败。核验 chronyc tracking,两边对比 date

3. AD 管理员

一个能在 AD 侧创建信任对象的账号,通常是域管理员。口令只在 trust-add 交互时输入,不写进任何文件。

4. 网络

IPA 与 AD 域控之间双向放行:53、88、464、389、636、445、135 和 1024–1300(RPC 动态端口)。裸机 IPA_SETUP_FIREWALLD=true 只放行 IPA 自身端口,AD 相关的要手工补。

5. IPA 侧

  • IPA_SETUP_ADTRUST=true 装了 adtrust。ipactl statussmbwinbind 都 RUNNING。
  • IPA_NETBIOS 不与 AD 域的 NetBIOS 重名。
  • 许可含 AD 域信任模块(企业版)。管理台 IPA Server 下能看到 Trusts 才算。

建信任

建到 AD 的 DNS 转发区

kinit admin
ipa dnsforwardzone-add <AD> --forwarder <AD DNS IP> --skip-overlap-check
dig +short _ldap._tcp.<AD> SRV @localhost

--skip-overlap-check 是因为 AD 域常与 IPA 域同在一个父域下,重叠检查会误拒。

建单向信任

ipa trust-add <AD> --type ad --admin <AD管理> --password --range-type=ipa-ad-trust

预期最后一行 Trust status: Established and verified

不要加 --two-way=True:双向信任要 AD 反连 IPA 做校验,多数环境会报 WERR_CONNECTION_REFUSED;「AD 用户登 Linux」单向就够,也更稳。

验证穿透

ipa trust-show <AD>
id <AD用>@<AD>          # 出 uid / gid / 组,uid 落在 <AD域>_id_range
ipa idrange-find            # 看到自动生成的 <AD域>_id_range

再从一台已加入 IPA 域的 Linux 客户端用 AD 账号 ssh 登一次,家目录自动建出来(playbook 开了 oddjob-mkhomedir)。

让 AD 组管 Linux 访问

AD 组不能直接写进 HBAC 或 sudo 规则,要先映射成 IPA 的外部组,再放进一个 POSIX 组:

ipa group-add --external ad_admins_external
ipa group-add-member ad_admins_external --external '<AD域>\Domain Admins'
ipa group-add ad_admins
ipa group-add-member ad_admins --groups ad_admins_external
# 之后 HBAC / sudo 规则引用 ad_admins

管理台里对应 Identity → Groups → User groups,建组时勾「External」。

排错

症状原因处理
trust-add 找不到 AD 域没建转发区,或 AD DNS 不可达先做上面第一步,dig 验 SRV
WERR_CONNECTION_REFUSED用了双向信任去掉 --two-way,用 --range-type=ipa-ad-trust
时钟偏移 / KRB5KDC_ERR_SKEW时差超过 5 分钟两侧对同一个 NTP 源
trust-add 成功但 id <AD用户>@<AD域> 无返回SSSD 还没取到,或 winbind 没跑ipactl status 看 smb / winbind;sss_cache -E 清缓存再试
AD 用户能 id 但 ssh 拒绝HBAC 默认 allow_all 被禁了,或该用户不在任何允许规则里ipa hbactest --user <AD用户>@<AD域> --host <主机> --service sshd 看哪条规则拦的
管理台没有 Trusts 页许可不含 AD 域信任模块status.jsonmods

本页内容