LAMP 服务器 kerberos 配置针对 dmz 中的只读 Windows KDC 进行身份验证

LAMP 服务器 kerberos 配置针对 dmz 中的只读 Windows KDC 进行身份验证

背景:

我们有许多通过 VPN 连接的 AD 网络(域),并且已建立 AD 信任关系。我们有一个外部托管的 Web 服务器,并且已配置无缝认证对于受信任网络内的任何用户。这种方法可行,但网络团队认为,VPN 连接到不受我们 IT 部门管理的外部 Web 服务器存在太大的安全风险。

我没有内部网络的管理员访问权限,但拥有网络服务器的完全管理员访问权限。

想要:

通过使用 DMZ 中的只读 DC 来处理所有身份验证请求,无需 VPN 即可建立相同的无缝身份验证。

细节:

  1. 我们有多个相互信任并通过 VPN 隧道连接的 AD 域。
  2. 我们在 DMZ 中有一个只读 DC,连接到主 AD 网络
  3. 外部 LAMP Web 服务器 - 我们使用单个实例来测试新配置

已完成的任务:

  1. 将 DMZ DC 添加到 hosts 文件
  2. 更新了 krb5.conf 文件并将单个领域和域 (domain1) 与 DMZ DC 关联
  3. 使用 kinit 在命令行上测试身份验证(有效)
  4. 使用附加领域和域领域映射更新了 krb5.conf 文件,所有域都指向 DMZ DC
  5. 在命令行上测试了来自其中一个附加领域的用户身份验证,但失败了。

当前配置示例

/etc/hosts/:(出于保密原因,我用 x 和真实域名替换了实际 IP)

xxx.xxx.xxx.xxx  dc01.domain1.com, dc01.domain2.com, dc01.domain3.com, dc01.domain4.com

/etc/krb5.conf:

[libdefaults]
 default_realm = REALM1.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 clockskew = 12000
 kdc_timesync = 1

[realms]
 REALM1.COM = {
  kdc = dc01.domain1.com
  admin_server= dc01.domain1.com
 }
 REALM2.COM = {
  kdc = dc01.domain2.com
  admin_server= dc01.domain2.com
 }
 REALM3.COM = {
  kdc = dc01.domain3.com
  admin_server= dc01.domain3.com
 }
 REALM4.COM = {
  kdc = dc01.domain4.com
  admin_server= dc01.domain4.com
 }

问题:

DMZ 未处理受信任域的身份验证请求。我不知道这是 DC 的配置还是 kerberos 配置导致的,因此请求帮助。

花了好几个小时研究 serverfault 上的其他问题,进行谷歌搜索和阅读教程,但似乎没有什么符合我们的情况。

我们能做到我们正在尝试的事情吗?如果可以,我们需要做什么才能让它发挥作用?这是一个将 DMZ 设置为其他领域的 kdc 代理的简单案例吗?


回复 Nathan C ,安全日志显示对 kerberos 服务票证的请求如下:

审核成功 2014 年 5 月 14 日 11:05 Microsoft-Windows-Security-Auditing 4769 Kerberos 服务票证操作“已请求 Kerberos 服务票证。

帐户信息: 帐户名称: [电子邮件保护] 帐户域:DOMAIN1.COM 登录 GUID:{C93D9AAC-6968-6C00-83EF-2C2D54E2363B}

服务信息:服务名称:RODC01$ 服务 ID:DOMAIN1\RODC01$

网络信息:客户端地址:::1 客户端端口:0

附加信息:票证选项:0x40810000 票证加密类型:0x17 失败代码:0x0 过境服务:-

每次请求访问资源(例如计算机或 Windows 服务)时都会生成此事件。服务名称表示请求访问的资源。

通过比较每个事件中的登录 GUID 字段,可以将此事件与 Windows 登录事件关联起来。登录事件发生在被访问的计算机上,该计算机通常与颁发服务票证的域控制器不同。

票证选项、加密类型和失败代码在 RFC 4120 中定义。”

不幸的是,发送给我的日志摘录与我尝试身份验证的时间不符,所以我不知道该日志条目实际上与什么相关。我已请求另一份摘录。


帐户信息:

帐户名称: jameel.rahmaa

提供的领域名称:DOMAIN1.COM

用户 ID:NULL SID

服务信息:

服务名称:krbtgt/DOMAIN1.COM

服务 ID:NULL SID

网络信息:

客户端地址:[WEB IP 隐藏]

客户端端口:34567

附加信息:

票证选项:0x40800000

结果代码:0x6

票证加密类型:0xffffffff

预身份验证类型:-

证书信息:

证书颁发者名称:

证书序列号:

证书指纹:

仅当使用证书进行预认证时才会提供证书信息。

预认证类型、票证选项、加密类型和结果代码在 RFC 4120 中定义。

不知道为什么,但我的名字的最后一个字符被截掉了。

答案1

0x6. KDC_ERR_C_PRINCIPAL_UNKNOWN就是这样...调查一下。听起来你的 SPN 设置不正确,或者它试图使用一个根本不存在的帐户。Wireshark 是另一个可以在 Web 服务器上运行的好工具,用于查看它在发出请求时从 DC 获得什么。

相关内容