{"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-21T22:24:01","modified_gmt":"2026-08-21T22:24:01","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":"Setting Up and Securing RDP on Windows Server: A Practical Checklist"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Remote Desktop (RDP) is how you administer a Windows Server, and it is also the most attacked service on the public internet. Port 3389 is probed by automated scanners around the clock, so the settings you choose while enabling RDP matter more than almost anything else on the box. This is a practical checklist: every item has a concrete setting, command, or policy value.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 1 &#8211; Enable RDP<\/h2>\n\n<p class=\"wp-block-paragraph\">On a full GUI install: Server Manager, Local Server, and toggle Remote Desktop to Enabled. On Server Core or from PowerShell, the equivalent is:<\/p>\n\n<pre class=\"wp-block-code\"><code>Set-ItemProperty -Path 'HKLM:\\System\\CurrentControlSet\\Control\\Terminal Server' -Name fDenyTSConnections -Value 0\nEnable-NetFirewallRule -DisplayGroup 'Remote Desktop'<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">On Server Core you can also use sconfig and choose option 7 (Remote Desktop). Verify the firewall rule exists before you close your console session &#8211; the single most common way to lock yourself out is enabling RDP while the firewall still blocks it.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 2 &#8211; Require Network Level Authentication (NLA)<\/h2>\n\n<p class=\"wp-block-paragraph\">NLA authenticates the user before a full remote session is created, which stops a large share of automated scanner traffic and resource-exhaustion attacks. In System Properties, Remote tab, choose Allow connections only from computers running Remote Desktop with Network Level Authentication. Programmatically:<\/p>\n\n<pre class=\"wp-block-code\"><code>$ts = Get-WmiObject -Class Win32_TSGeneralSetting -Namespace root\\cimv2\\terminalservices -Filter \"TerminalName='RDP-tcp'\"\n$ts.UserAuthentication = 1\n$ts.SetUserAuthentication(1)<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">Step 3 &#8211; Harden accounts<\/h2>\n\n<ul class=\"wp-block-list\"><li>Create your own administrative account and use it; rename the built-in Administrator account and consider disabling it once your account is verified.<\/li><li>Enforce passwords of 14+ characters for any account allowed to log on remotely.<\/li><li>Set an account lockout policy. Five failed attempts followed by a 15-minute lockout is a reasonable starting point: net accounts \/lockoutthreshold:5 \/lockoutduration:15.<\/li><li>Trim the Remote Desktop Users group. Every member is an allowed login surface; keep it to the accounts that genuinely need interactive access.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">Step 4 &#8211; Limit where connections can come from<\/h2>\n\n<p class=\"wp-block-paragraph\">The Remote Desktop Users group controls who; the Windows Firewall controls where. Scope the built-in RDP rule to your office or VPN address range instead of Any:<\/p>\n\n<pre class=\"wp-block-code\"><code>Set-NetFirewallRule -DisplayGroup 'Remote Desktop' -RemoteAddress 203.0.113.0\/24<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">Changing the RDP port from 3389 (registry value HKLM\\System\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp, PortNumber, plus a matching firewall rule) is optional. It is not real security &#8211; a port scan finds it &#8211; but it does cut the noise from scanners that only check 3389. Treat it as a convenience, not a control.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 5 &#8211; Replace the self-signed certificate<\/h2>\n\n<p class=\"wp-block-paragraph\">Out of the box, RDP presents a self-signed certificate, which produces client warnings and offers no identity guarantee. Issue a proper certificate (internal CA for a domain, or a publicly trusted certificate with the server FQDN) and place it in the Computer account, Remote Desktop\\Certificates store. Clients then connect without warnings and you can actually verify you are talking to your server.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 6 &#8211; Watch the logs<\/h2>\n\n<p class=\"wp-block-paragraph\">RDP attacks leave traces. The Security log events that matter: 4624 (successful logon), 4625 (failed logon), and 4776 (credential validation). The TerminalServices-RemoteConnectionManager operational log records RDP connection attempts specifically. A quick look at recent failures:<\/p>\n\n<pre class=\"wp-block-code\"><code>Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |\n  Select-Object TimeCreated, @{n='SourceIP';e={$_.Properties[18].Value}}<\/code><\/pre>\n\n<p class=\"wp-block-paragraph\">A steady stream of 4625 events from one source means you are being targeted; combine the lockout policy, IP scoping, and the failed-logon audit to respond.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 7 &#8211; Add a second factor or a gateway<\/h2>\n\n<p class=\"wp-block-paragraph\">Once the basics are solid, the next layer is authentication beyond the password. RDP itself has no native MFA, but RADIUS-based solutions work cleanly: the Network Policy Server (NPS) role can forward RDP authentication to Azure AD MFA or a third-party RADIUS provider, and the Remote Desktop client then prompts for the second factor at logon. That single change eliminates credential-stuffing risk even if a password leaks.<\/p>\n\n<p class=\"wp-block-paragraph\">If multiple users need access from arbitrary locations, consider Remote Desktop Gateway instead of exposing 3389 further. RD Gateway publishes a single HTTPS endpoint (port 443) and tunnels RDP inside TLS, so the only open port is the one a web server would use. It adds setup complexity, but it removes the exposed RDP listener entirely. For a single-admin server, IP-scoped firewall rules plus MFA are usually sufficient and much simpler to maintain.<\/p>\n\n<ul class=\"wp-block-list\"><li>Single admin, fixed location: firewall IP scoping + NLA + lockout policy.<\/li><li>Multiple admins, varied locations: RD Gateway or VPN, plus MFA via NPS\/RADIUS.<\/li><li>Anything internet-facing: never leave RDP open to 0.0.0.0\/0 without at least NLA and lockout configured.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">Checklist summary<\/h2>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Item<\/th><th>Default<\/th><th>Recommended<\/th><\/tr><\/thead><tbody><tr><td>NLA<\/td><td>Varies by image<\/td><td>Enabled (UserAuthentication=1)<\/td><\/tr><tr><td>Built-in Administrator<\/td><td>Enabled<\/td><td>Renamed, replaced by a named admin account<\/td><\/tr><tr><td>Password length<\/td><td>Policy-dependent<\/td><td>14+ characters<\/td><\/tr><tr><td>Account lockout<\/td><td>0 (never locks)<\/td><td>5 attempts \/ 15-minute lockout<\/td><\/tr><tr><td>Remote Desktop Users<\/td><td>Administrators<\/td><td>Minimal named accounts only<\/td><\/tr><tr><td>RDP port<\/td><td>3389<\/td><td>3389, or non-standard + IP-scoped firewall<\/td><\/tr><tr><td>RDP certificate<\/td><td>Self-signed<\/td><td>CA-issued, matching the hostname<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">If you are choosing a host, <a href=\"https:\/\/windows-vps.org\/#providers\">compare Windows VPS plans on our table<\/a> &#8211; providers that give you console access and pre-configured firewall images make these steps far less risky. <a href=\"https:\/\/windows-vps.org\">Our main comparison<\/a> also notes which Windows Server VPS providers include RDP hardening guidance in their docs.<\/p>\n\n<p class=\"wp-block-paragraph\">RDP setup takes ten minutes; RDP security is a checklist you revisit. Enable NLA, lock the accounts, scope the firewall, fix the certificate, and read the logs &#8211; that combination stops the overwhelming majority of brute-force attempts.<\/p>\n\n<p class=\"wp-block-paragraph\">If you want a Windows Server VPS with a straightforward pricing model and full administrative control, <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 plans<\/a> are worth a look &#8211; use promo code <strong>TRYINTERSERVER<\/strong> at checkout and apply this checklist on day one.<\/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":3,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-391","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>Setting Up and Securing RDP on Windows Server: A Practical Checklist - 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=\"Setting Up and Securing RDP on Windows Server: A Practical Checklist\" \/>\n<meta property=\"og:description\" content=\"Setting Up and Securing RDP on Windows Server: A Practical Checklist\" \/>\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-21T22:24:01+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\":\"Setting Up and Securing RDP on Windows Server: A Practical Checklist - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-06-09T07:58:04+00:00\",\"dateModified\":\"2026-08-21T22:24:01+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\":\"Setting Up and Securing RDP on Windows Server: A Practical Checklist\"}]},{\"@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":"Setting Up and Securing RDP on Windows Server: A Practical Checklist - 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":"Setting Up and Securing RDP on Windows Server: A Practical Checklist","og_description":"Setting Up and Securing RDP on Windows Server: A Practical Checklist","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-21T22:24:01+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":"Setting Up and Securing RDP on Windows Server: A Practical Checklist - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-06-09T07:58:04+00:00","dateModified":"2026-08-21T22:24:01+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":"Setting Up and Securing RDP on Windows Server: A Practical Checklist"}]},{"@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":4,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":681,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/391\/revisions\/681"}],"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}]}}