{"id":391,"date":"2026-06-09T07:58:04","date_gmt":"2026-06-09T07:58:04","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/"},"modified":"2026-08-02T22:25:13","modified_gmt":"2026-08-02T22:25:13","slug":"how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/","title":{"rendered":"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Remote Desktop (RDP) is how you administer a Windows VPS, and it is also the most attacked service on the public internet. Port 3389 is probed by automated scanners around the clock, which means how you enable and expose RDP decides \u2014 more than almost any other setting \u2014 whether your server gets compromised in its first week.<\/p>\n\n<p class=\"wp-block-paragraph\">If you have not provisioned a server yet, <a href=\"https:\/\/windows-vps.org\/#providers\">compare Windows VPS plans on our comparison table<\/a> first. Providers that give you a cloud-level firewall and let you change the RDP port from the control panel make the steps below much easier.<\/p>\n\n<h2 class=\"wp-block-heading\">Enable RDP and Require Network Level Authentication<\/h2>\n\n<p class=\"wp-block-paragraph\">On Windows Server, open <strong>System Properties<\/strong> \u2192 <strong>Remote<\/strong> and select <em>Allow remote connections to this computer<\/em>. Make sure the checkbox <em>Allow connections only from computers running Remote Desktop with Network Level Authentication<\/em> is checked \u2014 NLA authenticates the user before a full session is created, which shuts down a whole class of pre-login attacks. The equivalent PowerShell:<\/p>\n\n<pre class=\"wp-block-code\"><code>Set-ItemProperty -Path 'HKLM:\\System\\CurrentControlSet\\Control\\Terminal Server' -Name fDenyTSConnections -Value 0\nSet-ItemProperty -Path 'HKLM:\\System\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp' -Name UserAuthentication -Value 1<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Connect from Windows, macOS, or Linux<\/h2>\n\n<p class=\"wp-block-paragraph\">The client you use does not change the server-side hardening. Windows ships with <code>mstsc.exe<\/code> (press Win+R, type <code>mstsc<\/code>). macOS users install <strong>Microsoft Remote Desktop<\/strong> from the App Store, and Linux users can use <strong>Remmina<\/strong> or the <code>FreeRDP<\/code> command-line client. Whichever you pick, always connect to the non-default port after changing it, for example <code>mstsc \/v:203.0.113.10:53421<\/code>.<\/p>\n\n<h2 class=\"wp-block-heading\">Change the RDP Port<\/h2>\n\n<p class=\"wp-block-paragraph\">Automated scanners assume port 3389. Moving RDP to a high port removes most of that noise in one step. In <code>regedit<\/code>, go to <code>HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp<\/code>, edit the <code>PortNumber<\/code> DWORD (default 3389) to something like 53421, and restart the server. Then update your firewall rules and connect with <code>mstsc \/v:203.0.113.10:53421<\/code>. Note the trade-off: security through obscurity only helps against scanners, not targeted attackers, so keep the other controls in this article enabled regardless.<\/p>\n\n<h2 class=\"wp-block-heading\">Restrict RDP by IP Address<\/h2>\n\n<p class=\"wp-block-paragraph\">The most effective control is restricting who can even reach the port. Use your provider&#8217;s cloud firewall if available; inside the OS, scope the RDP rule to your IP range:<\/p>\n\n<pre class=\"wp-block-code\"><code>New-NetFirewallRule -DisplayName \"RDP from office\" -Direction Inbound -Protocol TCP -LocalPort 53421 -RemoteAddress 203.0.113.0\/24 -Action Allow<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">If your IP changes frequently, connect through a VPN first and allow RDP only from the VPN subnet.<\/p>\n\n<h2 class=\"wp-block-heading\">Enforce Account Lockout Policies<\/h2>\n\n<p class=\"wp-block-paragraph\">Without a lockout policy, an attacker can try passwords indefinitely. Set a moderate threshold from an elevated command prompt:<\/p>\n\n<pre class=\"wp-block-code\"><code>net accounts \/lockoutthreshold:5 \/lockoutduration:30 \/lockoutwindow:30<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">That locks an account for 30 minutes after 5 failed attempts within 30 minutes. Do not set the threshold to 1 \u2014 it makes it trivial for anyone to lock you out of your own server on purpose.<\/p>\n\n<h2 class=\"wp-block-heading\">Disable the Guest Account and Blank Passwords<\/h2>\n\n<p class=\"wp-block-paragraph\">Two quick wins:<\/p>\n\n<pre class=\"wp-block-code\"><code>net user guest \/active:no<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Also open <code>secpol.msc<\/code> \u2192 <strong>Local Policies<\/strong> \u2192 <strong>Security Options<\/strong> and enable <em>Accounts: Limit local account use of blank passwords to console logon only<\/em>. Blank or simple passwords on exposed accounts are how most VPS intrusions actually start.<\/p>\n\n<h2 class=\"wp-block-heading\">Watch Failed Logons in the Security Log<\/h2>\n\n<p class=\"wp-block-paragraph\">Event ID 4625 records every failed logon. On a healthy server you should see very few; a flood means someone is targeting you:<\/p>\n\n<pre class=\"wp-block-code\"><code>Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 | Select-Object TimeCreated, @{n='SourceIP';e={$_.Properties[18].Value}}<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Consistent failures from one IP are a strong signal to tighten your IP restriction or move RDP behind a VPN.<\/p>\n\n<h2 class=\"wp-block-heading\">Monitor Active RDP Sessions<\/h2>\n\n<p class=\"wp-block-paragraph\">Periodically check who is logged in. The <code>qwinsta<\/code> command lists every session on the server, and <code>logoff<\/code> ends a specific session ID:<\/p>\n\n<pre class=\"wp-block-code\"><code>qwinsta\nlogoff 2<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">On a single-purpose VPS you should normally see exactly one interactive session \u2014 yours. A second session you did not start is a red flag worth investigating immediately.<\/p>\n\n<h2 class=\"wp-block-heading\">Consider RDP over VPN or RD Gateway<\/h2>\n\n<p class=\"wp-block-paragraph\">If you administer several machines or work from many locations, exposing RDP directly on the internet is rarely the best design. A Windows VPN (built into Windows Server via the Routing and Remote Access role) or an RD Gateway in front of your VPS lets you close the RDP port entirely and authenticate at a separate layer. For a single VPS, IP restrictions plus NLA are usually sufficient; for a fleet, put RDP behind a gateway.<\/p>\n\n<h2 class=\"wp-block-heading\">RDP Security Checklist<\/h2>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Control<\/th><th>Recommended setting<\/th><th>Why it matters<\/th><\/tr><\/thead><tbody><tr><td>Network Level Authentication<\/td><td>Enabled<\/td><td>Blocks pre-login attacks<\/td><\/tr><tr><td>RDP port<\/td><td>Non-default high port<\/td><td>Drops automated scanner noise<\/td><\/tr><tr><td>Source IP restriction<\/td><td>Your IP or VPN subnet<\/td><td>Only reachable by you<\/td><\/tr><tr><td>Lockout threshold<\/td><td>5 attempts<\/td><td>Stops password guessing<\/td><\/tr><tr><td>Guest account<\/td><td>Disabled<\/td><td>Removes a default backdoor<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n<p class=\"wp-block-paragraph\">RDP is not the weak point of a Windows VPS \u2014 an exposed, unhardened RDP service is. Enable NLA, move the port, restrict the source IPs, and lock accounts after failed attempts. If you are setting up a new server, <a href=\"https:\/\/windows-vps.org\/#providers\">see the full Windows VPS specs<\/a> on our comparison table and check which providers include cloud firewalls and console access for recovery. <a href=\"https:\/\/www.anrdoezrs.net\/click-101539688-17162719?sid=windowsvps\" rel=\"noreferrer noopener sponsored\" target=\"_blank\">Contabo&#8217;s Windows VPS plans<\/a> offer generous RAM and storage if you need room for multiple admin sessions and tooling.<\/p>","protected":false},"excerpt":{"rendered":"<p>Remote Desktop is your gateway to a Windows VPS and the most attacked service on it. Enable RDP safely, require NLA, and lock down access with these practical steps.<\/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":[1],"tags":[],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-reviews"],"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>Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down - 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\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down\" \/>\n<meta property=\"og:description\" content=\"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-09T07:58:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-02T22:25:13+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\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/\",\"name\":\"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-06-09T07:58:04+00:00\",\"dateModified\":\"2026-08-02T22:25:13+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down\"}]},{\"@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":"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down - 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\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/","og_locale":"en_US","og_type":"article","og_title":"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down","og_description":"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down","og_url":"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-06-09T07:58:04+00:00","article_modified_time":"2026-08-02T22:25:13+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\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/","url":"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/","name":"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-06-09T07:58:04+00:00","dateModified":"2026-08-02T22:25:13+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/how-to-set-up-and-secure-rdp-on-windows-vps-complete-beginners-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Secure Remote Desktop on Your Windows VPS: From First Login to Locked-Down"}]},{"@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\/391","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=391"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":523,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/391\/revisions\/523"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}