P

Pro Windows Workspace

Streamline your workflow with this skill, should, used, user. Includes structured workflows, validation checks, and reusable patterns for security.

SkillClipticssecurityv1.0.0MIT
0 views0 copies

Windows Workspace Security

A security-focused skill for hardening Windows workstations, auditing Windows security configurations, and implementing defensive measures across Windows environments.

When to Use

Choose Windows Workspace when:

  • Hardening Windows workstations and servers against common attack vectors
  • Auditing Group Policy settings, registry configurations, and service permissions
  • Setting up secure development environments on Windows
  • Implementing endpoint security monitoring and logging

Consider alternatives when:

  • Working primarily with Linux systems — use Linux-specific hardening guides
  • Needing Active Directory domain-level security — use domain security tools
  • Performing offensive Windows penetration testing — use dedicated red team tools

Quick Start

# Quick security audit of current system Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer Get-LocalUser | Where-Object { $_.Enabled -eq $true } | Select-Object Name, LastLogon Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -eq 'Running' }
# Security configuration baseline check function Get-SecurityBaseline { $results = @() # Check Windows Firewall status $fw = Get-NetFirewallProfile | Select-Object Name, Enabled foreach ($profile in $fw) { $results += [PSCustomObject]@{ Check = "Firewall - $($profile.Name)" Status = if ($profile.Enabled) { "PASS" } else { "FAIL" } Detail = "Enabled: $($profile.Enabled)" } } # Check Windows Defender status $defender = Get-MpComputerStatus $results += [PSCustomObject]@{ Check = "Real-Time Protection" Status = if ($defender.RealTimeProtectionEnabled) { "PASS" } else { "FAIL" } Detail = "Signatures: $($defender.AntivirusSignatureLastUpdated)" } # Check BitLocker status $bl = Get-BitLockerVolume -MountPoint "C:" -ErrorAction SilentlyContinue $results += [PSCustomObject]@{ Check = "BitLocker Encryption" Status = if ($bl.ProtectionStatus -eq "On") { "PASS" } else { "FAIL" } Detail = "Volume C: $($bl.ProtectionStatus)" } # Check audit policy $audit = auditpol /get /category:* 2>$null $logonAudit = $audit | Select-String "Logon" | Select-Object -First 1 $results += [PSCustomObject]@{ Check = "Logon Auditing" Status = if ($logonAudit -match "Success and Failure") { "PASS" } else { "WARN" } Detail = $logonAudit } return $results } Get-SecurityBaseline | Format-Table -AutoSize

Core Concepts

Windows Security Layers

LayerComponentsKey Settings
AuthenticationLocal accounts, Credential GuardPassword policy, MFA
AuthorizationACLs, UAC, AppLockerLeast privilege, SRP
NetworkWindows Firewall, IPSecInbound/outbound rules
EncryptionBitLocker, EFS, TLSDrive encryption, certificates
MonitoringEvent Log, Sysmon, ETWAudit policies, log forwarding
UpdatesWindows Update, WSUSPatch management cadence

Essential Hardening Script

# Disable unnecessary services $disableServices = @( "RemoteRegistry", "TelnetClient", "SNMP", "WinRM" ) foreach ($svc in $disableServices) { Set-Service -Name $svc -StartupType Disabled -ErrorAction SilentlyContinue Stop-Service -Name $svc -Force -ErrorAction SilentlyContinue } # Configure password policy net accounts /minpwlen:14 /maxpwage:90 /minpwage:1 /uniquepw:12 # Enable advanced audit logging auditpol /set /subcategory:"Logon" /success:enable /failure:enable auditpol /set /subcategory:"Process Creation" /success:enable auditpol /set /subcategory:"Object Access" /success:enable /failure:enable # Restrict PowerShell execution Set-ExecutionPolicy RemoteSigned -Scope LocalMachine -Force # Enable PowerShell script block logging $regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" New-Item -Path $regPath -Force | Out-Null Set-ItemProperty -Path $regPath -Name "EnableScriptBlockLogging" -Value 1

Configuration

OptionDescriptionDefault
enforce_password_policyEnforce minimum password length and complexitytrue
min_password_lengthMinimum password character count14
enable_bitlockerEnforce BitLocker drive encryptiontrue
firewall_default_actionDefault action for inbound connections"block"
audit_categoriesEvent log audit categories to enable["Logon","Process Creation"]
disable_guest_accountDisable built-in Guest accounttrue
uac_levelUAC notification level (1-4)4
auto_update_policyWindows Update configuration"notify_download"

Best Practices

  1. Enable Sysmon with a well-tuned configuration like the SwiftOnSecurity template to capture process creation, network connections, and file modifications that the default Windows event logs miss entirely
  2. Implement application whitelisting with AppLocker on workstations handling sensitive data — this prevents unauthorized executables from running even if they pass antivirus checks
  3. Use separate admin accounts for elevated tasks rather than running daily work as a local administrator; Credential Guard helps protect cached credentials from tools like Mimikatz
  4. Forward event logs to a central SIEM so that local log tampering by an attacker does not destroy evidence; prioritize Security, PowerShell, and Sysmon event channels
  5. Maintain a documented baseline configuration and use Group Policy or DSC to enforce it consistently across all workstations, checking for drift regularly

Common Issues

PowerShell execution policy bypasses: The execution policy is not a security boundary and can be trivially bypassed by attackers. Rely on Constrained Language Mode and script block logging for actual security instead, and use AppLocker rules to restrict which scripts can execute from specific directories.

Legacy application compatibility: Older applications often require administrative privileges or disable security features to function. Use application compatibility shims, run legacy apps in isolated VMs or containers, and document every security exception with a compensating control.

Event log overflow and gaps: Default Windows event log sizes are small and rotate quickly, creating gaps in forensic coverage. Increase log sizes to at least 1 GB for Security logs, enable log forwarding to a central collector, and set up alerts for Event Log service stoppages.

Community

Reviews

Write a review

No reviews yet. Be the first to review this template!

Similar Templates