Windows Server Hardening Checklist: 20 Essential Security Configurations

Published March 22, 2026 - 20 min read

A default Windows Server installation is not a secure Windows Server installation. Microsoft ships Windows Server with backward compatibility, convenience features, and permissive defaults that make initial setup easy but leave the server exposed to well-documented attack techniques. Every penetration tester knows this, and every attacker counts on it.

Server hardening is the process of reducing the attack surface by disabling unnecessary features, enforcing secure configurations, and implementing monitoring that detects compromise attempts. The Center for Internet Security (CIS) benchmark for Windows Server contains over 300 recommendations. This checklist distills them into the 20 configurations that have the highest security impact for the effort required - the changes that block the attack techniques most commonly used in real-world breaches.

Apply these configurations through Group Policy wherever possible. GPO provides centralized management, consistent enforcement, and easy rollback. Test every change in a non-production environment before deploying to production. Document every exception with a business justification and a compensating control.

Account Security (1-5)

1. Enforce Strong Password Policies

Configure via Group Policy: Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy.

For service accounts and administrator accounts, implement Fine-Grained Password Policies that require 24+ character passphrases. Service account passwords should be managed by Group Managed Service Accounts (gMSA) where possible, which automatically rotates passwords every 30 days without manual intervention.

2. Configure Account Lockout

Account lockout prevents brute-force password attacks but must be balanced against denial-of-service (an attacker intentionally locking out accounts).

Monitor Event ID 4740 (account lockout) for patterns indicating brute-force attacks. Burst lockouts on a single account suggest a targeted attack. Simultaneous lockouts across multiple accounts suggest password spraying.

3. Rename and Disable Default Accounts

The built-in Administrator account (SID ending in -500) is a target for brute-force attacks because it cannot be locked out by default. The Guest account provides unauthenticated access that should never be available on a server.

4. Implement Least-Privilege Service Accounts

Services that run as Local System, Network Service, or with Domain Admin credentials represent some of the highest-risk configurations in any Windows environment. A compromised service running as Local System has full control over the server. A compromised service running as Domain Admin has full control over the entire domain.

5. Restrict Local Administrator Group Membership

The local Administrators group should contain only the accounts that genuinely need full administrative access to that specific server. In practice, this means the server administration team's accounts and nothing else.

# Audit local admin group membership
Get-LocalGroupMember -Group "Administrators" | Select Name, PrincipalSource

Use Restricted Groups or Local Users and Groups GPO preferences to enforce membership centrally. Remove Domain Users, Domain Admins (use a dedicated server admin group instead), and any service accounts that do not require local admin access.

Network Security (6-10)

6. Configure Windows Firewall with Advanced Security

Windows Firewall should be enabled on all profiles (Domain, Private, Public) with a default deny inbound rule. Allow only the specific ports and protocols required for the server's role.

# Verify firewall is enabled on all profiles
Get-NetFirewallProfile | Select Name, Enabled, DefaultInboundAction

# Set default deny inbound on all profiles
Set-NetFirewallProfile -Profile Domain,Private,Public -DefaultInboundAction Block -DefaultOutboundAction Allow

Create explicit allow rules for each required service. For a web server: TCP 80, 443. For a file server: TCP 445 (restrict source IPs to management networks). For a database server: the database port (1433 for SQL Server) from application servers only, not from the entire network. Log dropped connections for forensic analysis.

7. Disable Unnecessary Network Protocols and Services

8. Enforce SMB Signing and Encryption

SMB signing prevents relay attacks. SMB encryption prevents eavesdropping. Both should be enforced on all servers.

# Enable SMB signing (require, not just enable)
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force

# Enable SMB encryption for sensitive shares
Set-SmbShare -Name "FinanceData" -EncryptData $true

GPO path: Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options. Set both "Microsoft network server: Digitally sign communications (always)" and "Microsoft network client: Digitally sign communications (always)" to Enabled.

9. Restrict Remote Desktop Access

RDP is one of the most commonly exploited services on Windows servers. If RDP is required, harden it significantly:

10. Configure TLS and Cipher Suite Settings

Disable legacy protocols and weak cipher suites that are vulnerable to known attacks:

Test TLS changes thoroughly. Disabling TLS 1.0 breaks connectivity for Windows XP clients, older Java applications, and legacy SMTP integrations. Audit all clients and services that connect to the server before making protocol changes.

Audit and Monitoring (11-15)

11. Configure Advanced Audit Policy

Enable Advanced Audit Policy Configuration (not basic audit policy) via GPO: Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration.

Critical subcategories to enable (Success and Failure):

12. Increase Security Log Size and Configure Forwarding

The default Security log maximum size of 20 MB is insufficient for production servers generating thousands of events per hour. Increase it to at least 1 GB:

# Set Security log to 1 GB with overwrite-as-needed
wevtutil sl Security /ms:1073741824

Forward security events to a SIEM or centralized log management platform using Windows Event Forwarding (WEF) or a log collection agent (Elastic Agent, Splunk Universal Forwarder, Wazuh agent). Local logs can be cleared by an attacker with admin access. Forwarded logs survive compromise.

13. Enable PowerShell Logging

PowerShell is both the most powerful administration tool and the most popular attack tool on Windows. Full logging is essential for detecting malicious use.

14. Enable Windows Defender Credential Guard

Credential Guard uses virtualization-based security to isolate credential material (NTLM hashes, Kerberos tickets) in a protected container that even a compromised kernel cannot access. This prevents the credential theft attacks (Mimikatz, PtH, PtT) that are the foundation of lateral movement in most breaches.

Requirements: UEFI firmware with Secure Boot, Windows Server 2016 or later, TPM 2.0 (recommended), and Hyper-V enabled. Deploy via GPO: Computer Configuration > Administrative Templates > System > Device Guard > Turn on Virtualization Based Security.

15. Configure Windows Defender Antivirus and Attack Surface Reduction

Windows Defender is a capable endpoint protection solution when properly configured. Enable these features on every server:

# Enable key ASR rules in audit mode first
Add-MpPreference -AttackSurfaceReductionRules_Ids BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 -AttackSurfaceReductionRules_Actions AuditMode
# Block credential stealing from LSASS
Add-MpPreference -AttackSurfaceReductionRules_Ids 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2 -AttackSurfaceReductionRules_Actions AuditMode

System Hardening (16-20)

16. Remove Unnecessary Roles and Features

Every installed role and feature adds code, services, and potential vulnerabilities. A file server does not need IIS. A database server does not need the Print and Document Services role. An application server does not need the Fax Server feature.

# List installed features
Get-WindowsFeature | Where-Object {$_.Installed -eq $true} | Select Name, DisplayName

# Remove unnecessary features
Remove-WindowsFeature -Name Fax, XPS-Viewer, TFTP-Client

Consider using Server Core or Nano Server installations for servers that do not require a graphical interface. Server Core has a dramatically smaller attack surface - no desktop shell, no Windows Explorer, no Internet Explorer, and far fewer installed components. Most server roles work correctly on Server Core, and the security benefit is substantial.

17. Configure Windows Update and Patch Management

Unpatched servers are the number one entry point for ransomware. Configure automatic update delivery and establish a patching cadence:

18. Harden Registry and File System Permissions

19. Disable Unnecessary Scheduled Tasks and Startup Programs

Attackers frequently use scheduled tasks and startup programs for persistence. Audit both regularly:

# List all scheduled tasks
Get-ScheduledTask | Where-Object {$_.State -ne 'Disabled'} | Select TaskName, TaskPath, State, Author

# List startup programs
Get-CimInstance Win32_StartupCommand | Select Name, Command, Location

Disable any task or startup entry that is not required for the server's role. Pay particular attention to tasks created by non-Microsoft authors, tasks that run PowerShell or cmd.exe with encoded commands, and tasks that were created outside of change management windows.

20. Implement BitLocker or Storage Encryption

Physical theft or unauthorized disk access can bypass every logical access control. Encrypt server storage to protect data at rest:

Apply these 20 configurations through Group Policy and test in a staging environment first. No hardening guide replaces the CIS benchmark for completeness, but these 20 items address the attack techniques used in the majority of real-world Windows Server compromises. Start here, then expand to the full CIS Level 1 benchmark as your security maturity grows.

Get IT Support Insights Delivered Weekly

Practical tips for IT teams - troubleshooting guides, cost-saving strategies, and tool reviews. No spam, unsubscribe anytime.

Ready to automate your IT support?

HelpBot resolves 60-70% of Tier 1 tickets automatically. 14-day free trial - no credit card required.

Start Free Trial

Automate Server Hardening Compliance Checks

HelpBot monitors your Windows Server fleet for hardening compliance, creates tickets when configurations drift, and auto-remediates common issues. Reduce compliance audit preparation from weeks to minutes.

Start Free Trial

Back to Home

Still managing IT tickets manually?

See how HelpBot can cut your ticket resolution time by 70%. Free ROI calculator included.

Calculate Your ROIStart Free Trial