{"id":6529,"date":"2023-01-05T06:17:38","date_gmt":"2023-01-05T06:17:38","guid":{"rendered":"https:\/\/pariswells.com\/blog\/?p=6529"},"modified":"2025-04-01T22:58:48","modified_gmt":"2025-04-01T22:58:48","slug":"ldaps-channel-binding","status":"publish","type":"post","link":"https:\/\/pariswells.com\/blog\/research\/ldaps-channel-binding","title":{"rendered":"LDAPS\\LDAP Channel Binding"},"content":{"rendered":"\n<p>2020 LDAP channel binding and LDAP signing requirements for Windows (KB4520412)<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><a href=\"https:\/\/evotec.xyz\/four-commands-to-help-you-track-down-insecure-ldap-bindings-before-march-2020\/\">https:\/\/evotec.xyz\/four-commands-to-help-you-track-down-insecure-ldap-bindings-before-march-2020\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.petenetlive.com\/kb\/article\/0001645\">https:\/\/www.petenetlive.com\/kb\/article\/0001645<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/techcommunity.microsoft.com\/t5\/core-infrastructure-and-security\/ldap-channel-binding-and-ldap-signing-requirements-march-2020\/ba-p\/921536\">https:\/\/techcommunity.microsoft.com\/t5\/core-infrastructure-and-security\/ldap-channel-binding-and-ldap-signing-requirements-march-2020\/ba-p\/921536<\/a><\/p>\n\n\n\n<p>If the LdapEnforceChannelBinding key is not present, the server will use the new default value of 2 (enforced) after the patch with the LDAP changes is applied (rescheduled to 2nd half of 2020 &#8211; NOT in March 2020).<\/p>\n\n\n\n<p>If you set it manually to 0, 1 or 2 the patch will have no effect, since windows will always respect this manual setting.<\/p>\n\n\n\n<p><strong>Important<\/strong>&nbsp;The March 10, 2020 updates&nbsp;do not change LDAP signing or LDAP channel binding default policies or their registry equivalent on new or existing Active Directory domain controllers.<br><br><strong>Enable Logging<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Reg Add HKLM\\SYSTEM\\CurrentControlSet\\Services\\NTDS\\Diagnostics \/v \u201c16 LDAP Interface Events\u201d \/t REG_DWORD \/d 2<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LDAP Signing Events<\/h3>\n\n\n\n<p>Let\u2019s start with LDAP Signing event logs. Remember that these logs exist since Windows Server 2008, and available regardless of the March 10 Windows Update.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Event ID<\/strong><\/td><td><strong>General Description<\/strong><\/td><td><strong>Trigger<\/strong><\/td><td><strong>Required Logging Level<\/strong><\/td><\/tr><tr><td><a href=\"https:\/\/docs.microsoft.com\/previous-versions\/windows\/it-pro\/windows-server-2008-R2-and-2008\/dd941829(v=ws.10)\" target=\"_blank\" rel=\"noreferrer noopener\">2886<\/a><\/td><td>A summary event-triggered once every 24 hours and indicating that this domain controller is not aligned with Microsoft\u2019s best practices and can be significantly improved by configuring the server to enforce validation of LDAP signing.<\/td><td>Triggered every 24 hours, on startup or start of service if the Group Policy (Domain controller: LDAP server signing requirements) is set to&nbsp;None.<\/td><td>0 or higher<\/td><\/tr><tr><td><a href=\"https:\/\/docs.microsoft.com\/previous-versions\/windows\/it-pro\/windows-server-2008-R2-and-2008\/dd941856(v=ws.10)\" target=\"_blank\" rel=\"noreferrer noopener\">2887<\/a><\/td><td>A summary event-triggered once every 24 hours and indicating how many LDAP binds that do not request signing and LDAP simple binds that are performed on cleartext have occurred.<\/td><td>Triggered every 24 hours when Group Policy (Domain controller: LDAP server signing requirements) is set to&nbsp;None&nbsp;and at least one unprotected bind was completed.<\/td><td>0 or higher<\/td><\/tr><tr><td><a href=\"https:\/\/docs.microsoft.com\/previous-versions\/windows\/it-pro\/windows-server-2008-R2-and-2008\/dd941863(v=ws.10)\" target=\"_blank\" rel=\"noreferrer noopener\">2888<\/a><\/td><td>A summary event-triggered once every 24 hours and indicating how many LDAP binds that do not request signing and LDAP simple binds that are performed on cleartext have occurred (and rejected due to the \u201cRequire Signing\u201d option).<\/td><td>Triggered every 24 hours when the Group Policy (Domain controller: LDAP server signing requirements) is set to&nbsp;Require Signing&nbsp;and at least one unprotected bind was rejected.<\/td><td>0 or higher<\/td><\/tr><tr><td><a href=\"https:\/\/docs.microsoft.com\/previous-versions\/windows\/it-pro\/windows-server-2008-R2-and-2008\/dd941849(v=ws.10)\" target=\"_blank\" rel=\"noreferrer noopener\">2889<\/a><\/td><td>An event triggered every time a client performs LDAP binds that do not request signing or LDAP simple binds using cleartext. The event includes the client IP address and the authentication context (like authenticated user).<\/td><td>Triggered every time a client does not use signing for binds on sessions on port 389.<\/td><td>2 or higher<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"938\" height=\"798\" src=\"https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-1.png\" alt=\"\" class=\"wp-image-7542 img-responsive\" srcset=\"https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-1.png 938w, https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-1-300x255.png 300w, https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-1-768x653.png 768w\" sizes=\"auto, (max-width: 938px) 100vw, 938px\" \/><\/a><\/figure>\n\n\n\n<p><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"592\" src=\"https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-2-1024x592.png\" alt=\"\" class=\"wp-image-7544 img-responsive\" srcset=\"https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-2-1024x592.png 1024w, https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-2-300x174.png 300w, https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-2-768x444.png 768w, https:\/\/pariswells.com\/blog\/wp-content\/uploads\/2023\/12\/image-2.png 1167w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>You can use Registry<br>Reg Add HKLM\\SYSTEM\\CurrentControlSet\\Services\\NTDS\\Parameters \/v &#8220;LdapEnforceChannelBinding&#8221; \/t REG_DWORD \/d 2<\/p>\n\n\n\n<p>Also if you download the latest SCT 1.0 (security compliance toolkit)&nbsp;<a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=55319\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=55319&nbsp;<\/a>you will find template &#8220;SecGuide.admx&#8221; and language file &#8220;SecGuide.adml&#8221; that you can import in your policies (Central Store or C:\\Windows\\PolicyDefinitions) and from which you can manage Extended Protection for LDAP&#8230;..(CBT)<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Consider modifying Group Policy setting \u201cDomain controller: LDAP server channel binding token requirements\u201d as \u201cWhen Supported\u201d. Remember to check that&nbsp;<a href=\"https:\/\/portal.msrc.microsoft.com\/en-us\/security-guidance\/advisory\/CVE-2017-8563\" target=\"_blank\" rel=\"noreferrer noopener\">CVE-2017-8563<\/a>&nbsp;is installed on any supported OS.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rtoc-5\">Configuring the clients<\/h2>\n\n\n\n<p><a href=\"https:\/\/learn.microsoft.com\/en-us\/troubleshoot\/windows-server\/active-directory\/enable-ldap-signing-in-windows-server\">How to enable LDAP signing &#8211; Windows Server | Microsoft Learn<\/a><\/p>\n\n\n\n<p>Using a new group policy, first change the settings&nbsp;<strong>Network security: LDAP client signing requirements<\/strong>.<\/p>\n\n\n\n<p>This can be found under:&nbsp;<strong>Computer Configuration &gt; Policies &gt; Windows Settings &gt; Security Settings &gt; Local Policies &gt; Security Options<\/strong>.<\/p>\n\n\n\n<p><a href=\"https:\/\/4sysops.com\/wp-content\/uploads\/2021\/07\/Group-policy-to-prepare-clients-for-LDAP-signing.png\"><\/a><\/p>\n\n\n\n<p id=\"caption-attachment-1562020\">Group policy to prepare clients for LDAP signing<\/p>\n\n\n\n<p>The option is set to&nbsp;<strong>Negotiate signing<\/strong>. Wait until the setting has been applied to all clients.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rtoc-6\">Adjusting the domain controller<\/h2>\n\n\n\n<p>As soon as the change has affected all clients, create another group policy. In the same path as in the previous step, modify the setting&nbsp;<strong>Domain controller: LDAP server signing requirements<\/strong>.<\/p>\n\n\n\n<p><a href=\"https:\/\/4sysops.com\/wp-content\/uploads\/2021\/07\/Enforce-signing-of-the-LDAP-communication-for-the-domain-controller.png\"><\/a><\/p>\n\n\n\n<p id=\"caption-attachment-1562022\">Enforce signing of the LDAP communication for the domain controller<\/p>\n\n\n\n<p>There, select the&nbsp;<strong>Require signing<\/strong>&nbsp;option. Then, link the GPO to the&nbsp;<strong>domain controller<\/strong>&nbsp;container.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rtoc-7\">Finalizing the clients<\/h2>\n\n\n\n<p>If the changes are now also active on the DCs, the group policy from the first step can be adapted so that the clients also require LDAP signing.<\/p>\n\n\n\n<p>The option&nbsp;<strong>Network security: LDAP client signing requirements<\/strong>&nbsp;can now simply be changed from&nbsp;<strong>Negotiate signing<\/strong>&nbsp;to&nbsp;<strong>Require signing<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rtoc-8\">Activating channel binding<\/h2>\n\n\n\n<p>Channel binding is configured on the domain controllers by adding or modifying a corresponding entry in the registry. If it does not already exist, create a new DWORD entry under&nbsp;<strong>HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\NTDS\\Parameters<\/strong>&nbsp;with the description&nbsp;<strong>LdapEnforceChannelBinding<\/strong>. The values to be assigned are as follows:<\/p>\n\n\n\n<p>DWORD-Value 0: Disabled<\/p>\n\n\n\n<p>DWORD-Value 1: Enabled, if supported<\/p>\n\n\n\n<p>DWORD-Value 2: Always enabled<\/p>\n\n\n\n<p>In the long term, a value of 2 is recommended, but for the transition phase, the option with a value of 1 can be a good compromise. After the change, the respective domain controller must be restarted.<\/p>\n\n\n\n<p>Since the March 2020 update, the group policy&nbsp;<strong>Domain controller: LDAP server channel binding token requirements<\/strong>&nbsp;has been available for this purpose. There, you can choose between the options&nbsp;<strong>Never<\/strong>,<strong>&nbsp;When supported<\/strong>, and&nbsp;<strong>Always<\/strong>.<\/p>\n\n\n\n<p><a href=\"https:\/\/4sysops.com\/wp-content\/uploads\/2021\/07\/Configuring-channel-binding-for-domain-controllers-via-GPO.png\"><\/a><\/p>\n\n\n\n<p id=\"caption-attachment-1562019\">Configuring channel binding for domain controllers via GPO<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Before<\/strong>&nbsp;January 2020 Update:<br>&#8211; Install all required Updates<br>&#8211; All DCs: Reg Add HKLM\\SYSTEM\\CurrentControlSet\\Services\\NTDS\\Diagnostics \/v &#8220;16 LDAP Interface Events&#8221; \/t REG_DWORD \/d 2<br>&#8211; All DCs: Monitor 2887 and 2889 Events<br>&#8211; All DCs: LDAP Channel Binding =&nbsp;1&nbsp;(Before Jan 2020 updates this setting is 0)<br>&#8211; Group Policy (Domain Level): Network security: LDAP client signing requirements:&nbsp;None&nbsp;(Before Jan 2020 updates this setting is Negotiate Signing)<br>&#8211; Group Policy (Domaincontrollers): Domain controller: LDAP server signing requirements: NoneAfter January 2020 Update:<br>&#8211; Domain controller: LDAP server signing requirements: Require (from Update)<br>&#8211; All DCs: LDAP Channel Binding = 1 (from Update)<br>&#8211; All DCs: Monitor 2888 EventsIf Problems:<br>&#8211; Domain controller: LDAP server signing requirements: None<br>&#8211; All DCs: Monitor 2887 and 2889 EventsIf all should be good:<br>&#8211; Network security: LDAP client signing requirements: Require<br>&#8211; Domain controller: LDAP server signing requirements: Require<br>&#8211; LDAP Channel Binding = 2<\/p>\n","protected":false},"excerpt":{"rendered":"<p>2020 LDAP channel binding and LDAP signing requirements for Windows (KB4520412) https:\/\/evotec.xyz\/four-commands-to-help-you-track-down-insecure-ldap-bindings-before-march-2020\/ https:\/\/www.petenetlive.com\/kb\/article\/0001645 https:\/\/techcommunity.microsoft.com\/t5\/core-infrastructure-and-security\/ldap-channel-binding-and-ldap-signing-requirements-march-2020\/ba-p\/921536 If the LdapEnforceChannelBinding key is not present, the server will use the new [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[4152,4151,4154,4155],"class_list":["post-6529","post","type-post","status-publish","format-standard","hentry","category-research","tag-binding","tag-channel","tag-ldap","tag-ldapenfrocechannelbinding"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/posts\/6529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/comments?post=6529"}],"version-history":[{"count":6,"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/posts\/6529\/revisions"}],"predecessor-version":[{"id":8694,"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/posts\/6529\/revisions\/8694"}],"wp:attachment":[{"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/media?parent=6529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/categories?post=6529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pariswells.com\/blog\/wp-json\/wp\/v2\/tags?post=6529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}