Windows LDAP加固之LDAP签名

时间:2024-05-22 17:00:13

        微软计划于2020年1月推出补丁更新,启用LDAP签名。虽然目前版本的操作系统已经包含了这个功能,但是微软并没有将它启用。随着时间推移,网络上的威胁越来越多。凭据重放和中间人攻击在LDAP的攻击中显得极为有效。所以,我们需要尽快启用LDAP签名这个安全特性。值得注意的是微软的目录服务通常在企业内部用作最基本的身份验证,很多其它系统也依赖于Windows提供的LDAP服务,这些三方系统的兼容性需要得到足够的测试。建议先在某些域控上启用策略,完成测试验证。

        先来看一下当前默认情况下的域环境的LDAP连接情况。在客户端输入ldp来尝试手动连接。当然,如果你的计算机上显示没有ldp.exe这个程序的话,是因为没有安装AD部分的RSAT。需要在添加删除Windows功能中手动添加。

Windows LDAP加固之LDAP签名

        添加完毕后,就可以运行ldp.exe了。在这里,我们输入域控的计算机名,并使用默认的389进行连接。

Windows LDAP加固之LDAP签名

        连接成功后,点击Bind,选择Simple bind,并输入用户名和密码。

Windows LDAP加固之LDAP签名

        可以看到,目前是可以正常连接到域控的。接下去我们就要进行安全加固了。

Windows LDAP加固之LDAP签名

        首先,需要在域控制器上启用策略。我一直推荐不要修改Default Domain Policy和Default Domain Controllers Policy这2条默认策略,可以在域级别新建一条LDAP的策略进行修改。然后把同样的这条策略应用到Domain Controllers这个OU上,并且确保优先级高于默认策略。因为Default Domain Controllers Policy中可能已经将Domain controller: LDAP server signing requirements定义为了None。至少在我的测试环境中是这样的,为此我还花费了不少时间来解决这个问题。

Windows LDAP加固之LDAP签名

        策略的位于Computer Configuration--Policies--Windows Settings--Security Settings--Local Policies--Security Options。找到Domain controller: LDAP server signing requirements。将其从Not Defined改成Require signing。

Windows LDAP加固之LDAP签名

        然后,修改域控上的注册表键值。HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\ldapserverintegrity

将ldapserverintegrity从1修改为2。需要注意的是如果不修改组策略而直接修改注册表键值,这个值会被修改回1。我就遇到了在添加的LDAP策略中修改后这个键值仍然会被改回1。这是由于我的环境中默认域控器策略中定义了这条策略,但是它被设置为None。

Windows LDAP加固之LDAP签名

        接下去就是客户端策略的修改了。同样在客户端所在OU上新建一条策略,然后修改其中的Computer Configuration--Policies--Windows Settings--Security Settings--Local Policies--Security Options下的Network security:LDAP client signing requirements,将其改为Require signing。建议同样在域控的LDAP策略中将它也设置一下,因为域控也可以作为LDAP客户端。

Windows LDAP加固之LDAP签名

        同样的需要修改注册表键值,HKLM\SYSTEM\CurrentControlSet\Services\ldap下的ldapclientintegrity。将它改成2。

Windows LDAP加固之LDAP签名

        然后,采用同样的方式用ldp连接域控。会发现使用simple bind的连接失败了,需要更强的验证方式。更强的LDAP验证方式包括SSL。如果采用SSL按微软的说法是仍然可以使用simple bind的。详细请参考这里:

https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/domain-controller-ldap-server-signing-requirements

Windows LDAP加固之LDAP签名

        如果服务器上启用了LDAP的基本日志,就能看到相应信息。启用方法是将注册表中的HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics下的16 LDAP Interface Events从1修改为2。日志启用的详细信息请参考这篇文章:

https://support.microsoft.com/en-us/help/314980/how-to-configure-active-directory-and-lds-diagnostic-event-logging

Windows LDAP加固之LDAP签名

        服务器的Directory Service中会记录2889的事件,说明有人试图使用非签名的方式明文连接LDAP服务。

Windows LDAP加固之LDAP签名

        参考文章:

https://support.microsoft.com/en-us/help/935834/how-to-enable-ldap-signing-in-windows-server-2008