{"id":507,"date":"2026-08-01T02:59:58","date_gmt":"2026-08-01T02:59:58","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=507"},"modified":"2026-08-01T02:59:58","modified_gmt":"2026-08-01T02:59:58","slug":"harden-rdp-windows-vps-8-settings","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/","title":{"rendered":"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Every Windows VPS that exposes Remote Desktop on the default port 3389 gets hit by brute-force attempts \u2014 usually within hours of deployment. The Windows event log on a fresh, unprotected instance routinely shows hundreds of failed logon events per day, most of them from botnets cycling through username\/password lists. The good news is that a small set of configuration changes, none of them requiring third-party software, stops the overwhelming majority of these attacks. Here are eight RDP hardening settings that actually work on a Windows VPS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Enable Network Level Authentication (NLA)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NLA requires the client to authenticate before a full RDP session is established, which means unauthenticated scanners and most automated attack tools are rejected at the door instead of consuming a session. It is enabled by default on Windows Server 2022 and 2025, but verify it on older images: open <em>System Properties \u2192 Remote<\/em> and confirm &#8220;Allow connections only from computers running Remote Desktop with Network Level Authentication&#8221; is checked. NLA also reduces the server load from connection floods, since the CPU-heavy session initialization only happens for authenticated users.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Enforce an Account Lockout Policy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Account lockout is the single most effective defense against password guessing. Open <em>Local Security Policy \u2192 Account Policies \u2192 Account Lockout Policy<\/em> and set a threshold of 5 failed attempts with a 15-minute lockout duration. This turns a botnet that can try thousands of passwords per minute into a botnet that locks the account after five tries. The trade-off is that legitimate users can also lock themselves out, which is why a lockout duration of 10\u201315 minutes is the sweet spot \u2014 long enough to deter attackers, short enough not to annoy your team.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Change the Default RDP Port<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Port 3389 is the first thing every RDP scanner probes. Moving RDP to a high, non-standard port (for example, 54389) requires a registry change under <code>HKLM\\System\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp<\/code> and a matching firewall rule, plus clients that specify the new port. This is security by obscurity \u2014 a determined attacker can discover the port with a full scan \u2014 but it filters out the vast majority of opportunistic botnet traffic, which only targets 3389. It costs ten minutes and eliminates most of the noise in your event log.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Restrict RDP by Source IP in the Firewall<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If your team connects from a static office IP or through a VPN endpoint, add an inbound Windows Defender Firewall rule that only allows RDP from those addresses and blocks it from everywhere else. This is stronger than any authentication setting, because the attack never reaches the RDP service at all. If your provider offers a network-level firewall or security group in its control panel, apply the same allowlist there \u2014 filtering at the network edge protects you even if the Windows firewall is ever misconfigured or disabled.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Disable the Built-In Administrator Account<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Brute-force scripts almost always try <code>Administrator<\/code> as the username first, because it exists on every Windows system. Rename it via <em>Local Users and Groups<\/em>, and \u2014 more importantly \u2014 disable it once you have a second account with administrator rights. Create a dedicated admin user with a non-obvious name, use that for daily administration, and keep the renamed built-in account disabled. This single change removes the most common username from every automated attack list in existence.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Require Strong Passwords and Disable Blank Passwords<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Windows Server enforces password complexity by default, but legacy images and manually created accounts can slip through with weak or blank passwords. Run <code>net accounts<\/code> to verify the password policy, and confirm that &#8220;Limit blank passwords to console logon only&#8221; is disabled in Local Security Policy. For extra protection on servers facing the internet, consider a 14+ character minimum \u2014 modern GPU-based cracking tools can exhaust 8-character NTLM hashes in hours, while 14+ character passphrases remain impractical to brute-force.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. Put RDP Behind a VPN or RD Gateway<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most secure configuration is to not expose RDP to the public internet at all. Run a VPN server (WireGuard or OpenVPN) on the same VPS and require clients to connect to the VPN before they can reach the RDP port, or deploy Remote Desktop Gateway, which fronts RDP with an HTTPS endpoint that supports MFA. This is more setup work, but it changes your exposure model completely: instead of defending a public login service, you defend a VPN endpoint with authenticated, encrypted tunnels. For teams of more than a handful of users, the RD Gateway route is the professional standard.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Audit Failed Logons and Set Up Alerts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hardening without monitoring leaves you blind. Enable auditing of logon events (Event ID 4625 for failures, 4624 for successes) via <em>Local Security Policy \u2192 Advanced Audit Policy<\/em>, then check the count periodically with PowerShell: <code>Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} | Measure-Object<\/code>. A sudden spike in failed logons is your early-warning signal that something is probing the box. Free tools like RDPGuard or Windows Defender Firewall&#8217;s built-in IP filtering can auto-block IPs after a threshold of failures, adding an automated response on top of your manual monitoring. If you are setting this up across multiple servers, providers with snapshot and template features make it easy to replicate the same hardened baseline \u2014 <a href=\"https:\/\/windows-vps.org\/#providers\">compare Windows VPS plans on our comparison table<\/a> to see which hosts offer them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Putting It Together<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Settings 1, 2, 5, and 6 take about 20 minutes total and eliminate the vast majority of automated attacks by themselves. Settings 3, 4, and 7 add layers for anyone connecting over the public internet. And setting 8 makes sure you notice if anything slips through. When you are evaluating providers, check whether they offer network-level firewalls, DDoS protection, and snapshots \u2014 features that make RDP hardening dramatically easier \u2014 and <a href=\"https:\/\/windows-vps.org\/#providers\">compare Windows VPS plans on our comparison table<\/a> to see which hosts include them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For an affordable test environment to practice these settings on, <a href=\"https:\/\/interserver.net\/r\/1067805?url=interserver.net\/vps\/windows-vps.html\" rel=\"noreferrer noopener sponsored\" target=\"_blank\">InterServer&#8217;s Windows VPS is available for $0.01 for the first month with code TRYINTERSERVER<\/a>. If you need a production box with hourly billing for quick iteration, <a href=\"https:\/\/vultr.com\/?ref=9804308-9J\" rel=\"noreferrer noopener sponsored\" target=\"_blank\">Vultr&#8217;s Windows instances<\/a> are a solid choice. Whichever you pick, apply these eight settings before you do anything else \u2014 the brute-force attempts will start arriving long before you finish reading this article.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every Windows VPS that exposes Remote Desktop on the default port 3389 gets hit by brute-force attempts \u2014 usually within hours of deployment. The Windows event log on a fresh, unprotected instance routinely shows hundreds of failed logon events per day, most of them from botnets cycling through username\/password lists. The good news is that &#8230; <a title=\"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks\" class=\"read-more\" href=\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/\" aria-label=\"Read more about How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks\">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":0,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-507","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>How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks - 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\/harden-rdp-windows-vps-8-settings\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks\" \/>\n<meta property=\"og:description\" content=\"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-01T02:59:58+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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/\",\"name\":\"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-08-01T02:59:58+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks\"}]},{\"@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":"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks - 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\/harden-rdp-windows-vps-8-settings\/","og_locale":"en_US","og_type":"article","og_title":"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks","og_description":"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks","og_url":"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-08-01T02:59:58+00:00","author":"windows-vps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"windows-vps","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/","url":"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/","name":"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-08-01T02:59:58+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/harden-rdp-windows-vps-8-settings\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Harden RDP on a Windows VPS: 8 Settings That Stop Brute-Force Attacks"}]},{"@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\/507","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=507"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/507\/revisions"}],"predecessor-version":[{"id":510,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/507\/revisions\/510"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}