粗的广域网和域控制器执行系统状态备份时的 CPU 使用率

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 2789917

本文介绍了如何通过 活动目录(AD) 域控制器的系统状态备份它传递性地更新会导致活动目录服务接口 (ADSI) 客户端下载聚合架构的引用属性。此下载过程可能会增加角色的域控制器的计算机和网络基础上的负载。
症状
在 活动目录(AD) 目录林中任何域控制器上执行架构分区的系统状态备份时,可能会出现下列问题:
  • 增加的 CPU 使用率,当基于 Windows 的计算机查询引用活动目录的属性域控制器角色计算机上用于以下目的:
    • 检测到聚合架构更新
    • 要从中复制聚合架构如果更改的域控制器检测到
  • 当 ADSI 客户机从域控制器复制聚合架构的内容,增加了轻量目录访问协议 (LDAP) 网络上的通信量。
原因
出现此问题是因为DSA 签名属性更新架构命名上下文 (架构 NC) 上执行系统状态备份域控制器运行 Windows 2003 Service Pack 1 (SP1) 或更高版本时。

DSA 签名属性更新时的系统状态备份,两个引用属性更新日期戳。其中一个属性位于架构 NC 头上和其他位于CN = 聚合,CN = 架构对象。

ADSI 应用程序和脚本运行的 Windows 客户端查询来检测聚合架构更新这些引用属性。当他们检测到这种更新时,ADSI 客户端将下载从域控制器读取 LDAP 通过聚合架构的更新的副本。

注意
检测聚合到 LDAP 查询和网络 I/O 相关的架构的详细信息,请参阅"更多信息"部分。
解决方法
服务器端解决方法和客户端的替代方法通过减少,但不是会消除的 ADSI 客户端下载聚合架构的次数提供了部分止裂槽。可以分别实现的客户端和服务器端的解决方法。这意味着可以同时实现客户端的解决方法只、 服务器端更改或这两种替代方法。

服务器端的解决方法



编辑 DSA 签名

服务器端的解决方法包括防止更新DSA 签名属性架构分区的系统状态备份。DSA 签名属性包含一个DRA_INHIBIT_BACKUP_AUTO_STAMP标志,确定系统状态备份是否更新此属性。但是,因为大的二进制格式存储DSA 签名属性,它无法更改轻松地通过使用 LDP 之类的工具。EXE 或 adsi 编辑。MSC。

若要变通解决此问题,请运行 Windows PowerShell 脚本或防止更新架构分区中的DSA 签名属性系统状态备份的可执行文件,并反过来,架构 NC 头上的whenChanged属性和whenModified特性CN = 合计对象。

请参见 编辑 dSASignature 属性 在 Microsoft 脚本中心网站上的 PowerShell 脚本。

您也可以编译并运行下面的代码示例设置或清除架构 NC 的DSA 签名属性中的DRA_INHIBIT_BACKUP_AUTO_STAMP标志。

无论是否使用 PowerShell 或编程的修复,没有启用DRA_INHIBIT_BACKUP_AUTO_STAMP标志的负面副作用。在"详细信息"部分中介绍了此副作用。

注意:在域控制器上,必须在架构管理员的安全上下文运行此示例代码。

确保定义为最新

最后,请确保 thatIPv4 IPv6 子网、 站点和子网与站点定义在活动的目录林中被最新并涵盖企业所有林状结构中的所有子网。这样做可以使确保计算机运行 ADSI 的应用程序进行查询和聚合模式的复制更新的版本中执行此操作最佳站点的域控制器。有关如何配置站点设置的详细信息,请访问以下 Microsoft TechNet 网站:

示例代码

//+-------------------------------------------------------------------------////// File: dsasignaturemod.c//// This is a sample program for setting or clearing the// DRA_INHIBIT_BACKUP_AUTO_STAMP flag in the dSASignature// attribute on the schema NC.////--------------------------------------------------------------------------#include <windows.h>#include <winldap.h>#include <winber.h>#include <strsafe.h>#include <stdio.h>#include <conio.h>#define CHECKLDAP(result, op) if (result) { printf("%s failed with LDAP error=0x%x(%d)\n", op, result, result); goto Exit; }#define CHECKLDAPLE(result, op) if (!result) { printf("%s failed with LDAP error=0x%x(%d)\n", op, LdapGetLastError(), LdapGetLastError()); goto Exit; }//// Type definitions for the dsaSignature attribute//#define DRA_INHIBIT_BACKUP_AUTO_STAMP (0x1)typedef struct _BACKUP_NC_HEAD_DSA_SIGNATURE_STATE_V1 {DWORD dwFlags;LONGLONG BackupErrorLatencySecs;UUID dsaGuid;} BACKUP_NC_HEAD_DSA_SIGNATURE_STATE_V1;typedef struct _BACKUP_NC_HEAD_DSA_SIGNATURE_STATE {DWORD dwVersion;DWORD cbSize;union{BACKUP_NC_HEAD_DSA_SIGNATURE_STATE_V1 V1;};} BACKUP_NC_HEAD_DSA_SIGNATURE_STATE;// Whether we are setting or clearing the bitBOOL gfSet = FALSE;// Whether we are querying the bitBOOL gfGet = FALSE;// Whether we are automating and want to skip PromptForOK()BOOL skipPrompt = FALSE;// Copy of the schema NC DNLPWSTR pszSchemaNCCopy = NULL;BOOL PromptForOK(){int prompt;BOOL ret = skipPrompt;printf("\n");printf("This program is about to %s the DRA_INHIBIT_BACKUP_AUTO_STAMP flag in\n", gfSet ? "set" : "clear");printf("the dSASignature attribute on the following directory NC:\n");printf("\n");printf(" %S\n", pszSchemaNCCopy);printf("\n");if (!skipPrompt) {printf("Do you wish to continue? (Y\\N)");prompt = _getch();printf("\n");ret = (prompt == 'Y' || prompt == 'y') ? TRUE : FALSE;}return ret;}void Usage(){CHAR szExeName[MAX_PATH];ZeroMemory(szExeName, sizeof(szExeName));GetModuleFileNameA(NULL, szExeName, ARRAYSIZE(szExeName));printf("Usage:\n");printf("\n");printf("%s [/get | /set | /clear] [/auto]\n", szExeName);printf("\n");printf(" /get - queries current state of the DRA_INHIBIT_BACKUP_AUTO_STAMP flag\n");printf(" /set - sets the DRA_INHIBIT_BACKUP_AUTO_STAMP flag\n");printf(" /clear - clears the DRA_INHIBIT_BACKUP_AUTO_STAMP flag\n");printf(" /auto - skips the prompt for proceeding (for automation purposes)\n");printf("\n");}BOOL ParseArgs(int argc, __in char ** argv){BOOL ret = FALSE;if (argc >= 2){if (!_stricmp("/get", argv[1])) {gfGet = TRUE;ret = TRUE;}else if (!_stricmp("/set", argv[1])) {gfSet = TRUE;ret = TRUE;}else if (!_stricmp("/clear", argv[1])) {gfSet = FALSE;ret = TRUE;}if (argc >= 3){if (!_stricmp("/auto", argv[2])) {skipPrompt = TRUE;}}}return ret;} void __cdecl main(int argc, __in char ** argv){BOOL fFoundDSASignature = FALSE;BOOL fFlagSet = FALSE;LDAP* ldap = NULL;ULONG cb = 0;ULONG cch = 0;ULONG result = 0;LPWSTR pszAttrs[2] = { 0 };LPWSTR* ppszSchemaNC = NULL;LDAPMod mod;LDAPMod* mods[2];LDAPMessage* pldapMsg = NULL;LDAPMessage* pldapResults = NULL;struct berval valMod;struct berval* vals[2];struct berval** val = NULL;BACKUP_NC_HEAD_DSA_SIGNATURE_STATE dsaSignature;ZeroMemory(&dsaSignature, sizeof(dsaSignature));if (!ParseArgs(argc, argv)) {Usage();return;}printf("\n");//// Init connection handle//ldap = ldap_init(NULL, LDAP_PORT);CHECKLDAPLE(ldap, "ldap_init");//// Connect to DC//result = ldap_connect(ldap, NULL);CHECKLDAP(result, "ldap_connect");//// Retrieve schema NC name//pszAttrs[0] = L"schemaNamingContext";pszAttrs[1] = NULL;result = ldap_search_sW(ldap,NULL,LDAP_SCOPE_BASE,L"(objectclass=*)",pszAttrs,0,&pldapResults);CHECKLDAP(result, "ldap_search_s for schemaNamingContext");pldapMsg = ldap_first_entry(ldap, pldapResults);CHECKLDAPLE(pldapMsg, "ldap_first_entry");//// Make a copy of the schema NC name//ppszSchemaNC = (LPWSTR*)ldap_get_valuesW(ldap, pldapMsg, L"schemaNamingContext");cch = wcslen(ppszSchemaNC[0]) + 1;pszSchemaNCCopy = (LPWSTR)malloc(cch * sizeof(WCHAR));StringCchCopy(pszSchemaNCCopy, cch, ppszSchemaNC[0]);ldap_value_free(ppszSchemaNC);ppszSchemaNC = NULL;ldap_msgfree(pldapResults);pldapResults = NULL;//// Bind to the DC//result = ldap_bind_s(ldap, pszSchemaNCCopy, NULL, LDAP_AUTH_NEGOTIATE);CHECKLDAP(result, "ldap_bind_s");//// Retrieve current value of the dSASignature attribute//pszAttrs[0] = L"dSASignature";pszAttrs[1] = NULL;result = ldap_search_sW(ldap,pszSchemaNCCopy,LDAP_SCOPE_BASE,L"(objectclass=*)",pszAttrs,0,&pldapResults);CHECKLDAP(result, "ldap_search_s for dSASignature");pldapMsg = ldap_first_entry(ldap, pldapResults);CHECKLDAPLE(pldapMsg, "ldap_first_entry");//// Make a copy of the dSASignature attribute.//val = (struct berval**)ldap_get_values_len(ldap, pldapMsg, L"dSASignature");// Make sure that the value was there and seems to be the correct size.if (val && val[0]) {if (val[0]->bv_len == sizeof(BACKUP_NC_HEAD_DSA_SIGNATURE_STATE)) {memcpy(&dsaSignature, val[0]->bv_val, val[0]->bv_len);fFoundDSASignature = TRUE;}}ldap_value_free_len(val);val = NULL;ldap_msgfree(pldapResults);pldapResults = NULL;//// Sanity check//if (!fFoundDSASignature ||dsaSignature.dwVersion != 1) {printf("The dSASignature attribute was either not\n");printf("found or was in an unexpected format.\n");goto Exit;}//// Cache whether the flag is set already or not//fFlagSet = (DRA_INHIBIT_BACKUP_AUTO_STAMP & dsaSignature.V1.dwFlags) ? TRUE : FALSE;//// If query-only mode, display current setting and leave//if (gfGet) {printf("The target directory %s have the DRA_INHIBIT_BACKUP_AUTO_STAMP set.\n",fFlagSet ? "DOES" : "DOES NOT");goto Exit;}//// If doing a modification, see whether there is anything to do.//if (gfSet && fFlagSet) {printf("The /set operation was specified but the target directory already\n");printf(" has the flag set. Exiting with no changes.\n");goto Exit;}else if (!gfSet && !fFlagSet) {printf("The /clear operation was specified but the target directory already\n");printf(" has the flag cleared. Exiting with no changes.\n");goto Exit;}//// Yes there is work to do; prompt the admin// for approval before you continue.//if (!PromptForOK()) {goto Exit;}//// Set or clear the bit in our local copy//if (gfSet) {dsaSignature.V1.dwFlags |= DRA_INHIBIT_BACKUP_AUTO_STAMP;}else {dsaSignature.V1.dwFlags &= (~DRA_INHIBIT_BACKUP_AUTO_STAMP);}//// Prepare for the modify//ZeroMemory(&valMod, sizeof(valMod));valMod.bv_len = sizeof(dsaSignature);valMod.bv_val = (PCHAR)&dsaSignature;vals[0] = &valMod;vals[1] = NULL;ZeroMemory(&mod, sizeof(mod));mod.mod_op = LDAP_MOD_REPLACE | LDAP_MOD_BVALUES;mod.mod_type = L"dSASignature";mod.mod_vals.modv_bvals = vals;mods[0] = &mod;mods[1] = NULL;//// And do it://result = ldap_modify_s(ldap,pszSchemaNCCopy,mods);CHECKLDAP(result, "ldap_modify_s for dSASignature");printf("\n");printf("Modification succeeded!\n");Exit:if (pszSchemaNCCopy) {free(pszSchemaNCCopy);}if (ldap) {ldap_unbind(ldap);}printf("\n");return;}

示例程序输出

示例程序的输出如下:
C:\>dsasignaturemod.exe /get The target directory DOES NOT have the DRA_INHIBIT_BACKUP_AUTO_STAMP set.
C:\>dsasignaturemod.exe /set  This program is about to set the DRA_INHIBIT_BACKUP_AUTO_STAMP flag inthe dSASignature attribute on the following directory NC:     CN=Schema,CN=Configuration,DC=rootdomain,DC=com Do you wish to continue? (Y\N) Modification succeeded!
C:\>dsasignaturemod.exe /set /auto  This program is about to set the DRA_INHIBIT_BACKUP_AUTO_STAMP flag inthe dSASignature attribute on the following directory NC:     CN=Schema,CN=Configuration,DC=rootdomain,DC=com  Modification succeeded!
C:\>dsasignaturemod.exe /get The target directory DOES have the DRA_INHIBIT_BACKUP_AUTO_STAMP set.
C:\>dsasignaturemod.exe /clear  This program is about to clear the DRA_INHIBIT_BACKUP_AUTO_STAMP flag inthe dSASignature attribute on the following directory NC:     CN=Schema,CN=Configuration,DC=rootdomain,DC=com Do you wish to continue? (Y\N) Modification succeeded!
C:\>dsasignaturemod.exe /clear /auto  This program is about to clear the DRA_INHIBIT_BACKUP_AUTO_STAMP flag inthe dSASignature attribute on the following directory NC:     CN=Schema,CN=Configuration,DC=rootdomain,DC=com  Modification succeeded!

客户端的解决方法

优化的域控制器所选内容

某些应用程序显式连接到特定的域控制器,然后从此域控制器下载更新的架构缓存。但是,应用程序通常将其保持到最佳域控制器查找特定的 LDAP 命名上下文的域控制器定位器。客户端可能会出现明显的延迟在中更新架构缓存,因为它们针对通过慢速网络连接的域控制器。这是有可能发生跨林边界。您的目标应始终是从最近的域控制器的网络下载架构缓存。

解决方法

计算机正在运行 Windows Vista,Windows Server 2008 中或更高版本,可用于聚合的架构的每个计算机的基于存储的配置包含的客户端的解决办法。

在基于 Windows XP 的计算机上聚合架构缓存使用的每台计算机存储区。这意味着,只要任一用户具有管理权限聚合架构下载到本地计算机,登录的所有用户间共享或本地存储在文件系统和注册表中的有写入权限授予经过身份验证的用户。否则为架构缓存必须在每个 ADSI 会话期间下载到 RAM 和 ADSI 会话结束后被放弃。

在 Windows Vista 或更高版本,ADSI 架构缓存是在每个用户存储中实现的。尽管安全得到改进与每个用户的缓存中,每个唯一的用户登录到远程桌面协议 (RDP) 或终端服务器AQ、 展台或其它多用户的系统可能会导致同一台计算机下载 ADSI 架构缓存。

您可以强制撤退到计算机正在运行 Windows Vista 或更高版本的设置中的值为 1 的 HKLM\SYSTEM\CurrentControlSet\Services\ADSI\Cache 注册表路径的注册表 DWORD 机器上的每台计算机存储配置。此外,您必须向经过身份验证的用户授予 %systemroot%\SchCache 和 HKLM\Software\Microsoft\ADs\Providers\LDAP 的写入访问权限。有关详细信息,请参阅 ADSI 和用户帐户控制.

注意:使用"每个机器"商店是在用户注销时,用户的漫游配置文件被删除的情况下尤其有用。这类用户需要建立新的漫游配置文件,可能需要下载聚合架构。具体情况会导致删除漫游配置文件,如下所示:
  • 被配置为使用强制用户配置文件登录的用户。
  • 遵循"删除早于在系统启动时指定天数的用户配置文件"策略的用户。
  • 用户受到了"删除缓存的漫游配置文件副本"策略。
  • 用户的缓存配置文件删除了脚本或工具,如 DELPROF。EXE 或与之等同。
更多信息

ADSI 的信息

ADSI 客户端为访问 活动目录(AD) 以符合对组件对象模型 (COM) 编程实现。

ADSI 应用程序和脚本正在运行的基于 Windows 的计算机维护聚合的 活动目录(AD) 架构的本地副本。在 ADSI 的每个客户端会话开始时,检查更改的引用架构属性。在 活动目录(AD) 中的没有显式属性唯一地标识所有可能对 活动目录(AD) 架构,因为代理属性用于确定在基于 Windows 的计算机应从客户端的相应域中的域控制器通过网络复制聚合架构的更新的副本。ADSI 应用程序的示例如下所示:
  • 活动目录管理中心 Microsoft 管理控制台 (MMC) 管理单元中
  • 活动目录(AD) 域和信任 MMC 管理单元中
  • 活动目录(AD) 站点和服务 MMC 管理单元中
  • 活动目录(AD) 用户和计算机 MMC 管理单元中
  • ADSI 编辑 mmc 管理单元
  • DHCP mmc 管理单元
  • DNS 管理器 mmc 管理单元
  • Exchange 管理控制台
  • 组策略管理 mmc 管理单元
  • Squery.exe

用于检测对聚合架构更改的属性

下表概述了用于检测每个 Windows 版本的聚合架构更改的属性:

ADSI 客户端操作系统版本ADSI 架构缓存下载状态
Windows XP
Windows Server 2003
Windows Server 2003 R2
Windows Vista / Windows Server 2008
Windows 7 / Windows Server 2008 R2
更新的modifyTimeStamp聚合架构对象上的属性
Windows 8 / Windows Server 2012
Windows 8.1 / Windows Server 2012 R2
WhenChanged架构属性更新
如果其中一个代理属性时检测到更改,ADSI 客户端下载一份新聚合架构。

操作系统运行早于 Windows 8 或 Windows Server 2012 的计算机查询的聚合架构中的modifyTimeStamp属性。ModifyTimeStamp ,以便重新启动域控制器重新启动 活动目录(AD) 服务的更新,或重新启动 活动目录(AD) 服务引起一些 ADSI 客户端在没有合法架构更改发生时从域控制器下载聚合架构缓存。这是不是个问题在早期,因为 活动目录(AD) 已变为 Windows Server 2008 中的可重新启动服务。

在正在运行 Windows 8,Windows Server 2012 或更高版本的计算机查询架构 NC 头上的whenChanged属性。WhenChanged属性有不利的一面,当系统状态备份更新的架构命名上下文的DSA 签名属性进行更新。这反过来将更新的whenChanged属性架构 NC 头上的时间戳。

更新聚合架构代理属性在域控制器上的事件

下表概述了根据操作系统版本和触发特性的更新操作更新的引用属性。

域控制器的操作系统版本更新的modifyTimeStamp 聚合架构属性的条件更新的whenChanged 架构属性的条件
Windows Server 2003
Windows Server 2003 R2
Windows Server 2008
Windows Server 2008 R2
启动域控制器或 NT 目录服务 (NTDS) 架构扩展 / 系统状态备份
Windows Server 2008 R2 与 KB 2671874
Windows Server 2012
Windows Server 2012 R2
架构扩展 / 系统状态备份架构扩展 / 系统状态备份
如果检测到更改,则必须下载 ADSI 架构缓存。系统状态备份将架构更新的whenChanged时间戳会导致架构命名上下文的DSA 签名属性中的数据。

ADSI 客户端检测聚合架构缓存更新

为了检测高 CPU 和网络的使用,请使用 网络监视器 3.4 工具来捕获网络使用率,然后按照下列步骤来分析结果:
  1. 在工具,具体取决于 Windows 操作系统使用下面显示筛选器之一。

    注意:在这些筛选器,请替换该字符串"CN = 架构,CN = 配置中,DC = Contoso 特区 = com"与问题的 活动目录(AD) 架构命名上下文的可分辨的名称 (DN) 路径。
    Windows 7 和早期的客户端
    使用下面的显示筛选程序来捕获网络通信中的聚合架构对象上的modifyTimeStamp属性值查询:
    (LDAPMessage.SearchRequest.BaseObject.OctetStream == "CN=Aggregate,CN=Schema,CN=Configuration,DC=Contoso,DC=com" AND LDAPMessage.SearchRequest.Attributes.Attribute.OctetStream == "modifyTimeStamp") OR(LDAPMessage.SearchResultEntry.ObjectName.OctetStream == "CN=Aggregate,CN=Schema,CN=Configuration,DC=Contoso,DC=com" AND LDAPMessage.SearchResultEntry.Attributes.PartialAttribute.Type.OctetStream == "modifyTimeStamp")
    Windows 8 和更高版本的客户端

    使用下面的显示筛选器查询架构 NC 头捕获的网络通信中的whenChanged属性值:
    (LDAPMessage.SearchRequest.BaseObject.OctetStream == "CN=Schema,CN=Configuration,DC=Contoso,DC=com" AND LDAPMessage.SearchRequest.Attributes.Attribute.OctetStream == "whenChanged") OR (LDAPMessage.SearchResultEntry.ObjectName.OctetStream == "CN=Schema,CN=Configuration,DC=Contoso,DC=com" AND LDAPMessage.SearchResultEntry.Attributes.PartialAttribute.Type.OctetStream == "whenChanged")
    默认情况下,此值与注册表中的以下项中的客户端中的时间值:

    HKEY_CURRENT_USER\Software\Microsoft\ADs\Providers\LDAP\CN=Aggregate,CN=Schema,CN=Configuration,DC=<root domain>,DC=com

    如果在modifyTimeStampwhenChanged属性的时间晚于存储在注册表中的值,则客户端下载更新的架构缓存。(此属性取决于客户端操作系统。

    以下是该工具的屏幕快照示例:

    此屏幕抓图是一个例子,如果在 modifyTimeStamp 或 whenChanged 属性的时间是晚于存储在注册表中的值

    在屏幕抓图中,您可以看到以下项目:
    • ADSI 客户端绑定到名称 8 帧中的域控制器。
    • 对架构更改的代理属性的 LDAP 搜索存储在按照 bind 的早期 LDAPSASLBuffer 框架之一。
    • LDAP 通信加密在几个 LDAPSASLBuffer Framework (目标端口上的 DC = TCP 389)。
    • 域控制器将继续通过 TCP 负载长度为 1460年多 TCP 帧发送额外的加密的数据。
  2. 已确定正确的对话后,网络跟踪中出现这种情况,您可以对客户机使用的 TCP 端口筛选。在示例中,对话是通过 TCP 端口 65237 启动客户端。如网络监视器筛选器"tcp.port = = 65237" 可能被用来隔离相关的框架。
  3. 如果此对话及粘贴到了 Microsoft Excel 中复制的所有帧,您会看到默认聚合架构都副本,路上有一个 TCP 负载大小为 2 兆字节 (MB) 的数据。默认聚合架构的文件大小是编码后大约 4 MB。

到客户端的进程相关的网络通信

可以使用系统监视器 (Sysmon) 来确定启动此会话的客户端上的进程。Microsoft 的 Windows Sysmon 操作事件日志中记录的事件 ID 3 时 Sysmon 已安装并配置到记录的 LDAP 连接。这允许您到客户端的进程相关网络通信,因为它记录源 IP 和端口与流程 Id 和图像名称。


日志名称: Microsoft Windows-Sysmon/操作
来源: Microsoft Windows Sysmon
日期: 日期
事件 ID: 3
任务类别: 网络检测到的连接 (规则: NetworkConnect)
级别: 信息
关键字:
用户: 系统
计算机: 计算机
说明:
检测到网络连接:
序列号: 206
UtcTime: UtcTime
ProcessGuid: {ProcessGuid}
流程 Id: 3220
图像: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
用户: 用户名称
协议: tcp
启动: 真
SourceIsIpv6: 假
SourceIp: SourceIp
SourceHostname: ADSIClient
SourcePort: 65237
SourcePortName:
DestinationIsIpv6: 假
DestinationIp: DestinationIp
DestinationHostname: DestinationHostname
DestinationPort: 389
DestinationPortName: ldap
事件的 Xml:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider name="Microsoft-Windows-Sysmon" guid=""></Provider></System></Event>"{程序提供商名称}" />
<EventID>3</EventID>
<Version>4</Version>
<Level>4</Level>
<Task>3</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime=" systemtime=""></TimeCreated SystemTime=">时间" />
<EventRecordID>39</EventRecordID>
<Correlation></Correlation>
<Execution processid="1140" threadid="3492"></Execution>
<Channel>Microsoft Windows-Sysmon/操作</Channel>
<>r >计算机
<Security UserID=" userid=""></Security UserID=">用户 Id" />

<EventData>
<Data name="SequenceNumber">206</Data>
<Data name="UtcTime"></Data></EventData>时间
<Data name="ProcessGuid">{</Data>ProcessGuid}
<Data name="ProcessId">3220</Data>
<Data name="Image">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Data>
<Data name="User"></Data>用户
<Data name="Protocol">tcp</Data>
<Data name="Initiated">真</Data>
<Data name="SourceIsIpv6">假</Data>
<Data name="SourceIp"></Data>SourceIp
<Data name="SourceHostname"></Data>SourceHostname
<Data name="SourcePort">65237</Data>
<Data name="SourcePortName">
</Data>
<Data name="DestinationIsIpv6">假</Data>
<Data name="DestinationIp"></Data>DestinationIp
<Data name="DestinationHostname"></Data>DestinationHostname
<Data name="DestinationPort">389</Data>
<Data name="DestinationPortName">ldap</Data>

在客户端登录进程监视器

登录客户端进程监视器提供了丰富的上下文信息。筛选进程监视器日志,事件由 Sysmon 记录中记录的进程 id。

屏幕抓图筛选进程监视器日志,事件由 Sysmon 记录中记录的进程 id

您会发现以下操作感兴趣。
操作路径
RegOpenKeyHKLM\SYSTEM\CurrentControlSet\Services\ADSI\Cache
RegQueryValueHKCU\Software\Microsoft\ADs\Providers\LDAP\CN = 聚合,CN = 架构,CN = 配置中,DC =新建子域DC =根域DC = com\Time
TCP 接收主机名>: 端口-> <DCName> </DCName>: LDAP
RegCreateKeyHKCU\SOFTWARE\Microsoft\ADs\Providers\LDAP\CN = 聚合,CN = 架构,CN = 配置中,DC =新建子域DC =根域DC = com
写文件C:\Users\<username>\AppData\Local\Microsoft\Windows\SchCache\</username>新建子域.根域。 com.sch
注意:检查基于 Windows 的计算机上是否正在更新聚合架构缓存的本地副本的一种方法是监视日期戳 ADSI 客户端的本地文件系统中的 *.sch 文件中的更改。

可以使用下表中的数据精炼非常大的流程监控日志的筛选器。

其他的可选筛选器:
UserPrincipalName
路径包含SchCache
操作写文件
屏幕抓图是进程监视器筛选器

配置记录的 LDAP 连接到 Sysmon

  1. 下载 Sysmon 在客户端。
  2. 创建一个新文本文件 Sysmon 配置、 将文件另存为 Sysmonconfig.xml,并添加以下内容:

    <Sysmon schemaversion="2.0">  <!-- Capture all hashes -->  <HashAlgorithms>*</HashAlgorithms>  <EventFiltering>  <!-- Log all drivers except if the signature -->  <!-- contains Microsoft or Windows -->  <DriverLoad onmatch="exclude">  <Signature condition="contains">microsoft</Signature>  <Signature condition="contains">windows</Signature>  </DriverLoad>  <!-- Do not log process termination -->  <ProcessTerminate onmatch="include" />  <!-- Log network connection if the destination port equal 443 -->  <NetworkConnect onmatch="include">  <DestinationPort>389</DestinationPort><DestinationPort>636</DestinationPort><DestinationPort>3268</DestinationPort><DestinationPort>3269</DestinationPort>  </NetworkConnect>  </EventFiltering></Sysmon>
  3. 运行以下命令以安装 Sysmon:
    Sysmon-i sysmonconfig.xml

启用 DRA_INHIBIT_BACKUP_AUTO_STAMP 标志的副作用

启用DRA_INHIBIT_BACKUP_AUTO_STAMP标志的一个副作用是的事件 ID 2089 错误地指示架构分区不被捕获在创建系统状态备份的目录林中。

应用程序日志中记录类似于以下示例事件 ID 2089:


事件类型: 警告
来源: NTDS 复制
事件类别: 备份
事件 ID: 2089年
日期: 日期
时间: 时间
用户: 用户名
计算机: 计算机名称
说明:

此目录分区已不备份以来在至少下列指定的天数。

目录分区:

CN = 架构,DC = 目录林根 dns 应用程序分区

注意:2089 记录了事件 ID 不为其他的键分区如CN = 配置或域目录分区,因为没有任何方法可以执行特定于分区的备份。有关详细信息,请参阅下面的 Microsoft 知识库文章:
914034 如果 Windows Server 2003 SP1 和更高版本的域控制器不会备份了给定的时间段内,记录 NTDS 事件 2089 复制

警告:本文已自动翻译

属性

文章 ID:2789917 - 上次审阅时间:07/30/2015 00:09:00 - 修订版本: 3.0

Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Essentials, Windows Server 2012 Datacenter, Windows Server 2012 Standard, Windows Server 2012 Essentials, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Standard

  • kbexpertiseadvanced kbsurveynew kbbug kbprb kbtshoot kbmt KB2789917 KbMtzh
反馈