最近接管了一个域,无法管理域控制器(Ubuntu 系统应该通过 SAMBA 托管 Windows AD)

最近接管了一个域,无法管理域控制器(Ubuntu 系统应该通过 SAMBA 托管 Windows AD)

各位男士(以及女士们,还有介于两者之间的所有人),我感到很困惑。

我是一名 MSP,最近接手了一个新客户。之前的 IT 部门在情况不太好的情况下离开了,我继承了他们的烂摊子。我最近的一个项目是破解他们的 DC。我所有的信息都告诉我,DC 由运行 Samba 的 Ubuntu 系统管理。我被迫重置 Ubuntu 系统的密码,但我不认为 [我可能错了,我不是 Linux 专家] 会导致我的问题,尤其是因为问题在我这样做之前就已经开始了。

一开始很简单,就是尝试将一台新计算机加入域控制器。收到一条错误消息,指出没有 DC。这是个谎言,因为其他计算机已经加入到 DC 中,并且运行正常,如果 DC 出现故障或无法运行,那么它们早就会出现登录问题。

然后我开始调查 DC,这时我才知道它应该是托管在 Ubuntu 系统上。我发现该系统托管在一台 VM 机器上,而且它似乎已启动并正在运行。但是,当我登录时,我做的第一件事就是尝试运行 samba 命令,只是为了确保它已安装。我收到一条错误消息,说未安装 Samba,但可以通过 sudo apt install samba 安装。如果此系统正常运行,并且 DC 没有登录失败或导致其他问题,我唯一能假设的是它必须托管在其他系统上?话虽如此,一切都指向这台机器。我可以将 DNS 连接到它,而且有一次,只有一次,我能够利用 Active Directory 用户和计算机访问它,所以我一定是做错了什么。当然,计算机在那之后重新启动了,断开了我的连接,我无法再次登录。DNS 正常运行,并列出了所有 OU。

最终目标是从系统(无论是什么系统)中提取数据,获取新的 Windows AD 并导入数据。但是,我必须能够重新进入系统才能执行此操作。

我尝试过每个我有密码和帐户的用户。我的帐户具有对所有内容的完全访问权限,每个管理组都已添加到其中(我验证了一次我可以访问系统),并且当我访问其中一个加入域的系统时,我拥有完整的管理员权限。当我尝试连接到域控制器时,我收到一条错误消息:无法找到域 ad.SOMEDOMAIN.com [显然不是真正的域名],因为:访问被拒绝。

我花了至少 30 个小时来做​​这件事。很多时间都是在下班后自己的时间里,因为我不喜欢被别人打败。但是这个系统……它打败了我。我不知道还能去哪里,也不知道还能做什么。

请告诉我,有哪位好心人愿意帮我解决这个问题,或者至少给我一个方向……

我正在尝试从安装了 RSAT 的 Windows 10 工作站访问系统。我已验证 DNS 设置正确,并已尝试从域中的系统执行此操作。它曾经可以正常工作,我的老板最初能够进入系统,但当我获得访问权限时,出现了这个问题。

旧管理员桌面上有一个名为 ADUC 的脚本,它似乎以某种方式调用活动目录,但是当我尝试使用该脚本进行身份验证时,它告诉我密码错误。

有问题的脚本:............ @echo off set /p username="Enter[电子邮件保护]:”

echo 听着! echo %用户名%

runas /netonly /user:%用户名%“mmc %SystemRoot%\system32\dsa.msc”

rem runas /netonly /user:[删除]@ad.[删除].com "mmc %SystemRoot%\system32\dsa.msc"

暂停

......................... 是的,“ad”部分是其域名的一部分。

感谢您的观看!

答案1

一开始很简单,就是尝试将一台新计算机加入域控制器。收到一条错误消息,指出没有 DC。这是个谎言,因为其他计算机已经加入到 DC 中,并且运行正常,如果 DC 出现故障或无法运行,那么它们早就会出现登录问题。

这让我怀疑他们是否不是通过 AD 加入域,而是通过基于 NetBIOS 的旧 NT4 域协议加入域。我认为这在 Windows 7 之前都受支持,现有的加入在 Windows 10 中仍然有效。由于 NT4 域不依赖 DNS,他们不会注意到任何与 DNS 相关的故障。

(或者他们可能正在使用本地缓存的凭据进行 AD 登录......)

但是,当我登录时,我做的第一件事就是尝试运行 samba 命令,只是为了确保它已安装。我收到一条错误消息,提示未安装 Samba,但可以通过 sudo apt install samba 安装。如果此系统正常运行,并且 DC 没有登录失败或导致其他问题,我唯一能假设的是它必须托管在其他系统上?

有可能使用的是本地编译的 Samba 版本,而不是存储库中提供的软件包(很长一段时间以来,Debian 存储库中的软件包已经非常过时了)。例如,我们的 DC 需要一些尚未被上游接受的补丁,因此它们从 运行/usr/local/samba

不要试图跑步samba,特别是如果它预计已经在运行。相反,查看进程列表ps axf或服务列表systemctl -t servicesystemd-cglssystemctl status samba查看是否有任何相关进程正在运行,您通常会看到它们的位置。

使用 Samba 可以轻松直接访问存储 LDAP 条目的原始数据库(甚至修改它 - 例如重置 AD“管理员”密码)。如果您找到文件(它们可能在,/var/lib/samba/private但本地构建可能会将它们保存在其他地方),您可以检查修改时间戳sam.ldb.d/*.ldb,或列出条目以查看它们是否与您在 ADUC 中看到的内容相对应 - 它可能表明此 DC 已经闲置了几年。例如,要列出 OU:

ldbsearch -H /var/lib/samba/private/sam.ldb "(objectClass=organizationalUnit)" name

另外,如果你找到该smb.conf文件(通常位于 /etc/samba 中),我建议稍微增加日志详细程度 - 只是为了看看 DC 是否至少反应您的域加入尝试:

[global]
    # Older Samba versions only accept "log level = 3". Newer ones accept
    # levels for individual subsystems.
    log level = 0 auth:3 auth_audit:3 kerberos:3 rpc_srv:3

当我尝试连接到域控制器时,收到一条错误:无法找到域 ad.SOMEDOMAIN.com [obv. 不是真实域名],因为:访问被拒绝。

在这样的混乱局面下,网络有可能会完全独立的域,托管在不同的域控制器上,但名称完全相同。如果 AD 域未通过 DNS 委派,而是所有计算机都手动配置为直接使用 DC作为他们的 DNS 服务器,那么这两个域名就可以共存,只要它们不交互就不会发生冲突……但是当他们交互(例如,您登录到域 A,但尝试访问域 B 的 DC),您将无法获得任何访问权限。

最终目标是从系统(无论什么系统)中提取数据并获取新的 Windows AD 并导入数据。

关于这一点,如果您打算将新的 Windows DC 加入现有域并进行复制,那么您很可能需要分两步进行(Samba→Win2008→最新版本),因为较新的 Windows Server 版本似乎需要一些 Samba 所缺乏的新 API。因此,首先您需要添加一个临时的 Windows Server 2008 DC,然后删除 Samba DC,然后然后添加真实的 Windows Server 201x/202x DC。

但是,如果您打算使用只需要基本 LDAP 信息的某些迁移工具,则可以ldbsearch按照上述方法从 DC​​ 的 sam.ldb 中提取它。


我的建议是:

  1. 检查一些 DNS SRV 记录,确保它们指向 DC。我会尝试通过 RSAT 执行此操作DNS 管理器(如果它可以连接到 DC),但主要通过实际 DNS:

    host -t srv _kerberos._udp.ad.example.com
    host -t srv _kerberos._tcp.ad.example.com
    host -t srv _kerberos._tcp.dc._msdcs.example.com
    host -t srv _ldap._tcp.ad.example.com
    host -t srv _ldap._tcp.dc._msdcs.example.com
    
    host ad.example.com
    host <dc_name>.ad.example.com
    

    对作为 DNS 服务器的 DC 本身以及公司的常规网络范围的 DNS 服务器执行此操作。

    大概dcdiag.exe 或某个适用于 Windows 的程序。

相关内容