当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

作者:精品下载站 日期:2024-12-14 12:29:21 浏览:16 分类:玩电脑

如何在 IPA 和 Active Directory 之间建立信任


目录服务是指提供有关网络资源(例如用户、计算机、打印机、应用程序和其他网络设备)信息的集中数据库的软件应用程序或服务。目录服务有多种示例,包括 Microsoft Active Directory、Novell eDirectory、LDAP、Apple Open Directory、IBM Tivoli Directory Server、IPA 等

Active Directory(AD) 是一种目录服务,用于管理和存储有关网络环境中资源的信息。它是 Microsoft Windows 服务器操作系统的一个组件,组织使用它来集中管理用户、计算机和其他资源。它提供了一个层次结构来组织资源,例如用户、组、计算机和其他网络设备,并允许管理员根据用户的角色或组成员身份分配资源的权限和访问权限。

IPA(身份策略和审核)是一种目录服务,为 Unix 和 Linux 系统提供集中式身份验证、授权和访问控制。它是一个基于 FreeIPA 项目的开源解决方案,结合了多种开源技术,包括 389 Directory Server、MIT Kerberos 和 Dogtag 证书系统。除了提供目录服务之外,IPA 还包括其他功能,例如基于主机的访问控制的集中管理、策略实施和审核。

IPA和AD可以集成在一起工作。这涉及通过在两个目录服务之间建立关系来在 IPA 和 Active Directory 之间创建信任,从而允许它们共享用户和组信息,以及跨两个系统对用户进行身份验证。

此过程通常涉及配置两个目录服务之间的跨领域信任。跨领域信任是一种允许一个域或领域中的用户访问另一个域或领域中的资源的机制。在这种情况下,IPA 和 Active Directory 域将建立跨领域信任关系,这将允许两个域中的用户访问另一个域中的资源。

在 IPA(身份、策略和审核)和 Active Directory (AD) 之间建立信任的好处包括:

  • 集中管理:建立信任后,可以集中管理IPA和AD域中的用户和资源,从而减少管理开销并简化访问管理。
  • 无缝身份验证:信任使一个域中的用户无需输入单独的登录凭据即可访问另一域中的资源。这种无缝身份验证改善了用户体验,并且无需在每个域中维护单独的用户帐户。
  • 提高安全性:IPA 和 AD 之间的信任可以通过允许集中管理访问策略和用户权限来提高安全性。这可确保仅向授权用户授予对资源的访问权限,并防止未经授权的访问。
  • 灵活迁移:如果组织从 AD 迁移到 IPA,则可以建立信任以实现无缝过渡,最大限度地减少对用户的干扰并减少停机时间。
  • 互操作性:IPA 和 AD 之间的信任允许两个域之间的服务和应用程序的互操作性,使用户能够无缝访问两个域上的服务和资源。

在 IPA 和 Active Directory 之间建立信任

总体而言,在IPA和AD之间建立信任可以提高效率、安全性和用户体验,并有助于跨多个域的资源和用户的管理。

对于此测试,我的环境设置如下:

国际音标

IPA server IP address IPA server hostname IPA domain IPA NetBIOS IPA Kerberos realm 192.168.205.12 ipa.master.computingforgeeks.com master.computingforgeeks.com MASTER MASTER.COMPUTINGFORGEEKS.COM

广告:

AD DC IP address AD DC hostname AD domain AD NetBIOS AD admins group SID 192.168.205.20 windows ad.computingforgeks.com GEEKS ad_admins_sid (e.g. S-1-5-21-16904141-148189700-2149043814-512)

1.安装并配置IPA服务器

本指南建议使用 FreeIPA 3.3.3 或更高版本。在开始之前,请设置您的系统的主机名:

sudo hostnamectl set-hostname ipa.master.computingforgeeks.com

您还需要在 IPA 服务器上禁用 Samba 的 IPv6 堆栈。这可以通过创建/修改以下文件来完成:

$ sudo vim /etc/sysctl.d/ipv6.conf
 # Disable IPv6
 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.<interface0>.disable_ipv6 = 1

将接口替换为您的专用接口。这将使 IPv6 堆栈保持正常运行,但不会将 IPv6 地址分配给任何网络设备。

您可以使用以下命令在基于 Rhel 的系统上安装 IPA 服务器包:

sudo yum install -y "*ipa-server" "*ipa-server-trust-ad" ipa-server-dns bind bind-dyndb-ldap

安装 IPA 服务器时,请确保安装了 ipa-server-trust-ad 模块。

现在使用以下命令设置 IPA 服务器:

sudo ipa-server-install --domain master.computingforgeeks.com --realm MASTER.COMPUTINGFORGEEKS.COM \
    --reverse-zone=205.168.192.in-addr.arpa. \
    --no-forwarders \
    --no-ntp \
    --setup-dns \
    --ds-password StrongDMPassw0rd \
    --admin-password StrongDMPassw0rd \
    --unattended

现在以管理员用户身份登录。首先,获取门票

kinit admin

使用以下命令确保管理员用户在您的系统上可用:

$ id admin
uid=1634400000(admin) gid=1634400000(admins) groups=1634400000(admins)

$ getent passwd admin
admin:*:1634400000:1634400000:Administrator:/home/admin:/bin/bash

您还可以按照以下指南了解设置 IPA 的详细演示。

  • 在 Rocky Linux 9/AlmaLinux 9 上安装 FreeIPA 服务器
  • 在 Rocky Linux 8 上安装和配置 FreeIPA 服务器
  • 如何在 CentOS 7/RHEL 7 上安装 FreeIPA 服务器
  • 在 Ubuntu 上安装和配置 FreeIPA 服务器

2.安装和配置AD DS

您需要 Windows Server 2008 R2 或更高版本,并且配置了 Active Directory DC 并在 DC 上本地安装了 DNS。这可以使用以下指南来实现:

  • 在 Windows Server 2022 中安装 Active Directory 域服务
  • 在 Windows Server 2019 中安装 Active Directory 域服务

3. 准备跨林信任的AD和IPA

当规划通过IPA客户端访问AD用户时,需要配置跨林信任的IPA服务器。但在此之前,您需要确保:

  • 日期/时间同步

您需要让 IPA 和 AD 具有时区设置和日期/时间匹配。

在 IPA 上,使用以下命令设置您的时区:

sudo timedatectl set-timezone Africa/Nairobi

示例输出:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

同样在 AD 上,确保已配置类似的时区。

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

  • 防火墙配置

如果您允许以下端口通过防火墙将会有所帮助:

##TCP ports: 
80, 88, 443, 389, 636, 464, 53, 135, 138, 139, 445, 1024-1300

##UDP ports: 
88, 464, 53, 123, 138, 139, 389, 445

可以使用以下命令允许所有这些端口:

sudo firewall-cmd --add-service={dns,http,https,ntp,freeipa-ldap,freeipa-ldaps,freeipa-trust} --permanent
sudo firewall-cmd --reload
  • DNS配置

您还需要在 AD 和 IPA 之间建立通信。现在将 FreeIPA 域添加到 Windows Active Directory Server 上的区域。该命令的语法如下:

在 AD 上,在 CMD 上运行以下命令:

C:\> dnscmd 127.0.0.1 /ResetForwarders ipa_ip_address /Slave
C:\> dnscmd 127.0.0.1 /ZoneAdd ipa_domain /Secondary ipa_ip_address

例如:

dnscmd 127.0.0.1 /ResetForwarders 192.168.205.12 /Slave
dnscmd 127.0.0.1 /ZoneAdd master.computingforgeeks.com /Secondary 192.168.205.12

示例输出:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

在 IPA 上,使用具有以下语法的命令:

#IPA v3.x:
ipa dnszone-add ad_domain --name-server=ad_hostname.ad_domain --admin-email='hostmaster@ad_domain' --force --forwarder=ad_ip_address --forward-policy=only --ip-address=ad_ip_address
ipa dnszone-mod [IPA domain name] --allow-transfer=[AD IP address]

##IPA v4.x:
ipa dnsforwardzone-add ad_domain --forwarder=ad_ip_address --forward-policy=only
ipa dnszone-mod [IPA domain name] --allow-transfer=[AD IP address]

例如:

sudo ipa dnsforwardzone-add ad.computingforgeeks.com --forwarder=192.168.205.20  --forward-policy=only
ipa dnszone-mod  master.computingforgeeks.com --allow-transfer=192.168.205.20

示例输出:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

要验证更改是否有效,请使用以下命令:

在广告上:

C:\> nslookup
> set type=srv
> _ldap._tcp.ad_domain
> _ldap._tcp.ipa_domain
> quit

示例输出:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

国际音标:

dig SRV _ldap._tcp.ipa_domain
dig SRV _ldap._tcp.ad_domain

示例输出 1:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

示例输出 2:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

如果您无法收到 IPA 服务器的任何答复,您需要编辑 /etc/resolve.conf 文件并添加 AD IP,如下所示:

$ sudo vim /etc/resolv.conf
# Generated by NetworkManager
search master.computingforgeeks.com
nameserver 192.168.205.20

要使更改永久生效,请修改该文件:

$ sudo vim /etc/NetworkManager/NetworkManager.conf
[main]
#plugins=keyfile,ifcfg-rh
dns=none
rc-manager=unmanaged

保存文件并再次测试。

4. 建立并验证跨林信任

如果您想要将 AD 用户访问 IPA 客户端,您需要确保已在 IPA 客户端将要访问的 IPA 主设备上运行 ipa-adtrust-install 命令连接:

$ sudo ipa-adtrust-install --netbios-name=MASTER -a StrongDMPassw0rd
The log file for this installation can be found in /var/log/ipaserver-adtrust-install.log
==============================================================================
This program will setup components needed to establish trust to AD domains for
the IPA Server.

This includes:
  * Configure Samba
  * Add trust related objects to IPA LDAP server

To accept the default shown in brackets, press the Enter key.

WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing samba configuration.


Do you wish to continue? [no]: yes
Do you want to enable support for trusted domains in Schema Compatibility plugin?
This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users.

Enable trusted domains support in slapi-nis? [no]: yes
.......

在本指南中,我们将在 AD 和 IPA 服务器之间建立双向跨林信任。

有两种方法可以实现此目的:

  • 使用AD管理员凭据:
ipa trust-add --two-way=true --type=ad ad_domain --admin Administrator --password

例如:

ipa trust-add --two-way=true --type=ad ad.computingforgeeks.com --admin Administrator --password

示例输出:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

在命令中;

ipa trust-add 命令中的 -admin 选项必须是 Domain Admins 组的成员。

此时,IPA将在IPA侧创建双向森林信任。对于单向信任,需要省略 -two-way=true 选项。这将在 IPA 端创建单向森林信任,并从 AD 端启动信任验证。

  • AD 管理员凭据不可用

当您没有 AD 管理员凭据时,可以使用以下命令:

ipa trust-add --two-way=true --type=ad "ad_domain" --trust-secret

在这里,您需要在出现提示时输入信任共享密钥。这将在 IPA 方面创建双向森林信任。您需要在AD端手动验证信任。

5. 在 IPA 上配置 Kerberos

大多数应用程序要求 Kerberos 库验证 Kerberos 主体是否可以映射到某些 POSIX 帐户。此外,某些应用程序通过向操作系统请求 Kerberos 库返回的 POSIX 帐户的规范名称来执行其他检查。 OpenSSH 尝试比较未更改的主体名称,但 SSSD 将领域部分小写,因此当尝试通过 SSH 使用 Kerberos 票证登录时,实际用户名是 Administrator@realm,而不是 Administrator@realm。

因此,我们需要定义将 Kerberos 主体映射到系统用户名的规则。我们需要手动编辑 IPA 服务器上的 /etc/krb5.conf 以允许 Kerberos 身份验证。

为此,请将以下两行添加到将看到 AD 用户的任何计算机。

$ sudo vim /etc/krb5.conf
[realms]
IPA_DOMAIN = {
....
  auth_to_local = RULE:[1:$1@$0](^.*@AD_DOMAIN$)s/@AD_DOMAIN/@ad_domain/
  auth_to_local = DEFAULT
}

现在重新启动 KDC 和 SSSD 服务:

service krb5kdc restart
service sssd restart

6.允许AD域用户访问受保护的资源

现在,为了使用户能够访问受信任的资源,需要将它们映射到 IPA 组。这可以通过两种方式完成:

  • 将受信任域中的用户和组添加到 IPA 中的外部组。外部组充当容器,通过安全标识符引用受信任的域用户和组。
  • 将外部组映射到 IPA 中的现有 POSIX 组。该 POSIX 组将被分配一个正确的组 ID (gid),该组将用作映射到该组的所有传入受信任域用户的默认组

为受信任的域用户创建外部 POSIX 组

ipa group-add --desc='AD users external map' ad_users_external --external

为外部 ad_admins_external 群组创建 POSIX 群组:

ipa group-add --desc='AD users' ad_users

现在将 AD 用户添加到 POSIX 组

ipa group-add-member ad_users_external --external "ad.computingforgeeks.com\Domain_User"

例如:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

将外部 IdM 组作为成员添加到 POSIX IdM 组。

ipa group-add-member ad_users --groups ad_users_external

现在用户应该可以在 IPA 控制台上使用,如下所示:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

7. 测试跨林信任

现在我们可以通过使用 AD 中的任何用户连接到 IPA 客户端来测试跨林信任。对于此测试,我们在 AD 服务器上有一个用户 [email 。我们可以使用这个用户登录任何连接到IPA的服务器。

验证用户是否存在:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

测试是否可以使用该用户登录:

[玩转系统] 如何在 IPA 和 Active Directory 之间建立信任

判决

这标志着本关于如何在 IPA 和 Active Directory 之间建立信任的指南的结束。这种集成肯定会让您更轻松地管理整个组织的用户和资源。我希望这对您来说很重要。

相关指南:

  • 将 Windows 系统加入 FreeIPA 领域,无需 Active Directory
  • Kubernetes Kubectl CLI 的 Active Directory 身份验证
  • 将 TrueNAS 与 LDAP/Active Directory 集成以进行用户身份验证

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯