Gå til indhold
Jan Engelbrecht Pederseb Logo

Hærdning af Windows 10 & 11

En systematisk guide til at låse din PC fuldstændig – fra sikkerheds-audit til avancerede PowerShell-scripts.

🎥 Videoguide til Hærdning af Windows

Få et visuelt overblik over de vigtigste sikkerhedstiltag i denne uddybende video.

🔍 1. Introduktion & Sikkerheds Audit

Det er teknisk set umuligt at sikre en Windows 10/11 PC 100% mod alle tænkelige trusler, da der altid eksisterer en risiko for nul-dages sårbarheder (zero-days) og menneskelige fejl. Du kan dog optimere systemet til at ramme 99,9% maksimal sikkerhed ved at eliminere usikre standardindstillinger, kryptere data og udføre løbende auditing.

Men hvis du ikke vil installere Linux Mint af en eller anden god grund så er her en anvisning på at sikre dit Windows system.

Gratis software til Sikkerheds Audit (Security Audit)

Før du ændrer indstillinger, skal du kortlægge computerens nuværende sårbarheder. Følgende anerkendte, gratis værktøjer kan scanne dit system:

AuditTAP (Hardening Audit Tool)

Type: CIS & BSI Hardening Audit

Tester systemet op mod de officielle CIS Benchmarks og BSI-retningslinjer. Den tjekker over 700 konfigurationer (adgangskodepolitik, netværksprotokoller, firewall og telemetri).

Link: GitHub - Hardening-Audit-Tool-AuditTAP

Microsoft Security Compliance Toolkit

Type: Officiel Baseline Audit

Sammenligner dine nuværende Windows-indstillinger mod Microsofts egne anbefalede sikkerheds-baselines.

Link: Microsoft Download Center

PingCastle (Community Edition)

Type: Identitets- & Rettighedsaudit

Selvom det primært bruges til Active Directory, tester det lokale sårbarheder, forældede rettigheder, ubeskyttede shares og svage lokale admin-konti.

Link: PingCastle Official Download

Hvad betyder testene for sikkerheden?

Når du kører en audit, analyseres computerens sårbarhedsflade (Attack Surface). Testene forklares her:

  • Protokol-hærdning (f.eks. SMBv1, LLMNR): Standard Windows-installationer tillader gamle netværksprotokoller. Bliver de testet og fundet aktive, betyder det, at hackere på samme netværk nemt kan opsnappe dine login-oplysninger eller overtage pc'en (f.eks. via EternalBlue-metoder).
  • Audit- og logningspolitikker: Standardopsætningen sletter hurtigt sikkerhedslogs. En test tjekker, om logfilerne er store nok til, at du rent faktisk kan opdage og efterforske et hackerangreb.
  • Adgangs- og rettighedsstyring: Tester om din daglige brugerkonto har administratorrettigheder. Hvis den har det, kan malware installere sig selv dybt i kernen af Windows uden din godkendelse.

🧱 2. Trin-for-trin guide: Sådan optimerer du til maksimal sikkerhed

Følg disse sequential skridt for at låse din Windows 10/11 PC fuldstændig:

1. Isoler din brugerkonto

Opret en lokal standardbrugerkonto til dit daglige arbejde. Brug kun din administratorkonto, når det er strengt nødvendigt for at installere software eller ændre systemindstillinger.

2. Aktivér fuld diskenhedskryptering

Tænd for BitLocker (kræver Windows Pro/Enterprise) eller installer det gratis open-source værktøj VeraCrypt. Dette sikrer dine data 100% mod fysisk tyveri af harddisken.

3. Tænd for Core Isolation & TPM 2.0

Gå til Windows Sikkerhed -> Enhedssikkerhed -> Isolering af kerne. Aktivér Hukommelsesintegritet (Memory Integrity). Dette forhindrer ondsindet kode i at injicere sig i højsikkerhedsprocesser.

4. Hærd Windows Defender

Windows Defender er fremragende, men skal optimeres. Åbn PowerShell som administrator og kør kommandoen for at aktivere maksimal blokering af potentielt uønskede apps (PUA):

Set-MpPreference -PUAProtection Enabled

5. Deaktiver legacy netværkstjenester

Slå LLMNR, NetBIOS over TCP/IP og SMBv1 fra under Windows-funktioner, da disse er de primære kilder til lokal netværkskompromittering.

6. Installer ugentlige opdateringer

Hold både Windows og dine tredjepartsapps opdaterede via værktøjer som winget upgrade --all i kommandoprompten, for at lukke kendte sikkerhedshuller øjeblikkeligt.

📊 3. Dybdegående System Audit

Her er den fulde, systematiske opdeling af, hvad en professionel audit reelt tjekker for i dybden, og hvad det betyder for pc'ens forsvar:

1. Kerne- og Hårdware-arkitektur (Virtualization-Based Security)

Disse test tjekker fundamentet under selve Windows-operativsystemet.

  • Credential Guard status: Isolerer og beskytter Windows-loginoplysninger (såsom NTLM-hashes og Kerberos-billetter) i en virtuel container, så malware ikke kan stjæle dem direkte fra RAM'en via "Pass-the-Hash"-angreb.
  • Hypervisor-Protected Code Integrity (HVCI): Bruger hardware-virtualisering til at sikre, at kun signerede og godkendte drivere kan indlæses i Windows-kernen. Dette stopper avancerede rootkits (kernel-level malware).
  • Secure Boot & UEFI-validering: Undersøger om pc'ens opstartsproces er låst og verificeret med kryptografiske signaturer. Testen sikrer, at der ikke er manipuleret med Windows-bootloaderen (bootkits).

2. Hærdning af Operativsystemet (Kernel & System Level)

Her analyseres de dybe indstillinger, som Microsoft som standard lader stå åbne for at sikre bagudkompatibilitet.

  • Exploit Protection (DEP, ASLR, SEHOP): Tester om hukommelsesbeskyttelse er tvunget igennem på alle systemprocesser. ASLR (Address Space Layout Randomization) flytter rundt på, hvor data lagres i RAM'en, hvilket gør det næsten umuligt for hackere at forudsige og udnytte buffer overflow-sårbarheder.
  • Objekt- og Registry-rettigheder (ACL'er): Scanner Windows-registreringsdatabasen og systemmapper for "svage ACL'er" (Access Control Lists). Hvis en standardbruger har skriveadgang til følsomme registreringsnøgler, kan en virus eskalere sine rettigheder til systemniveau.
  • User Account Control (UAC) adfærd: Tjekker om UAC er sat til højeste niveau og om den kører på et "sikkert skrivebord". Hvis ikke, kan malware simulere museklik og godkende sig selv i baggrunden uden din viden.
  • Deaktivering af unødvendige OS-komponenter: Kontrollerer om overflødige funktioner som Internet Explorer Engine (MSHTML), Windows Script Host (WSH) og PowerShell v2 (som mangler logning) er fuldstændig deaktiverede.

3. Applikationsstyring og Eksekveringspolitikker

Malware forsøger altid at køre eksekverbare filer fra midlertidige mapper. Auditing tjekker, hvordan systemet håndterer udefrakommende kode.

  • AppLocker / Windows Defender Application Control (WDAC): Undersøger om der er aktive regler for applikations-whitelisting. Hvis installeret, blokerer det alt kode (scripts, .exe, .dll) i at køre, medmindre det specifikt er godkendt af administratoren eller gemt i en beskyttet mappe.
  • PowerShell Constrained Language Mode (CLM): Tester om PowerShell er låst til "begrænset sprogtilstand". Hvis CLM er aktiv, kan hackere ikke bruge PowerShell til avancerede fil-løse angreb (fileless malware) eller hukommelsesmanipulation.
  • Office & Browser Makro-restriktioner: Tjekker om VBA-makroer i downloadede Office-dokumenter blokerets automatisk. Dette lukker den primære historiske vektor for ransomware-infektioner.

4. Avanceret Netværkssikkerhed & Kommunikation

En pc kommunikerer konstant. Auditing-værktøjer scanner netværksstakken for utætheder.

  • Kryptografiske ciphers og TLS-versioner: Tjekker om gamle, usikre krypteringsalgoritmer (som 3DES, RC4, MD5) samt TLS 1.0 og 1.1 er deaktiverede i Windows Schannel. Hvis de er aktive, kan din webtrafik aflyttes og afkodes.
  • Firewall-profiler og stealth-mode: Analyserer reglerne for både indgående og udgående trafik. Tester desuden om Windows Defender Firewall kører i "Stealth Mode", hvilket gør pc'en usynlig for portscannere på offentlige netværk.
  • mDNS, SSDP og uPnP konfiguration: Tester om netværksopdagelsestjenester er slået fra. Disse protokoller broadcaster konstant computerens identitet og sårbarheder til alle enheder på netværket.

5. Identitet, Autentificering og Logning (SIEM-ready)

Det handler ikke kun om at blokere, men også om at opdage angreb, mens de sker.

  • Advanced Audit Policy Configuration: Standard Windows logger næsten intet. Audit-værktøjet tjekker, om specifikke logningspolitikker er slået til – herunder logning af Process Creation (hvilke programmer der starter), Command Line Logging (hvilke præcise kommandoer der køres) og Logon/Logoff events.
  • LSA Protection (Local Security Authority): Kontrollerer om processen lsass.exe kører som en beskyttet proces (PPL). Hvis den gør, forhindres uautoriserede værktøjer (som det berygtede Mimikatz) i at læse adgangskoder direkte ud af systemets hukommelse.
  • LM og NTLM begrænsninger: Tester om pc'en stadig accepterer de forældede og ekstremt svage LAN Manager (LM) og tidlige NTLM-godkendelser. Hvis de er tilladt, kan en hacker nemt knække netværks-passwords via brute-force.

Sammenfatning: Hvad en fuld audit reelt gør for din PC

Når softwaren har scannet alle disse kategorier, genererer den en rapport (ofte baseret på CIS Controls v8 eller DISA STIG).
Hver eneste fejl (Non-Compliance) betyder, at en hacker har en potentiel omvej (en såkaldt exploit-vektor) til at omgå dit antivirusprogram. Ved at rette alle punkterne i en dybdegående audit, fjerner du hackerens værktøjskasse. Selvom de skulle formå at downloade en ondsindet fil til din PC, vil de krydsende sikkerhedslag (f.eks. CLM, LSA-beskyttelse og HVCI) sørge for, at malwaren hverken kan eksekveres, stjæle passwords eller sprede sig.

Her er de præcise PowerShell-scripts og registreringsdatabase-ændringer, der kræves for at gennemtvinge disse avancerede sikkerhedslag på din Windows 10/11 PC.
Alle kommandoer skal køres i en PowerShell-konsol åbnet som administrator.

📝 4. Del 1: Konfiguration af PowerShell Logning og CLM via script

For at låse PowerShell fuldstændigt skal vi aktivere tre typer logning (som sender alt, hvad der sker, direkte i Windows Event Viewer) og tvinge systemet i Constrained Language Mode (CLM), hvilket blokerer avancerede hacker-scripts og API-kald.

Trin 1: Kør scriptet til aktivering af udvidet logning

Dette script opretter de nødvendige nøgler i registreringsdatabasen (Registry) for at aktivere Script Block Logging, Module Logging og Transcription (som gemmer historikken i en sikker tekstfil).

powershell

# 1. Aktiver Script Block Logging (Logger alt kode, der afvikles, selvom det er krypteret)
$PathSBL = "HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
if (!(Test-Path $PathSBL)) { New-Item -Path $PathSBL -Force | Out-Null }
Set-ItemProperty -Path $PathSBL -Name "EnableScriptBlockLogging" -Value 1 -Type DWord

# 2. Aktiver Module Logging (Logger alle moduler og kommandoer, der indlæses)
$PathMod = "HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging"
if (!(Test-Path $PathMod)) { New-Item -Path $PathMod -Force | Out-Null }
Set-ItemProperty -Path $PathMod -Name "EnableModuleLogging" -Value 1 -Type DWord
$PathModObj = New-Item -Path "$PathMod\ModuleNames" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path $PathModObj.PSPath -Name "*" -Value "*" -Type String

# 3. Aktiver Transcription (Gemmer en rå tekstkopi af alle PowerShell-sessioner)
$PathTrans = "HKLM:\Software\Policies\Microsoft\Windows\PowerShell\Transcription"
if (!(Test-Path $PathTrans)) { New-Item -Path $PathTrans -Force | Out-Null }
Set-ItemProperty -Path $PathTrans -Name "EnableTranscripting" -Value 1 -Type DWord
# Opret en dedikeret, skjult mappe til logfilerne (ændr stien efter behov)
$LogPath = "C:\ProgramData\PowerShellTranscripts"
if (!(Test-Path $LogPath)) { New-Item -Path $LogPath -ItemType Directory -Force | Out-Null }
Set-ItemProperty -Path $PathTrans -Name "OutputDirectory" -Value $LogPath -Type String
Set-ItemProperty -Path $PathTrans -Name "IncludeInvocationHeader" -Value 1 -Type DWord

Write-Host "PowerShell logning er nu fuldt aktiveret!" -ForegroundColor Green

Trin 2: Tving computeren i Constrained Language Mode (CLM)

Den mest robuste måde at aktivere CLM permanent på en standalone PC er ved at sætte en systemmiljøvariabel (Environment Variable).

powershell

# Sæt systemvariablen permanent for alle brugere
[Environment]::SetEnvironmentVariable("__PSLockdownPolicy", "4", "Machine")

Write-Host "PowerShell CLM er nu aktiveret globalt! Genstart PowerShell for at teste." -ForegroundColor Green

• Sådan tester du det: Genstart PowerShell og skriv $ExecutionContext.SessionState.LanguageMode. Hvis der står ConstrainedLanguage, virker det. Hvis du nu prøver at kalde avancerede .NET-objekter (f.eks. [System.Net.HttpWebRequest]), vil Windows blokere det med det samme.

🛡️ 5. Del 2: Guide til at tvinge LSA og Credential Guard i gang

Dette lag sikrer, at proceshukommelsen for dine logins (lsass.exe) beskyttes, og at Windows-legitimationer gemmes i en isoleret, virtuel container via hardware-virtualisering.

Forudsætninger:

For at Credential Guard fungerer, skal din pc have TPM 2.0 aktiveret i BIOS, og Virtualiseringsunderstøttelse (Intel VT-x / AMD-V) skal være tændt.

Trin 1: Tving LSA Beskyttelse (Local Security Authority Protection)

Dette forhindrer uautoriserede processer (som malware eller Mimikatz) i at læse adgangskoder direkte ud af RAM'en. Vi konfigurerer det med et "RunAsPPL"-flag, som kræver, at alle drivere, der interagerer med LSA, er kryptografisk verificerede af Microsoft.

powershell

$PathLSA = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"
# Aktiver LSA som en beskyttet proces (PPL)
Set-ItemProperty -Path $PathLSA -Name "RunAsPPL" -Value 1 -Type DWord

Write-Host "LSA Protection (PPL) er konfigureret." -ForegroundColor Green

Trin 2: Tving Windows Defender Credential Guard i gang

På Windows 11 (22H2 og nyere) Enterprise og Pro er Credential Guard som standard slået til. Hvis du vil være 100% sikker på, at det er tvunget i gang på tværs af Windows 10 og 11, gør du det via registreringsdatabasen med følgende script:

powershell

# Opretter DeviceGuard-nøglen hvis den ikke eksisterer
$PathDG = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard"
if (!(Test-Path $PathDG)) { New-Item -Path $PathDG -Force | Out-Null }

# Aktiver Virtualization-Based Security (VBS)
Set-ItemProperty -Path $PathDG -Name "EnableVirtualizationBasedSecurity" -Value 1 -Type DWord

# Sæt VBS til at bruge Secure Boot og TPM (Hård hardwarebeskyttelse)
Set-ItemProperty -Path $PathDG -Name "RequirePlatformSecurityFeatures" -Value 3 -Type DWord

# Tving Credential Guard til at køre (Værdi 1 aktiverer med UEFI-lås, Værdi 2 aktiverer uden UEFI-lås)
# Vi vælger 1 for maksimal sikkerhed, hvilket forhindrer, at det kan deaktiveres via registreringsdatabasen alene.
Set-ItemProperty -Path $PathDG -Name "LsaCfgFlags" -Value 1 -Type DWord

Write-Host "Credential Guard og VBS er nu tvunget i gang i registreringsdatabasen." -ForegroundColor Green

Trin 3: Genstart og verificering

For at disse dybe hardwareændringer træder i kraft, skal du genstarte din computer.
Når pc'en er startet op igen, kan du verificere, at Credential Guard og LSA kører korrekt:

  1. Tryk på Win + R, skriv msinfo32 og tryk på Enter.
  2. Scroll helt ned til bunden på forsiden af Systemoplysninger.
  3. Se efter linjerne:
    • Sikkerhedstjenester i Windows Defender Credential Guard, der kører: Der skal stå Kører eller Credential Guard.
    • Virtualiseringsbaseret sikkerhed: Der skal stå Kører.

🛑 6. PowerShell Scripts - Udrulle WDAC og netværkshærdning

Her er de præcise metoder og scripts til at udrulle Windows Defender Application Control (WDAC) og gennemføre en komplet netværkshærdning.
Kør alle de følgende kommandoer i en PowerShell-konsol åbnet som administrator.

Del 1: Windows Defender Application Control (WDAC)

WDAC er det kraftigste sikkerhedsværktøj i Windows. Det blokerer alt software, scripts og drivere, medmindre de eksplicit matcher din sikkerhedspolitik.
For standalone PC'er anbefaler Microsoft at bruge deres officielle standardskabelon kalt DefaultWindows. Den tillader automatisk Windows-systemfiler, Microsoft Store-apps og software signeret af velkendte, verificerede udgivere, mens den blokerer alt andet uautoriseret kode.

Trin 1: Generer WDAC-sikkerhedspolitikken

Vi henter standard-skabelonen direkte fra Windows-systemet, konverterer den til en binær fil og aktiverer den i første omgang i Audit Mode.

powershell

# 1. Definer stier til XML-politikken og den binære fil
$Folder = "C:\WDAC"
if (!(Test-Path $Folder)) { New-Item -Path $Folder -ItemType Directory -Force | Out-Null }
$TemplateXml = "C:\Windows\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Audit.xml"
$TargetXml = "$Folder\WDAC_Policy.xml"
$BinaryPolicy = "$Folder\WDAC_Policy.cip"

# 2. Kopier standard Microsoft-skabelonen (Store + Verificerede udgivere + Windows)
Copy-Item -Path $TemplateXml -Destination $TargetXml -Force

# 3. Konverter XML-politikken til det binære format, som Windows forstår
ConvertFrom-CIPolicy -XmlFilePath $TargetXml -BinaryFilePath $BinaryPolicy

# 4. Aktiver politikken på maskinen (Den starter i Audit Mode, så intet går i stykker med det samme)
Citool.exe --refresh --policy $BinaryPolicy
Write-Host "WDAC er nu installeret i Audit Mode. Test dine apps!" -ForegroundColor Yellow

Trin 2: Skift fra Audit til Enforced Mode (Total spærring)

Når du har sikret dig, at dine daglige programmer virker, skal du ændre politikken, så den rent faktisk blokerer uautoriserede apps i stedet for blot at logge dem.

powershell

# Fjern Audit Mode-reglen fra din XML-fil, hvilket tvinger den i "Enforced" status
Set-RuleOption -FilePath $TargetXml -Option 3 -Delete

# Konverter den opdaterede XML til binær igen
ConvertFrom-CIPolicy -XmlFilePath $TargetXml -BinaryFilePath $BinaryPolicy

# Genindlæs den opdaterede, låste politik i Windows
Citool.exe --refresh --policy $BinaryPolicy
Write-Host "WDAC er nu aktiveret i ENFORCED MODE. Din computer er låst til Microsoft Store og verificerede udgivere!" -ForegroundColor Green

Hvis du på et tidspunkt vil fjerne blokeringen helt igen, kan du køre: Citool.exe --remove --policyId {A24437BC-E94B-46A1-A550-F7900B52A190} (eller det specifikke ID i din XML-fil).

Del 2: Netværkshærdning (Deaktivering af LLMNR og NetBIOS)

Gamle lokalnetværks-protokoller som LLMNR og NetBIOS broadcaster din computers navn og oplysninger på netværket. Hackere udnytter dette til at opsnappe dine login-hashes (via værktøjet Responder). Du bør slå dem helt fra.

Trin 1: Deaktiver LLMNR (Link-Local Multicast Name Resolution)

LLMNR deaktiveres mest effektivt via registreringsdatabasen (Registry).

powershell

$PathDNS = "HKLM:\Software\Policies\Microsoft\Windows NT\DNSClient"
if (!(Test-Path $PathDNS)) { New-Item -Path $PathDNS -Force | Out-Null }

# Sæt TurnOffMulticast til 1 for at slå LLMNR fra
Set-ItemProperty -Path $PathDNS -Name "TurnOffMulticast" -Value 1 -Type DWord

Write-Host "LLMNR er nu fuldstændig deaktiveret." -ForegroundColor Green

Trin 2: Deaktiver NetBIOS over TCP/IP på alle netværkskort

NetBIOS skal slås fra på hvert enkelt fysisk og virtuelt netværkskort (netværksadapter), der er installeret i maskinen.

powershell

# Find alle netværkskort i registreringsdatabasen og sæt NetbiosOptions til 2 (Deaktiveret)
$NetCards = Get-ChildItem -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces"

foreach ($Card in $NetCards) {
    Set-ItemProperty -Path $Card.PSPath -Name "NetbiosOptions" -Value 2 -Type DWord
}

Write-Host "NetBIOS over TCP/IP er nu deaktiveret på alle netværkskort." -ForegroundColor Green

Trin 3: Deaktiver SMBv1 (Gammel, usikker fil-delingsprotokol)

Det berygtede ransomware-angreb WannaCry spredte sig via sårbarheder i SMBv1. Du skal sikre dig, at den er helt fjernet.

powershell

# Deaktiver SMBv1-protokollen i Windows-kernen
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

# Afinstaller selve Windows-komponenten permanent
Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol" -NoRestart

Write-Host "SMBv1 er blevet deaktiveret og afinstalleret." -ForegroundColor Green

Trin 4: Genstart computeren

For at alle netværksændringer og WDAC-hærdningen træder 100% i kraft, skal du genstarte pc'en:

powershell

Restart-Computer

Med disse ændringer har du lukket for lokal netværksaflytning og sikret, at udefrakommende software ikke kan afvikles.

🌐 7. PowerShell Scripts - Firewall & Browser

Her er guiden til at tage den absolutte kontrol over computerens trafik og internetaktivitet ved at konfigurere en "Default Deny" (Bloker alt som standard) Firewall samt gennemføre en komplet hærdning af internetbrowseren.
Kør alle de følgende kommandoer i en PowerShell-konsol åbnet som administrator.

Del 1: Windows Defender Firewall – Bloker al udgående trafik

Som standard tillader Windows alle programmer at sende data ud af huset (udgående trafik). Hvis en virus rammer din computer, vil den forsøge at ringe hjem til hackerens server (Command & Control). Ved at blokere al udgående trafik som standard, stopper du dette fuldstændigt.
ADVARSEL: Så snart du kører det første script, mister du internetforbindelsen i din browser og apps, indtil du eksplicit opretter tilladelser (regler) til dem.

Trin 1: Tving Firewall til at blokere al udgående trafik

Dette script ændrer standardadfærden for alle tre firewall-profiler (Domæne, Privat og Offentlig).

powershell

# Sæt standardadfærd for udgående trafik til "Block" på alle profiler
Set-NetFirewallProfile -Profile Domain, Private, Public -OutboundBehavior Block

Write-Host "Udgående trafik er nu BLOKERET som standard på alle profiler!" -ForegroundColor Yellow

Vær forsigtig med at bruge denne kode.

Trin 2: Opret de absolut nødvendige system-regler (Core Rules)

Uden disse regler kan din computer ikke slå hjemmesider op (DNS), hente en IP-adresse (DHCP) eller opdatere klokkeslættet.

powershell

# Tillad Windows Update (Sikkerhedsopdateringer)
New-NetFirewallRule -DisplayName "Core - Windows Update" -Direction Outbound -Program "C:\Windows\System32\svchost.exe" -Service "wuauserv" -Action Allow

# Tillad core netværkstjenester (DNS og DHCP)
New-NetFirewallRule -DisplayName "Core - DNS (UDP 53)" -Direction Outbound -Protocol UDP -RemotePort 53 -Action Allow
New-NetFirewallRule -DisplayName "Core - DHCP (UDP 67, 68)" -Direction Outbound -Protocol UDP -LocalPort 68 -RemotePort 67 -Action Allow

# Tillad tids-synkronisering (NTP)
New-NetFirewallRule -DisplayName "Core - Time Sync (UDP 123)" -Direction Outbound -Protocol UDP -RemotePort 123 -Action Allow

Write-Host "Kritiske systemregler er oprettet." -ForegroundColor Green

Vær forsigtig med at bruge denne kode.

Trin 3: Giv din browser lov til at gå på nettet

Du skal nu eksplicit give din internetbrowser (f.eks. Edge eller Chrome) lov til at bruge port 80 (HTTP) og 443 (HTTPS).

powershell

# Tillad Microsoft Edge (Eksempel)
New-NetFirewallRule -DisplayName "App - Microsoft Edge" -Direction Outbound -Program "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" -Protocol TCP -RemotePort 80, 443 -Action Allow

# Tillad Google Chrome (Hvis du bruger den - fjern '#' foran linjen for at aktivere)
# New-NetFirewallRule -DisplayName "App - Google Chrome" -Direction Outbound -Program "C:\Program Files\Google\Chrome\Application\chrome.exe" -Protocol TCP -RemotePort 80, 443 -Action Allow

Write-Host "Browseren har nu adgang til internettet igen." -ForegroundColor Green

Vær forsigtig med at bruge denne kode.

Hvis du vil rulle det hele tilbage og åbne op igen, kører du: Set-NetFirewallProfile -Profile Domain, Private, Public -OutboundBehavior Allow

Del 2: Hærdning af din Internetbrowser (Edge / Chrome)

Internetbrowseren er computerens største vindue mod verden og den hyppigste kilde til angreb. Vi bruger her Microsoft Edge som eksempel (da den er indbygget i Windows), men nøglerne fungerer stort set identisk for Google Chrome (skift blot Microsoft\Edge ud med Google\Chrome i stierne).
Dette script implementerer de strengeste STIG/CIS-anbefalede browser-hærdninger direkte i registreringsdatabasen (Registry):

powershell

$EdgePath = "HKLM:\SOFTWARE\Policies\Microsoft\Edge"
if (!(Test-Path $EdgePath)) { New-Item -Path $EdgePath -Force | Out-Null }

# 1. Tving krypteret DNS (DNS-over-HTTPS) for at forhindre internetudbydere/hackere i at spore dine opslag
Set-ItemProperty -Path $EdgePath -Name "BuiltInDnsClientEnabled" -Value 1 -Type DWord

# 2. Deaktiver alle udvidelser (Extensions) som standard - de er ofte ondsindede eller spionerer.
# Du kan efterfølgende whiteliste specifikke ID'er, hvis det er nødvendigt.
Set-ItemProperty -Path $EdgePath -Name "ExtensionInstallBlocklist" -Value @("*") -Type MultiString

# 3. Bloker eksekvering af forældede eller usikre JavaScript-motorer (JIT-kompiling)
# JIT (Just-In-Time) er den hyppigste kilde til zero-day sårbarheder i browsere.
Set-ItemProperty -Path $EdgePath -Name "JavaScriptJitAllowed" -Value 0 -Type DWord

# 4. Tving browseren til altid at bruge HTTPS (Krypteret forbindelse) og advar ved HTTP
Set-ItemProperty -Path $EdgePath -Name "HttpsOnlyMode" -Value 1 -Type DWord # 1 = Force enabled

# 5. Deaktiver automatisk udfyldelse af adgangskoder (Password Manager)
# Indbyggede password managers i browsere gemmer ofte data usikkert i RAM'en. Brug en dedikeret app i stedet.
Set-ItemProperty -Path $EdgePath -Name "PasswordManagerEnabled" -Value 0 -Type DWord

# 6. Forhindr hjemmesider i at spore din fysiske placering, webkamera og mikrofon uden din viden
Set-ItemProperty -Path $EdgePath -Name "DefaultGeoclocationSetting" -Value 2 -Type DWord # 2 = Bloker alle
Set-ItemProperty -Path $EdgePath -Name "DefaultImagesSetting" -Value 1 -Type DWord      # 1 = Tillad billeder
Set-ItemProperty -Path $EdgePath -Name "DefaultJavaScriptSetting" -Value 1 -Type DWord  # 1 = Tillad standard JS
Set-ItemProperty -Path $EdgePath -Name "DefaultMediaStreamSetting" -Value 2 -Type DWord # 2 = Bloker mikrofon/kamera

# 7. Aktiver Microsoft Defender SmartScreen til maksimal beskyttelse mod phishing og malware-downloads
Set-ItemProperty -Path $EdgePath -Name "SmartScreenEnabled" -Value 1 -Type DWord
Set-ItemProperty -Path $EdgePath -Name "SmartScreenPuaEnabled" -Value 1 -Type DWord # Bloker potentielt uønskede apps

Write-Host "Browser-hærdning er gennemført! Genstart Edge for at se ændringerne." -ForegroundColor Green

Vær forsigtig med at bruge denne kode.

📜 8. Del 3: AppLocker – Blokering af uautoriserede scripts

Selvom du har WDAC kørende, er det ekstremt vigtigt at have et dedikeret lag, der specifikt overvåger og blokerer scripts (.ps1, .bat, .vbs, .cmd), som forsøger at køre fra brugerstyrede mapper (som Downloads eller AppData). Det er her, 99% af alle malware-scripts forsøger at gemme sig.
Dette script aktiverer og tvinger AppLocker til at tillade scripts, der ligger i C:\Windows og C:\Program Files, men blokerer dem alle andre steder.

powershell

# 1. Start og tving AppLocker-tjenesten (Application Identity) til at starte automatisk
Set-Service -Name "AppIDSvc" -StartupType Automatic
Start-Service -Name "AppIDSvc" -ErrorAction SilentlyContinue

# 2. Definer en ultra-streng AppLocker-politik for scripts i XML-format
$AppLockerPolicyXml = @"
<AppLockerPolicy Version="1">
  <ScriptCollection ToolkitVersion="4.0" EnforcementMode="Enabled">
    <FilePathRule Id="06dce67b-0934-4bc0-8f69-d401f4091234" Name="Tillad alle scripts i Program Files" Description="" UserSid="S-1-1-0" Action="Allow">
      <Conditions>
        <FilePathCondition Path="%PROGRAMFILES%\*" />
      </Conditions>
    </FilePathRule>
    <FilePathRule Id="94cfbc2c-e2f4-4061-82d2-8da590301234" Name="Tillad alle scripts i Windows-mappen" Description="" UserSid="S-1-1-0" Action="Allow">
      <Conditions>
        <FilePathCondition Path="%WINDIR%\*" />
      </Conditions>
    </FilePathRule>
  </ScriptCollection>
</AppLockerPolicy>
"@

# 3. Gem og udrul politikken direkte på maskinen
$PathXML = "C:\WDAC\AppLocker_Scripts.xml"
$AppLockerPolicyXml | Out-File -FilePath $PathXML -Encoding utf8
Set-AppLockerPolicy -XmlPolicy $PathXML

Write-Host "AppLocker script-blokering er nu aktiv og tvinges igennem!" -ForegroundColor Green

Vær forsigtig med at bruge denne kode.

Del 4: Fjernelse af Windows Telemetri & Baggrundsstøj

For at opnå en fuldstændig lukket PC, skal vi stoppe Windows i konstant at "ringe hjem" til Microsoft med diagnosticeringsdata, placeringsdata og brugsmønstre. Dette minimerer computerens overflade på netværket drastisk.
Dette script deaktiverer de primære sporings- og telemetritjenester i Windows:

powershell

# 1. Stop og deaktiver Connected User Experiences and Telemetry (DiagTrack)
Stop-Service -Name "DiagTrack" -ErrorAction SilentlyContinue
Set-Service -Name "DiagTrack" -StartupType Disabled

# 2. Stop og deaktiver Windows Error Reporting Service (Undgår at sende RAM-dumps til Microsoft)
Stop-Service -Name "WerSvc" -ErrorAction SilentlyContinue
Set-Service -Name "WerSvc" -StartupType Disabled

# 3. Slå telemetri fra i registreringsdatabasen (Sættes til 0 = Security-only/Disabled)
$PoliciesPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
if (!(Test-Path $PoliciesPath)) { New-Item -Path $PoliciesPath -Force | Out-Null }
Set-ItemProperty -Path $PoliciesPath -Name "AllowTelemetry" -Value 0 -Type DWord

# 4. Deaktiver Wi-Fi Sense (Forhindrer deling af dine Wi-Fi koder med kontakter)
$WifiPath = "HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworks\config"
if (Test-Path $WifiPath) {
    Set-ItemProperty -Path $WifiPath -Name "AutoConnectAllowedOEM" -Value 0 -Type DWord
}

# 5. Deaktiver lokationssporing helt på systemniveau
$LocationPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors"
if (!(Test-Path $LocationPath)) { New-Item -Path $LocationPath -Force | Out-Null }
Set-ItemProperty -Path $LocationPath -Name "DisableLocation" -Value 1 -Type DWord

Write-Host "Telemetri og baggrundssporing er blevet fuldstændig slukket." -ForegroundColor Green

Vær forsigtig med at bruge denne kode.

✅ 9. Den ultimative status for din PC

Du har nu transformeret en standard Windows-installation til et decideret digitalt fort.

Lag Status efter alle scripts Hvad betyder det for en hacker?
Hukommelse & Identitet LSA & Credential Guard aktive Værktøjer som Mimikatz kan ikke trække dine adgangskoder ud af RAM'en.
Applikationer WDAC (Enforced Mode) aktiv Kun apps fra Microsoft Store og officielt signerede udgivere kan starte.
Scripts AppLocker & PowerShell CLM tvunget Ondsindede hacker-scripts i dine overførselsmapper bliver blokeret øjeblikkeligt.
Netværk Outbound Block Firewall & Ingen LLMNR/NetBIOS Selvom en virus slap ind, kan den ikke "ringe hjem" eller sprede sig på dit lokalnetværk.

Hvad betyder disse ændringer i praksis?

Når du åbner Microsoft Edge nu, vil du bemærke, at indstillingerne er låst med et lille "Administreret af din organisation"-ikon.

  • Ingen plugins eller extensions kan installeres af dig eller skjult malware, medmindre du fjerner stjernereglen (*) og whitelister dem.
  • Sikkerheden mod zero-days er mangedoblet, fordi JavaScript JIT-kompileren er slået fra. Det kan gøre ekstremt tunge web-apps 5-10% langsommere, men det fjerner omkring 40-50% af alle browser-hacks.

Verificering

Når du har gennemført både Firewall- og Browser-hærdningen, kan du genstarte pc'en. Hvis du prøver at åbne et helt nyt program, der forsøger at gå på nettet (f.eks. et nyt spil eller uautoriseret software), vil det fejle med det samme uden overhovedet at få lov til at sende en enkelt pakke ud af dit netværkskort.