{"id":637,"date":"2026-08-16T23:10:18","date_gmt":"2026-08-16T23:10:18","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=637"},"modified":"2026-08-16T23:10:18","modified_gmt":"2026-08-16T23:10:18","slug":"rdp-nla-certificates-account-lockout","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/","title":{"rendered":"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Expose a Windows Server&#8217;s RDP port to the internet and you will see brute-force attempts within minutes \u2014 typically 5,000 to 20,000 failed logins per day on a plain 3389 endpoint. The good news: three settings neutralize the overwhelming majority of those attacks, and all three are built into Windows Server with no third-party software. This article covers Network Level Authentication (NLA), RDP server certificates, and account lockout policies \u2014 what each one actually stops, and the exact settings to apply.<\/p>\n\n<h2 class=\"wp-block-heading\">1. Network Level Authentication (NLA)<\/h2>\n\n<p class=\"wp-block-paragraph\">NLA forces the client to authenticate <em>before<\/em> a full remote desktop session is created. With NLA off, an attacker completes the RDP handshake and reaches the Windows logon screen, which historically enabled the &#8220;BlueKeep&#8221;-class vulnerabilities and lets attackers hammer the credential prompt with far less noise. With NLA on, the connection is rejected unless the client presents valid credentials up front.<\/p>\n\n<p class=\"wp-block-paragraph\">NLA is enabled by default on Windows Server 2022\/2025, but templates and imaging pipelines occasionally disable it. Verify it two ways:<\/p>\n\n<ul class=\"wp-block-list\"><li>GUI: System Properties \u2192 Remote \u2192 &#8220;Allow connections only from computers running Remote Desktop with Network Level Authentication&#8221; must be checked.<\/li><li>Registry: <code>HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp<\/code> \u2014 <code>UserAuthentication<\/code> should be <code>1<\/code> and <code>SecurityLayer<\/code> should be <code>2<\/code> (TLS).<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">If your RDP client is older than Windows 8 \/ macOS 10.12, NLA will refuse it \u2014 that is a feature, not a bug; those clients are exactly what you want to keep out.<\/p>\n\n<h2 class=\"wp-block-heading\">2. RDP server certificates<\/h2>\n\n<p class=\"wp-block-paragraph\">By default the RDP service uses a self-signed certificate, which means the client cannot verify it is talking to your server and not a machine-in-the-middle. Certificate pinning fixes that: install a certificate trusted by your clients (from an internal AD CS, or a public CA) and force the RDP service to use it.<\/p>\n\n<ol class=\"wp-block-list\"><li>Request a certificate with the server&#8217;s DNS name in Subject\/SAN \u2014 a public CA cert or an internal CA works.<\/li><li>Install it into the <em>Local Machine \u2192 Personal<\/em> store.<\/li><li>Pin it to RDP via WMI: <code>$cert = Get-ChildItem Cert:\\LocalMachine\\My | Where-Object {$_.Subject -like \"*your-server-dns*\"}; (Get-WmiObject -Class Win32_TSGeneralSetting -Namespace root\\cimv2\\TerminalServices -Filter \"TerminalName='RDP-tcp'\").SetSSLCertificate($cert.Thumbprint)<\/code><\/li><li>Verify with <code>qwinsta<\/code> (no effect) and on the client: the certificate name should match the server and show as trusted, with no &#8220;identity cannot be verified&#8221; warning.<\/li><\/ol>\n\n<p class=\"wp-block-paragraph\">For fleets, do this with Group Policy: Computer Configuration \u2192 Policies \u2192 Administrative Templates \u2192 Windows Components \u2192 Remote Desktop Services \u2192 Remote Desktop Session Host \u2192 Security \u2192 &#8220;Server authentication certificate template&#8221; \u2014 set it to a template issued by your CA. Renew before expiry; an expired pinned cert silently breaks RDP for everyone.<\/p>\n\n<h2 class=\"wp-block-heading\">3. Account lockout and access restriction<\/h2>\n\n<p class=\"wp-block-paragraph\">Lockout policies stop password guessing at the source. Apply these via Group Policy \u2192 Computer Configuration \u2192 Windows Settings \u2192 Security Settings \u2192 Account Policies \u2192 Account Lockout Policy:<\/p>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Setting<\/th><th>Recommended value<\/th><th>Why<\/th><\/tr><\/thead><tbody><tr><td>Account lockout threshold<\/td><td>5 failed attempts<\/td><td>Below 5, typos lock people out; above 10, brute force gets too many tries<\/td><\/tr><tr><td>Account lockout duration<\/td><td>15\u201330 minutes<\/td><td>Short enough to not disrupt work, long enough to stall distributed attacks<\/td><\/tr><tr><td>Reset account lockout counter<\/td><td>15 minutes<\/td><td>Prevents &#8220;slow drip&#8221; guessing over hours<\/td><\/tr><tr><td>RDP access list<\/td><td>Only the &#8220;Remote Desktop Users&#8221; group<\/td><td>Administrators are not automatically excluded \u2014 remove them or gate via a separate group<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Two more cheap wins: (1) change the RDP port from 3389 \u2014 cosmetic against port scans but it kills most automated noise; (2) restrict source IPs in the firewall\/security group to your office or VPN range, which is the single most effective control of all. Watch for lockout denial-of-service: an attacker who knows your admin account can lock it repeatedly, so keep a second break-glass account outside the policy and monitor Event ID 4740 (account locked out).<\/p>\n\n<h2 class=\"wp-block-heading\">Monitoring and verification<\/h2>\n\n<ul class=\"wp-block-list\"><li>Failed logins: Event ID 4625 (Security log). Successful RDP logins: Event ID 4624 with Logon Type 10.<\/li><li>Quick audit: <code>Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 50 | Select TimeCreated, @{n='User';e={$_.Properties[5].Value}}<\/code><\/li><li>Confirm NLA state: <code>Get-ItemProperty \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp\" | Select UserAuthentication, SecurityLayer<\/code><\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">One more layer worth naming: routing RDP through a VPN or RD Gateway instead of exposing 3389 at all. An RD Gateway terminates TLS on 443, hides the session host, and lets you enforce MFA at the gateway \u2014 the settings above still apply, but the attack surface shrinks from &#8220;the whole internet&#8221; to &#8220;your gateway&#8217;s TLS endpoint.&#8221; For single servers, a WireGuard or SSTP VPN with RDP bound to the VPN interface only is the strongest configuration you can build with built-in tools, and it makes the lockout policy almost redundant in practice.<\/p>\n\n<h2 class=\"wp-block-heading\">Putting it together<\/h2>\n\n<p class=\"wp-block-paragraph\">NLA removes the pre-auth attack surface, certificate pinning defeats interception, and lockout policy makes guessing impractical \u2014 together they convert a screaming-open port into a boring one. Apply all three before the server ever gets a public IP, and you can skip most of the &#8220;RDP honeypot&#8221; anxiety. When you are choosing where to run that server, <a href=\"https:\/\/windows-vps.org\/#providers\">our Windows VPS comparison table<\/a> flags providers that include firewall and DDoS protection in the base plan, and the <a href=\"https:\/\/windows-vps.org\/#features\">feature list on our Windows VPS page<\/a> shows which plans let you set security groups per IP \u2014 worth having when 3389 has to face the internet.<\/p>","protected":false},"excerpt":{"rendered":"<p>Expose a Windows Server&#8217;s RDP port to the internet and you will see brute-force attempts within minutes \u2014 typically 5,000 to 20,000 failed logins per day on a plain 3389 endpoint. The good news: three settings neutralize the overwhelming majority of those attacks, and all three are built into Windows Server with no third-party software. &#8230; <a title=\"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force\" class=\"read-more\" href=\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/\" aria-label=\"Read more about RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-637","post","type-post","status-publish","format-standard","hentry","category-tutorials-guides"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force - Windows VPS Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force\" \/>\n<meta property=\"og:description\" content=\"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-16T23:10:18+00:00\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/\",\"name\":\"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-08-16T23:10:18+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force - Windows VPS Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/","og_locale":"en_US","og_type":"article","og_title":"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force","og_description":"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force","og_url":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-08-16T23:10:18+00:00","author":"windows-vps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"windows-vps","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/","url":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/","name":"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-08-16T23:10:18+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/rdp-nla-certificates-account-lockout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"RDP Security in 2026: NLA, Certificates, and Account Lockout Settings That Stop Brute Force"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=637"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/637\/revisions"}],"predecessor-version":[{"id":640,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/637\/revisions\/640"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}