V súčasnom digitálnom svete je kybernetická bezpečnosť nevyhnutnou súčasťou ochrany firemných aj individuálnych IT systémov. Neustále rastúce množstvo kybernetických hrozieb, ako sú ransomvér, phishingové útoky či zneužitie bezpečnostných zraniteľností, si vyžaduje systematický a efektívny prístup k ochrane IT infraštruktúry.
Jedným z najuznávanejších bezpečnostných štandardov v tejto oblasti je CIS Benchmark – súbor osvedčených postupov a odporúčaní na posilnenie bezpečnosti operačných systémov, sietí, aplikácií a cloudových prostredí.
Čo je CIS Benchmark?
CIS Benchmark je séria bezpečnostných odporúčaní vypracovaných Center for Internet Security (CIS) – neziskovou organizáciou, ktorá sa špecializuje na kybernetickú ochranu a vývoj bezpečnostných štandardov. Tieto odporúčania pomáhajú organizáciám konfigurovať svoje IT systémy tak, aby minimalizovali bezpečnostné riziká.
CIS Benchmarky pokrývajú široké spektrum technológií vrátane:
✔ Windows a Linux operačných systémov
✔ Sieťových zariadení (Cisco, Palo Alto, Juniper, atď.)
✔ Cloudových platforiem (Microsoft Azure, AWS, Google Cloud)
✔ Databázových systémov (MSSQL, MySQL, Oracle, PostgreSQL)
✔ Aplikačných a webových serverov (IIS, Apache, Nginx, Tomcat, atď.)
Každý CIS Benchmark obsahuje konkrétne konfiguračné odporúčania, ktoré sú rozdelené do dvoch úrovní:
- Level 1 – Základné odporúčania, ktoré minimalizujú bezpečnostné riziká bez zásadného vplyvu na funkcionalitu.
- Level 2 – Pokročilé odporúčania určené pre vysoko bezpečné prostredia, ktoré môžu vyžadovať zmeny v správe IT infraštruktúry.
Implementácia
NTP (Network Time Protocol) je protokol, ktorý umožňuje synchronizáciu systémových hodín medzi počítačmi a servermi v sieti. Bez presného času môže dochádzať k vážnym problémom, ako sú:
- Nesprávne časové značky v logoch
- Ak systémy nie sú správne synchronizované, časové pečiatky v logoch sa nezhodujú, čo komplikuje analýzu bezpečnostných incidentov a forenznú analýzu.
- Problémy s autentizáciou a šifrovaním
- Mnoho autentizačných protokolov (napr. Kerberos v Active Directory) je citlivých na časovú odchýlku. Ak čas nie je presný, môže to viesť k neúspešným pokusom o prihlásenie.
- Nezhody pri replikácii a zálohovaní
- Databázy a synchronizačné služby ako Active Directory, DNS, DFS a databázové clustre vyžadujú presný čas na správnu koordináciu operácií.
- Ochrana proti replay útokom
- V niektorých sieťových bezpečnostných mechanizmoch môže útočník využiť staré (neaktuálne) pakety, ak systém nesprávne spracúva časové pečiatky.
CIS odporúčania pre správne nastavenie NTP
CIS Benchmark odporúča niekoľko best practices pri nastavovaní NTP:
1️⃣ Použitie spoľahlivých NTP serverov
CIS odporúča nastaviť manuálny zoznam NTP serverov s dôveryhodnými zdrojmi času. Odporúčaný príkaz na konfiguráciu v systéme Windows:
CIS odporúčania pre správne nastavenie NTP
CIS Benchmark odporúča niekoľko best practices pri nastavovaní NTP:
Použitie spoľahlivých NTP serverov
CIS odporúča nastaviť manuálny zoznam NTP serverov s dôveryhodnými zdrojmi času. Odporúčaný príkaz na konfiguráciu v systéme Windows:
# Set NTP servers
# Define NTP servers
$NTSpeerList = "ntp.mhite.sk,ntp2.mhite.sk"
# Configure NTP
w32tm /config /syncfromflags:manual /manualpeerlist:"$NTSpeerList" /update /reliable:yes
# Set NTP service startup type to Automatic
Set-Service -Name w32time -StartupType Automatic
# Restart the NTP service to apply changes
Restart-Service w32time -Force
syncfromflags:manual – nastaví manuálne synchronizované servery
manualpeerlist – zoznam dôveryhodných serverov
update – aplikuje zmeny okamžite
reliable:yes – označí server ako spoľahlivý zdroj času
💡 Dôležité: Používanie interných NTP serverov v organizácii pomáha zabezpečiť presnosť a znižuje závislosť od externých zdrojov, ktoré môžu byť nedostupné alebo kompromitované.
Allow log on through Remote Desktop Services‘ (RDP)
V rámci bezpečnostných odporúčaní CIS (Center for Internet Security) Benchmark patrí obmedzenie vzdialeného prístupu cez Remote Desktop Services (RDP) medzi kľúčové opatrenia na ochranu systémov pred neoprávneným prístupom. Tento skript zabezpečuje, že skupina Administrators stratí oprávnenie na priame prihlásenie cez RDP, čím sa výrazne zvyšuje bezpečnosť systému.
"C:\Install\ntrights.exe" -u "Administrators" -r SeRemoteInteractiveLogonRight
High Performance“ Power Plán
V rámci bezpečnostných odporúčaní CIS (Center for Internet Security) Benchmark sa kladie dôraz nielen na bezpečnosť, ale aj na optimálne nastavenie výkonu a stability systému. Aktivácia High Performance (Vysoký výkon) režimu napájania je odporúčaná pre servery, kritické systémy a zariadenia, ktoré vyžadujú maximálny výkon bez ohľadu na spotrebu energie.
# Activate the "High Performance" Power Plan
$HighPerfGUID = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
powercfg -setactive $HighPerfGUID
# Optional: Verify that the High Performance plan is active
$currentPlan = powercfg -getactivescheme
Write-Log "Active Power Plan: $currentPlan"
Prečo je dôležité správne nastaviť lokálne účty vo Windows?
V rámci bezpečnostných odporúčaní CIS (Center for Internet Security) Benchmark je správne nastavenie lokálnych účtov nevyhnutné na ochranu systému pred neoprávneným prístupom. Tento skript vykonáva tri dôležité bezpečnostné opatrenia, ktoré minimalizujú riziko zneužitia lokálnych účtov a zvyšujú celkovú bezpečnosť systému.
# Accounts Section
# Block Microsoft accounts
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'NoConnectedUser' -Type DWord -Value 3
# Disable Guest account
net user guest /active:no
# Limit local account use of blank passwords to console logon only
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name 'limitblankpassworduse' -Type DWord -Value 1
Nastavenie auditných politík vo Windows
V rámci bezpečnostných odporúčaní CIS (Center for Internet Security) Benchmark je správna konfigurácia auditných politík kľúčovým prvkom ochrany systémov. Auditovanie udalostí umožňuje organizáciám monitorovať aktivity, detegovať bezpečnostné incidenty a vykonávať forenznú analýzu v prípade útoku.
# Audit Section
auditpol /set /subcategory:"Credential Validation" /success:enable /failure:enable
auditpol /set /subcategory:"Application Group Management" /success:enable /failure:enable
auditpol /set /subcategory:"Security Group Management" /success:enable /failure:disable
auditpol /set /subcategory:"User Account Management" /success:enable /failure:enable
auditpol /set /subcategory:"Plug and Play Events" /success:enable /failure:disable
auditpol /set /subcategory:"Process Creation" /success:enable /failure:disable
auditpol /set /subcategory:"Account Lockout" /success:disable /failure:enable
auditpol /set /subcategory:"Group Membership" /success:enable /failure:disable
auditpol /set /subcategory:"Logoff" /success:enable /failure:disable
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
auditpol /set /subcategory:"Other Logon/Logoff Events" /success:enable /failure:enable
auditpol /set /subcategory:"Special Logon" /success:enable /failure:disable
auditpol /set /subcategory:"Audit Policy Change" /success:enable /failure:disable
auditpol /set /subcategory:"Authentication Policy Change" /success:enable /failure:disable
auditpol /set /subcategory:"Authorization Policy Change" /success:enable /failure:disable
auditpol /set /subcategory:"Other Policy Change Events" /success:disable /failure:enable
auditpol /set /subcategory:"Sensitive Privilege Use" /success:enable /failure:enable
auditpol /set /subcategory:"IPsec Driver" /success:enable /failure:enable
auditpol /set /subcategory:"Other System Events" /success:enable /failure:enable
auditpol /set /subcategory:"Security State Change" /success:enable /failure:disable
auditpol /set /subcategory:"Security System Extension" /success:enable /failure:disable
auditpol /set /subcategory:"System Integrity" /success:enable /failure:enable
Tento skript aktivuje a konfiguruje kritické auditné politiky, ktoré zabezpečujú:
✔ Monitorovanie prihlásení a odhlásení používateľov
✔ Detekciu zmien v účtoch a skupinách
✔ Auditovanie pokusov o eskaláciu oprávnení
✔ Zaznamenávanie zmien v bezpečnostných politikách
✔ Sledovanie udalostí súvisiacich s autentifikáciou a prístupom k systému
Zabránenie používateľom v inštalácii ovládačov tlačiarní
V rámci bezpečnostných odporúčaní CIS (Center for Internet Security) Benchmark je kontrola inštalácie ovládačov tlačiarní dôležitým opatrením na ochranu systémov pred neoprávnenými zmenami a potenciálnymi zraniteľnosťami. Tento skript zabraňuje bežným používateľom inštalovať ovládače tlačiarní, čím eliminuje riziko zavlečenia škodlivých alebo neautorizovaných ovládačov do systému.
# Prevent users from installing printer drivers
$printerPolicyPath = 'HKLM:\Software\Policies\Microsoft\Windows NT\Printers'
if (-not (Test-Path $printerPolicyPath)) {
New-Item -Path $printerPolicyPath -Force | Out-Null
}
Set-ItemProperty -Path $printerPolicyPath -Name 'PreventUserInstall' -Type DWord -Value 1
Interaktívne prihlásenie vo Windows
Interaktívne prihlásenie v operačnom systéme Windows predstavuje spôsob, akým používatelia zadávajú svoje prihlasovacie údaje pri fyzickom alebo vzdialenom prístupe k systému. CIS (Center for Internet Security) Benchmark odporúča zavedenie bezpečnostných politík, ktoré minimalizujú riziká spojené s neoprávneným prístupom, sociálnym inžinierstvom a odcudzením prihlasovacích údajov.
Tento skript implementuje niekoľko zásad interaktívneho prihlásenia, ktoré posilňujú bezpečnosť systému a chránia citlivé informácie používateľov.
Správne nastavenie interaktívneho prihlásenia:
✔ Chráni prihlasovacie údaje pred odcudzením
✔ Zabraňuje sociálnemu inžinierstvu a phishingu
✔ Minimalizuje fyzické bezpečnostné riziká
✔ Zvyšuje kontrolu nad prihlasovacími politikami
# Interactive logon Section
# Do not require CTRL+ALT+DEL
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'DisableCAD' -Type DWord -Value 0
# Don't display last signed-in user name
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'DontDisplayLastUserName' -Type DWord -Value 1
# Machine inactivity limit
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'InactivityTimeoutSecs' -Type DWord -Value 900
# Number of previous logons to cache
$winlogonPath = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
if (-not (Test-Path $winlogonPath)) {
New-Item -Path $winlogonPath -Force | Out-Null
}
Set-ItemProperty -Path $winlogonPath -Name 'CachedLogonsCount' -Type String -Value "3"
Nastavenie Microsoft Network Server
Microsoft Network Server (LanmanServer) je služba v systéme Windows, ktorá umožňuje zdieľanie súborov a tlačiarní cez sieť. Nesprávna konfigurácia tejto služby môže spôsobiť zvýšené bezpečnostné riziko, najmä ak sú neaktívne pripojenia udržiavané príliš dlho.
V rámci odporúčaní CIS (Center for Internet Security) Benchmark sa automatické odpojenie neaktívnych pripojení považuje za kľúčové bezpečnostné opatrenie, ktoré minimalizuje riziko neoprávneného prístupu a zneužitia sieťových zdrojov.
Tento skript nastavuje časový limit nečinných sieťových relácií na 15 minút, čím zabezpečuje, že neaktívne spojenia budú automaticky ukončené.
# Microsoft network server Section
Write-Log "Configuring Microsoft Network Server settings..."
$lanmanPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters'
if (-not (Test-Path $lanmanPath)) {
New-Item -Path $lanmanPath -Force | Out-Null
}
Set-ItemProperty -Path $lanmanPath -Name 'AutoDisconnect' -Type DWord -Value 15
Nastavenie sieťového prístupu vo Windows
Správna konfigurácia sieťového prístupu je nevyhnutná pre zabezpečenie systému pred neoprávneným prístupom a zneužitím zdieľaných zdrojov. CIS (Center for Internet Security) Benchmark odporúča vypnúť anonymný prístup k sieťovým zdrojom, čím sa zamedzí potenciálnym útokom a neoprávnenému prístupu.
Tento skript implementuje zásady kontroly sieťového prístupu, ktoré chránia systém pred útokmi, ako sú:
- Neautorizovaný anonymný prístup
- Zneužitie zdieľaných priečinkov bez autentifikácie
- Nedostatočná ochrana miestnych účtov v sieti
Skript vykonáva nasledovné bezpečnostné opatrenia pre sieťový prístup:
✅ Zakazuje, aby sa oprávnenia „Everyone“ vzťahovali aj na anonymných používateľov
✅ Blokuje anonymný prístup k sieťovým zdieľaniam
✅ Vynucuje bezpečný model zdieľania pre lokálne účty
# Network access Section
# Let Everyone permissions apply to anonymous users
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name 'EveryoneIncludesAnonymous' -Type DWord -Value 0
# Shares that can be accessed anonymously
$nullSessionSharesPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters'
if (-not (Test-Path $nullSessionSharesPath)) {
New-Item -Path $nullSessionSharesPath -Force | Out-Null
}
Set-ItemProperty -Path $nullSessionSharesPath -Name 'NullSessionShares' -Type MultiString -Value @()
# Sharing and security model for local accounts
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name 'ForceGuest' -Type DWord -Value 0
Správne nastavenie vypínania systému
Správne nastavenie vypínania systému je kľúčové pre zabezpečenie neautorizovaných zásahov do systému. CIS (Center for Internet Security) Benchmark odporúča zakázať možnosť vypnutia systému bez predchádzajúceho prihlásenia, čím sa zabráni neoprávneným používateľom manipulovať so systémom alebo spôsobiť jeho nedostupnosť.
Tento skript zabraňuje možnosti vypnutia systému bez prihlásenia, čím sa znižuje riziko potenciálnych bezpečnostných incidentov a výpadkov.
# Shutdown Section
# Allow system to be shut down without having to log on
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name 'ShutdownWithoutLogon' -Type DWord -Value 0
Správne nastavenie systémových objektov
Systémové objekty v operačnom systéme Windows sú kritické interné štruktúry, ktoré riadia správu procesov, pamäte a zdrojov. CIS (Center for Internet Security) Benchmark odporúča posilniť predvolené oprávnenia pre interné systémové objekty, aby sa zabránilo ich zneužitiu škodlivými procesmi alebo neoprávnenými používateľmi.
Tento skript implementuje zvýšenú ochranu pre systémové objekty, čím zabezpečuje:
✅ Obmedzenie prístupu neautorizovaným používateľom
✅ Prevenciu pred nebezpečnými úpravami systémových objektov
✅ Zvýšenú stabilitu a ochranu pred malvérom a exploitmi
# System objects Section
# Strengthen default permissions of internal system objects
$sessionManagerPath = 'HKLM:\System\CurrentControlSet\Control\Session Manager'
if (-not (Test-Path $sessionManagerPath)) {
New-Item -Path $sessionManagerPath -Force | Out-Null
}
Set-ItemProperty -Path $sessionManagerPath -Name 'ProtectionMode' -Type DWord -Value 1
Nastavenie systémových služieb
Systémové služby vo Windows zabezpečujú kľúčové funkcionality operačného systému. Avšak, niektoré služby môžu predstavovať bezpečnostné riziko, ak sú nesprávne nakonfigurované alebo ponechané aktívne bez potreby. CIS (Center for Internet Security) Benchmark odporúča zakázanie zbytočných a zraniteľných služieb, aby sa znížilo riziko útokov a neautorizovaného prístupu.
Tento skript deaktivuje službu Print Spooler, ktorá je známa svojimi bezpečnostnými zraniteľnosťami a predstavuje potenciálny vektor útokov.
Skript vykonáva nasledovné bezpečnostné opatrenia:
✅ Zastavenie služby Print Spooler, ak je aktívna
✅ Zakázanie automatického spúšťania služby Print Spooler pri štarte systému
# Print Spooler: disabled
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
Nastavenie Windows Firewall
Windows Firewall je kritická bezpečnostná komponenta, ktorá chráni systém pred neoprávneným prístupom a sieťovými hrozbami. CIS (Center for Internet Security) Benchmark odporúča povoliť a správne nakonfigurovať firewallové profily, aby sa zabránilo neoprávneným pripojeniam, škodlivému sieťovému prenosu a neautorizovanému vzdialenému prístupu.
Tento skript zapína Windows Firewall pre všetky sieťové profily a konfiguruje logovanie blokovaných pripojení, čím zvyšuje úroveň ochrany a umožňuje monitorovanie podozrivých aktivít.
Skript vykonáva nasledovné bezpečnostné opatrenia:
✅ Zapnutie Windows Firewall pre doménový, privátny a verejný profil
✅ Konfigurácia logovania blokovaných pripojení do samostatných logov pre každý profil
✅ Obmedzenie veľkosti firewallových logov na 16 MB
# Windows Firewall
# Windows Defender Firewall with Advanced Security settings
# Domain Profile
Set-NetFirewallProfile -Name Domain -Enabled True -LogFileName '%SystemRoot%\System32\logfiles\firewall\domainfw.log' -LogMaxSizeKilobytes 16384 -LogBlocked True
# Private Profile
Set-NetFirewallProfile -Name Private -Enabled True -LogFileName '%SystemRoot%\System32\logfiles\firewall\privatefw.log' -LogMaxSizeKilobytes 16384 -LogBlocked True
# Public Profile
Set-NetFirewallProfile -Name Public -Enabled True -LogFileName '%SystemRoot%\System32\logfiles\firewall\publicfw.log' -LogMaxSizeKilobytes 16384 -LogBlocked True
Nastavenie GPO Administrative Templates
Group Policy Objects (GPO) umožňujú administrátorom kontrolovať a zabezpečiť systémové nastavenia vo Windows prostredníctvom politík aplikovaných na úrovni registru. CIS (Center for Internet Security) Benchmark odporúča konfiguráciu politík zabezpečenia, aby sa minimalizovali bezpečnostné riziká spojené so súkromím, autentifikáciou, sieťovou bezpečnosťou, ochranou RPC, a kontrolou periférií.
Tento skript aplikuje kľúčové bezpečnostné politiky, ktoré posilňujú zabezpečenie systému, zabraňujú neautorizovanému prístupu a exploitom a zlepšujú ochranu údajov.
Skript vykonáva komplexnú konfiguráciu bezpečnostných nastavení v GPO Administrative Templates tým, že:
✅ Zabraňuje zneužitiu kamery a slideshow na uzamknutej obrazovke
✅ Blokuje online služby Microsoftu pre ochranu súkromia
✅ Zakazuje zastarané protokoly (napr. SMBv1) a slabé autentifikačné metódy
✅ Posilňuje sieťové nastavenia a zabraňuje exploitom na úrovni TCP/IP
✅ Zlepšuje kontrolu nad Windows službami ako Print Spooler, RPC, a Windows Connect Now
✅ Zabraňuje používateľom inštalovať ovládače tlačiarní bez administrátorských práv
# GPO: Administrative Templates (Computer)
function Set-RegistryValue {
param (
[string]$Path,
[string]$Name,
[string]$Type,
$Value
)
if (-not (Test-Path $Path)) {
New-Item -Path $Path -Force | Out-Null
}
Set-ItemProperty -Path $Path -Name $Name -Type $Type -Value $Value
}
# Prevent enabling lock screen camera: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" `
-Name "NoLockScreenCamera" `
-Type DWord `
-Value 1
# Prevent enabling lock screen slideshow: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" `
-Name "NoLockScreenSlideshow" `
-Type DWord `
-Value 1
# Allow users to enable online speech recognition services: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Speech" `
-Name "AllowOnlineSpeechRecognition" `
-Type DWord `
-Value 0
# Allow online tips: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" `
-Name "DisableSoftLanding" `
-Type DWord `
-Value 1
# Configure SMB v1 server: disabled
Set-RegistryValue -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" `
-Name "SMB1" `
-Type DWord `
-Value 0
# Enable certificate padding: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Cryptography" `
-Name "EnableCertificatePaddingCheck" `
-Type DWord `
-Value 1
# WDigest authentication: disabled
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Control\SecurityProviders\WDigest" `
-Name "UseLogonCredential" `
-Type DWord `
-Value 0
# MSS - Enable automatic logon: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" `
-Name "AutoAdminLogon" `
-Type String `
-Value "0"
# MSS - DisableIPSourceRouting (IPv6): Highest protection
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip6\Parameters" `
-Name "DisableIPSourceRouting" `
-Type DWord `
-Value 2
# MSS - DisableIPSourceRouting (IPv4): Highest protection
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters" `
-Name "DisableIPSourceRouting" `
-Type DWord `
-Value 2
# MSS - (EnableICMPRedirect): disabled
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters" `
-Name "EnableICMPRedirect" `
-Type DWord `
-Value 0
# MSS - (KeepAliveTime): 300,000 ms
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters" `
-Name "KeepAliveTime" `
-Type DWord `
-Value 300000
# MSS - (NoNameReleaseOnDemand): enabled
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\NetBT\Parameters" `
-Name "NoNameReleaseOnDemand" `
-Type DWord `
-Value 1
# MSS - (PerformRouterDiscovery): disabled
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters" `
-Name "PerformRouterDiscovery" `
-Type DWord `
-Value 0
# MSS - (SafeDllSearchMode): enabled
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Control\Session Manager" `
-Name "SafeDllSearchMode" `
-Type DWord `
-Value 1
# MSS - (ScreenSaverGracePeriod): enabled (example: 5 seconds)
Set-RegistryValue -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" `
-Name "ScreenSaverGracePeriod" `
-Type String `
-Value "5"
# MSS - (TcpMaxDataRetransmissions IPv6): enabled (3)
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip6\Parameters" `
-Name "TcpMaxDataRetransmissions" `
-Type DWord `
-Value 3
# MSS - (TcpMaxDataRetransmissions IPv4): enabled - 3
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Tcpip\Parameters" `
-Name "TcpMaxDataRetransmissions" `
-Type DWord `
-Value 3
# MSS - (WarningLevel): enabled - 90%
Set-RegistryValue -Path "HKLM:\System\CurrentControlSet\Services\Eventlog\Security" `
-Name "WarningLevel" `
-Type DWord `
-Value 90
# Turn off multicast name resolution: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" `
-Name "EnableMulticast" `
-Type DWord `
-Value 0
# Enable font providers: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "EnableFontProviders" `
-Type DWord `
-Value 0
# Enable insecure guest logons: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation" `
-Name "AllowInsecureGuestAuth" `
-Type DWord `
-Value 0
# Turn off Microsoft Peer-to-Peer networking services: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Peernet" `
-Name "Disabled" `
-Type DWord `
-Value 1
# Prohibit installation and configuration of network bridge on your DNS domain network: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Network Connections" `
-Name "NC_AllowNetBridge_NLA" `
-Type DWord `
-Value 0
# Prohibit use of internet connection sharing on your DNS domain network: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Network Connections" `
-Name "NC_AllowICS_NLA" `
-Type DWord `
-Value 0
# Require domain users to elevate when setting a network's location: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Network Connections" `
-Name "NC_StdDomainUserSetLocation" `
-Type DWord `
-Value 1
# Hardened UNC paths: enabled with mutual auth, integrity, privacy
$hardenedPathsPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths"
if (-not (Test-Path $hardenedPathsPath)) {
New-Item -Path $hardenedPathsPath -Force | Out-Null
}
Set-ItemProperty -Path $hardenedPathsPath -Name "\\*\NETLOGON" -Type String -Value "RequireMutualAuthentication=1,RequireIntegrity=1,RequirePrivacy=1"
Set-ItemProperty -Path $hardenedPathsPath -Name "\\*\SYSVOL" -Type String -Value "RequireMutualAuthentication=1,RequireIntegrity=1,RequirePrivacy=1"
# TCPIP6 parameter "DisabledComponents": 0xFF (255)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" `
-Name "DisabledComponents" `
-Type DWord `
-Value 0xFF
# Configuration of wireless settings using Windows Connect Now: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WCN\UI" `
-Name "DisableWcnUi" `
-Type DWord `
-Value 1
# Prohibit access of the Windows Connect Now wizards: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WCN\UI" `
-Name "DisableWcnUi" `
-Type DWord `
-Value 1
# Minimize the number of simultaneous connections: enabled (Prevent Wi-Fi when on Ethernet)
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WcmSvc\GroupPolicy" `
-Name "fMinimizeConnections" `
-Type DWord `
-Value 1
# Allow print spooler to accept client connections: disabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers" `
-Name "RegisterSpoolerRemoteRpcEndPoint" `
-Type DWord `
-Value 2
# Configure Redirection Guard: enabled
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fBlockRedirectedEndpoints" `
-Type DWord `
-Value 1
# Configure RPC connection settings: Protocol to use for outgoing RPC: RPC over TCP
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "DefaultProtocol" `
-Type String `
-Value "ncacn_tcp"
# Configure RPC connection settings: Use authentication for outgoing RPC: default
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "EnableAuthEpResolution" `
-Type DWord `
-Value 1
# Configure RPC listener settings: Protocols for incoming RPC: RPC over TCP
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "EnabledProtocols" `
-Type String `
-Value "ncacn_tcp"
# Configure RPC listener settings: Authentication protocol for incoming RPC: negotiate
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "DefaultAuthServices" `
-Type DWord `
-Value 9
# Configure RPC over TCP port: 0
Set-RegistryValue -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "ServerTcpPort" `
-Type DWord `
-Value 0
# Limits print driver installation to Administrators: enabled
$pointAndPrintPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint"
if (-not (Test-Path $pointAndPrintPath)) {
New-Item -Path $pointAndPrintPath -Force | Out-Null
}
Set-ItemProperty -Path $pointAndPrintPath -Name "RestrictDriverInstallationToAdministrators" -Type DWord -Value 1
# Point and Print restrictions - Show warning and elevation prompt
Set-ItemProperty -Path $pointAndPrintPath -Name "NoWarningNoElevationOnInstall" -Type DWord -Value 0
Set-ItemProperty -Path $pointAndPrintPath -Name "UpdatePromptSettings" -Type DWord -Value 2
Vypnatie cloudové notifikácie vo Windows
Windows Push Notifications umožňuje aplikáciám a systémovým procesom prijímať oznámenia v reálnom čase prostredníctvom cloudových služieb Microsoftu. Hoci táto funkcionalita môže byť užitočná, môže predstavovať bezpečnostné riziko, ak útočník zneužije tento mechanizmus na odosielanie škodlivého obsahu alebo sledovanie aktivity používateľov.
CIS (Center for Internet Security) Benchmark odporúča zakázať cloudové notifikácie, aby sa minimalizovalo riziko úniku dát, narušenia súkromia a nadmernej sieťovej aktivity.
Skript zakazuje cloudové notifikácie vo Windows, čím zabezpečuje:
✅ Ochranu súkromia tým, že zabraňuje aplikáciám používať Microsoft Push Notification Service (MPNS)
✅ Zníženie sieťovej aktivity, čo môže zlepšiť výkon systému
✅ Minimalizáciu rizika exfiltrácie údajov cez cloudové notifikácie
# Turn off notifications network usage: enabled
$pushNotificationsPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications"
if (-not (Test-Path $pushNotificationsPath)) {
New-Item -Path $pushNotificationsPath -Force | Out-Null
}
Set-ItemProperty -Path $pushNotificationsPath -Name "DisableCloudNotifications" -Type DWord -Value 1
zaznamenávanie príkazového riadku pri spustení procesu
Auditovanie procesov v operačnom systéme Windows je dôležitou súčasťou detekcie hrozieb a forenznej analýzy incidentov. CIS (Center for Internet Security) Benchmark odporúča povoliť zaznamenávanie príkazového riadka pri spustení procesov, aby bolo možné sledovať škodlivé skripty, neoprávnené príkazy a podozrivé aktivity.
Tento skript aktivuje auditovanie príkazového riadka pri vytváraní procesov, čím umožňuje:
✅ Lepšiu detekciu škodlivého kódu a nežiaducich skriptov
✅ Forenznú analýzu v prípade bezpečnostných incidentov
✅ Zaznamenanie celého príkazového riadka procesu, čo pomáha pri vyšetrovaní kybernetických útokov
# Include command line in process creation events: enabled
$auditPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit"
if (-not (Test-Path $auditPath)) {
New-Item -Path $auditPath -Force | Out-Null
}
Set-ItemProperty -Path $auditPath -Name "ProcessCreationIncludeCmdLine_Enabled" -Type DWord -Value 1
Správne nastavenie Encryption Oracle Remediation
Encryption Oracle Remediation je bezpečnostná politika v Windows CredSSP (Credential Security Support Provider), ktorá chráni vzdialené pripojenia cez RDP (Remote Desktop Protocol) pred útokmi typu man-in-the-middle (MITM). CIS (Center for Internet Security) Benchmark odporúča vynútiť aktualizovaných klientov a zabrániť používaniu zraniteľných verzií CredSSP, čím sa minimalizuje riziko úniku poverení a vzdialených útokov.
Tento skript zabezpečuje, že iba aktualizovaní klienti môžu komunikovať cez CredSSP, čím sa predchádza zneužitiu zastaraných autentifikačných mechanizmov.
Skript nastavuje bezpečnostnú politiku Encryption Oracle Remediation tak, aby:
✅ Blokoval zastarané klienty, ktoré používajú nezabezpečené CredSSP verzie
✅ Zabraňoval downgrade útokom, pri ktorých sa útočník snaží prinútiť klienta používať slabšiu verziu šifrovania
✅ Vynútil bezpečnú komunikáciu pre vzdialené pripojenia cez RDP
# Encryption Oracle Remediation: force updated clients
$credSSPPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters"
if (-not (Test-Path $credSSPPath)) {
New-Item -Path $credSSPPath -Force | Out-Null
}
Set-ItemProperty -Path $credSSPPath -Name "AllowEncryptionOracle" -Type DWord -Value 2
Nastavenie delegácie neprenositeľných poverení
Delegácia poverení vo Windows umožňuje, aby overené relácie mohli odosielať autentifikačné údaje na vzdialené servery a služby. Toto správanie však môže predstavovať bezpečnostné riziko, ak sa nesprávne konfiguruje. CIS (Center for Internet Security) Benchmark odporúča povoliť delegáciu len neprenositeľných poverení, čím sa zabraňuje úniku autentifikačných údajov a neoprávnenému prístupu.
Tento skript umožňuje delegáciu neprenositeľných (non-exportable) poverení, čím zabezpečuje:
✅ Zvýšenú ochranu prihlasovacích údajov v sieťovom prostredí
✅ Prevenciu pred krádežou poverení a neoprávneným prístupom
✅ Zníženie rizika Pass-the-Hash a Pass-the-Ticket útokov
# Remote host allows delegation of non-exportable credentials: enabled
$credDelegationPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation"
if (-not (Test-Path $credDelegationPath)) {
New-Item -Path $credDelegationPath -Force | Out-Null
}
Set-ItemProperty -Path $credDelegationPath -Name "AllowProtectedCreds" -Type DWord -Value 1
Virtualization-Based Security (VBS)
Virtualization-Based Security (VBS) je pokročilá bezpečnostná technológia v systémoch Windows, ktorá využíva hardvérovú virtualizáciu na vytvorenie izolovaného prostredia pre bezpečnostné mechanizmy. CIS (Center for Internet Security) Benchmark odporúča povoliť VBS, pretože znižuje riziko malvéru, útokov na pamäť, a neoprávnených zmien v kritických častiach systému.
Tento skript zapína VBS a nastavuje bezpečnostné parametre, čím zabezpečuje:
✅ Ochranu pred útokmi zneužívajúcimi pamäťové zraniteľnosti
✅ Prevenciu proti útokom na jadro systému a eskalácii oprávnení
✅ Využitie hardvérových bezpečnostných prvkov na ochranu pred exploitmi
# Virtualization based security
$deviceGuardPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard"
if (-not (Test-Path $deviceGuardPath)) {
New-Item -Path $deviceGuardPath -Force | Out-Null
}
Set-ItemProperty -Path $deviceGuardPath -Name "EnableVirtualizationBasedSecurity" -Type DWord -Value 1
Set-ItemProperty -Path $deviceGuardPath -Name "PlatformSecurityLevel" -Type DWord -Value 1
Set-ItemProperty -Path $deviceGuardPath -Name "RequireSecureLaunch" -Type DWord -Value 1
zakázanie sťahovania metadát zariadení z internetu
Windows automaticky sťahuje metadáta zariadení z internetu, aby poskytol informácie ako ikony, popisy, ovládače a konfigurácie periférnych zariadení. Hoci táto funkcionalita môže byť užitočná, predstavuje potenciálne bezpečnostné riziko, pretože môže umožniť sťahovanie neovereného obsahu alebo vystaviť systém externým hrozbám.
CIS (Center for Internet Security) Benchmark odporúča zakázať sťahovanie metadát zariadení z internetu, aby sa minimalizovalo riziko malvéru, manipulácie s ovládačmi a neoprávneného odosielania údajov o zariadeniach.
Tento skript zabraňuje operačnému systému Windows v získavaní metadát zariadení zo siete, čím zabezpečuje:
✅ Zvýšenú bezpečnosť a kontrolu nad periférnymi zariadeniami
✅ Zabránenie sťahovania potenciálne nebezpečných alebo falošných metadát
✅ Minimalizáciu externého sieťového prenosu súvisiaceho so správou zariadení
# Prevent device metadata retrieval from the internet: enabled
$deviceMetadataPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata"
if (-not (Test-Path $deviceMetadataPath)) {
New-Item -Path $deviceMetadataPath -Force | Out-Null
}
Set-ItemProperty -Path $deviceMetadataPath -Name "PreventDeviceMetadataFromNetwork" -Type DWord -Value 1
Politika inicializácie boot-start ovládačov
Boot-Start Driver Initialization Policy riadi spôsob načítania ovládačov pri štarte systému Windows. Táto politika určuje, ktoré ovládače môžu byť načítané predtým, než sa systém úplne spustí, a tým pomáha chrániť pred bootkitmi, rootkitmi a škodlivými ovládačmi, ktoré sa môžu pokúsiť vykonať neautorizované operácie už počas bootovania.
CIS (Center for Internet Security) Benchmark odporúča nastaviť túto politiku tak, aby umožnila načítať iba overené a nevyhnutné ovládače, čím sa minimalizuje riziko kompromitácie systému ešte pred jeho spustením.
Tento skript povoľuje načítanie iba bezpečných ovládačov, čím zabezpečuje:
✅ Ochranu pred malvérom, ktorý sa pokúša spustiť počas bootovania systému
✅ Prevenciu pred škodlivými ovládačmi, ktoré môžu manipulovať s kernelom Windows
✅ Zachovanie kompatibility s kritickými ovládačmi, ktoré sú potrebné na správnu funkčnosť systému
# Boot-Start driver initialization policy: good, unknown, bad but critical
$earlyLaunchPath = "HKLM:\SYSTEM\CurrentControlSet\Policies\EarlyLaunch"
if (-not (Test-Path $earlyLaunchPath)) {
New-Item -Path $earlyLaunchPath -Force | Out-Null
}
Set-ItemProperty -Path $earlyLaunchPath -Name "DriverLoadPolicy" -Type DWord -Value 3
Spracovanie registra a bezpečnostných politík
Spracovanie Group Policy Object (GPO) politík v systéme Windows je kľúčové pre zachovanie konzistentného a bezpečného konfiguračného prostredia. Tieto politiky ovplyvňujú spracovanie registra a bezpečnostných nastavení, ktoré sa aplikujú na systém počas spustenia a v pravidelných intervaloch.
CIS (Center for Internet Security) Benchmark odporúča zabezpečiť, aby:
✅ Registračné politiky boli aplikované nielen pri štarte, ale aj v pravidelných intervaloch
✅ GPO bolo aplikované, aj keď v ňom neboli vykonané žiadne zmeny
✅ Bezpečnostné politiky boli vynútené aj bez nutnosti ručného zásahu administrátora
Tento skript konfiguruje správne spracovanie registra a bezpečnostných politík, čím zabezpečuje:
✅ Pravidelné a konzistentné aplikovanie bezpečnostných politík
✅ Vynútenie politík aj v prípadoch, keď neboli vykonané žiadne zmeny
✅ Zabránenie obchádzaniu bezpečnostných nastavení systémom alebo používateľmi
# Registry and security policy processing
# Configure registry policy processing - Do not apply during periodic background: false
$groupPolicyPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System\GroupPolicy"
if (-not (Test-Path $groupPolicyPath)) {
New-Item -Path $groupPolicyPath -Force | Out-Null
}
Set-ItemProperty -Path $groupPolicyPath -Name "DisableBkGndRegistryPolicy" -Type DWord -Value 0
# Process even if GPO not changed: true
Set-ItemProperty -Path $groupPolicyPath -Name "NoGPOListChanges" -Type DWord -Value 0
# Security policy processing
$secEditPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System\GroupPolicy\SecEdit"
if (-not (Test-Path $secEditPath)) {
New-Item -Path $secEditPath -Force | Out-Null
}
Nastavenia spracovania bezpečnostných politík a ochrany súkromia
Windows umožňuje automatické aplikovanie bezpečnostných politík a nastavení, pričom niektoré funkcie môžu znižovať bezpečnosť alebo ohrozovať súkromie. CIS (Center for Internet Security) Benchmark odporúča zabezpečiť pravidelné aplikovanie bezpečnostných politík, zakázať nežiaduce funkcie súvisiace so zberom údajov a obmedziť sťahovanie ovládačov z nedôveryhodných zdrojov.
Tento skript konfiguruje pravidelné spracovanie Group Policy, vypína nežiaduce funkcie súvisiace so súkromím a zabezpečuje bezpečné spracovanie tlačových ovládačov.
Skript posilňuje bezpečnosť a ochranu súkromia v systéme Windows tým, že:
✔ Umožňuje aplikovanie bezpečnostných politík aj v pravidelných intervaloch, nielen pri reštarte
✔ Vynucuje aplikovanie GPO aj vtedy, keď neboli vykonané žiadne zmeny
✔ Zakazuje automatické sťahovanie tlačových ovládačov cez HTTP
✔ Vypína zdieľanie a reportovanie údajov o rukopise na ochranu súkromia
# Do not apply during periodic background: false
Set-ItemProperty -Path $secEditPath -Name "DisableBkGndSecurityPolicy" -Type DWord -Value 0
# Process even if GPO not changed: true
Set-ItemProperty -Path $secEditPath -Name "NoGPOListChanges" -Type DWord -Value 0
# Continue experiences on this device: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "EnableCdp" -Type DWord -Value 0
# Turn off background refresh of Group Policy: disabled (set to 0 to allow)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System\GroupPolicy" -Name "DisableBkGndPolicy" -Type DWord -Value 0
# Turn off downloading of print drivers over HTTP: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers" -Name "DisableWebPnPDownload" -Type DWord -Value 1
# Turn off handwriting personalization data sharing: enabled
$handwritingErrorReportsPath = "HKLM:\SOFTWARE\Policies\Microsoft\HandwritingErrorReports"
if (-not (Test-Path $handwritingErrorReportsPath)) {
New-Item -Path $handwritingErrorReportsPath -Force | Out-Null
}
Set-ItemProperty -Path $handwritingErrorReportsPath -Name "PreventHandwritingDataSharing" -Type DWord -Value 1
# Turn off handwriting recognition error reporting: enabled
Set-ItemProperty -Path $handwritingErrorReportsPath -Name "PreventHandwritingErrorReports" -Type DWord -Value 1
Nastavenia na vypnutie online funkcií Microsoftu a ochranu súkromia
Windows obsahuje rôzne služby a asistenty, ktoré komunikujú so servermi Microsoftu. Niektoré z týchto funkcií sú bezpečnostným rizikom, pretože môžu odosielať údaje mimo organizácie, automaticky sťahovať obsah alebo umožniť neželanú interakciu s internetovými službami.
CIS (Center for Internet Security) Benchmark odporúča vypnúť tieto služby, aby sa:
✅ Zabránilo odosielaniu údajov na servery Microsoftu
✅ Zvýšila ochrana súkromia a zabránilo sa online registráciám
✅ Minimalizovalo riziko neautorizovaného prenosu dát
Tento skript zakazuje internetové asistenty a automatické sťahovanie obsahu v systéme Windows, čím zabezpečuje:
✅ Zvýšenú kontrolu nad dátami, ktoré systém odosiela na internet
✅ Zabránenie sťahovaniu neautorizovaného obsahu a webových služieb
✅ Zlepšenie bezpečnosti obmedzením funkcií publikovania na web a tlače cez HTTP
# Turn off Internet Connection Wizard if referring to Microsoft.com: enabled
$icwPath = "HKLM:\SOFTWARE\Policies\Microsoft\Internet Connection Wizard"
if (-not (Test-Path $icwPath)) {
New-Item -Path $icwPath -Force | Out-Null
}
Set-ItemProperty -Path $icwPath -Name "DisableICW" -Type DWord -Value 1
# Turn off Internet download for Web publishing wizards: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "DisableWebPublishingWizard" -Type DWord -Value 1
# Turn off printing over HTTP: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers" -Name "DisableHTTPPrinting" -Type DWord -Value 1
# Turn off Registration if URL referring to Microsoft.com: enabled
$registrationWizardPath = "HKLM:\SOFTWARE\Policies\Microsoft\RegistrationWizard"
if (-not (Test-Path $registrationWizardPath)) {
New-Item -Path $registrationWizardPath -Force | Out-Null
}
Set-ItemProperty -Path $registrationWizardPath -Name "DisableRegistration" -Type DWord -Value 1
# Turn off Search Companion content file updates: enabled
$searchCompanionPath = "HKLM:\SOFTWARE\Policies\Microsoft\SearchCompanion"
if (-not (Test-Path $searchCompanionPath)) {
New-Item -Path $searchCompanionPath -Force | Out-Null
}
Set-ItemProperty -Path $searchCompanionPath -Name "DisableContentFileUpdates" -Type DWord -Value 1
# Turn off the "Order Prints": enabled
$photoPrintingWizardPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PhotoPrintingWizard"
if (-not (Test-Path $photoPrintingWizardPath)) {
New-Item -Path $photoPrintingWizardPath -Force | Out-Null
}
Set-ItemProperty -Path $photoPrintingWizardPath -Name "DisableOnlinePrints" -Type DWord -Value 1
# Turn off the "Publish to Web" task: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "DisablePublishToWebTask" -Type DWord -Value 1
Nastavenia na vypnutie Windows CEIP, Windows Messenger CEIP a Windows Error Reporting
Windows obsahuje telemetrické a diagnostické funkcie, ktoré zbierajú údaje o používaní systému a odosielajú ich do Microsoftu. Program Customer Experience Improvement Program (CEIP) a Windows Error Reporting (WER) sú medzi týmito funkciami a môžu predstavovať bezpečnostné riziko, pretože odosielajú informácie o systéme, aplikáciách a chybách na servery Microsoftu.
CIS (Center for Internet Security) Benchmark odporúča tieto funkcie vypnúť, aby sa:
✅ Zabránilo odosielaniu diagnostických údajov na servery Microsoftu
✅ Zvýšila ochrana súkromia a citlivých systémových informácií
✅ Minimalizovalo riziko, že útočník môže zneužiť mechanizmus chybových hlásení na získanie detailov o systéme
Tento skript zakazuje CEIP, Windows Messenger CEIP a Windows Error Reporting, čím zabezpečuje:
✅ Zvýšenú ochranu súkromia a zníženie telemetrickej aktivity
✅ Minimalizáciu možného úniku citlivých údajov
✅ Zlepšenie výkonu systému odstránením nepotrebného odosielania údajov
# Turn off the Windows Messenger CEIP: enabled
$messengerCEIPPath = "HKLM:\SOFTWARE\Policies\Microsoft\Messenger\CEIP"
if (-not (Test-Path $messengerCEIPPath)) {
New-Item -Path $messengerCEIPPath -Force | Out-Null
}
Set-ItemProperty -Path $messengerCEIPPath -Name "DisableCEIP" -Type DWord -Value 1
# Turn off Windows CEIP: enabled
$sqmClientPath = "HKLM:\SOFTWARE\Policies\Microsoft\SQMClient\Windows"
if (-not (Test-Path $sqmClientPath)) {
New-Item -Path $sqmClientPath -Force | Out-Null
}
Set-ItemProperty -Path $sqmClientPath -Name "CEIPEnable" -Type DWord -Value 0
# Turn off Windows Error Reporting: enabled
$errorReportingPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting"
if (-not (Test-Path $errorReportingPath)) {
New-Item -Path $errorReportingPath -Force | Out-Null
}
Set-ItemProperty -Path $errorReportingPath -Name "Disabled" -Type DWord -Value 1
Posilnenie bezpečnosti hesiel, prihlasovacej obrazovky a vzdialeného prístupu
Windows umožňuje rôzne nastavenia na posilnenie bezpečnosti hesiel, prihlasovania, vzdialeného prístupu a správy RPC. Tieto nastavenia sú kľúčové pre minimalizovanie rizika neoprávneného prístupu, ochranu hesiel a zabezpečenie správy politiky autentifikácie.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zabezpečenie hesiel pomocou zložitosti a dĺžky
✅ Obmedzenie zobrazovania citlivých údajov na prihlasovacej obrazovke
✅ Vyžadovanie hesla pri prebudení systému
✅ Zakázanie vzdialenej pomoci (Remote Assistance) a neoverených RPC klientov
✅ Zamedzenie interaktívnej komunikácie s podpornými službami cez MSDT
Tento skript konfiguruje bezpečnostné politiky pre heslá, prihlasovaciu obrazovku, vzdialený prístup a RPC, čím zabezpečuje:
✅ Posilnenie hesiel a ich ochranu pred reverzným šifrovaním
✅ Zvýšenú ochranu súkromia na prihlasovacej obrazovke
✅ Zabránenie neoprávnenému prístupu cez vzdialenú pomoc
✅ Zabezpečenie autentifikácie pre RPC a obmedzenie prístupu neovereným klientom
# Password Policies (Complexity and Length)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "PasswordComplexity" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "MinimumPasswordLength" -Type DWord -Value 15
# Enable password encryption (no reversible encryption):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "ClearTextPassword" -Type DWord -Value 0
# Allow Custom SSPs and APs: disabled
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "DisableCustomSSPs" -Type DWord -Value 1
# LSASS as a protected process: enabled
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL" -Type DWord -Value 1
# Disallow copying user input methods to system account for sign-in: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "DisallowCopyingInputMethodsToSystemAccount" -Type DWord -Value 1
# Sign-in UI Settings
# Block user from showing account details: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "BlockUserFromShowingAccountDetailsOnSignin" `
-Type DWord `
-Value 1
# Do not display network selection UI: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "DontDisplayNetworkSelectionUI" `
-Type DWord `
-Value 1
# Turn off app notifications on lock screen: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "DisableLockScreenAppNotifications" `
-Type DWord `
-Value 1
# Turn off picture password sign-in: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "BlockDomainPicturePassword" `
-Type DWord `
-Value 1
# Turn on convenience PIN sign-in: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "AllowDomainPINLogon" `
-Type DWord `
-Value 0
# Require a password when a computer wakes:
powercfg /SETDCVALUEINDEX SCHEME_CURRENT SUB_NONE CONSOLELOCK 1
powercfg /SETACVALUEINDEX SCHEME_CURRENT SUB_NONE CONSOLELOCK 1
# Remote Assistance settings: disabled
$terminalServicesPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services"
if (-not (Test-Path $terminalServicesPath)) {
New-Item -Path $terminalServicesPath -Force | Out-Null
}
Set-ItemProperty -Path $terminalServicesPath -Name "fAllowToGetHelp" -Type DWord -Value 0
Set-ItemProperty -Path $terminalServicesPath -Name "fAllowUnsolicited" -Type DWord -Value 0
# Enable RPC Endpoint Mapper Client Auth: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "EnableAuthEpResolution" `
-Type DWord `
-Value 1
# Restrict Unauthenticated RPC clients: authenticated
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Rpc" `
-Name "RestrictRemoteClients" `
-Type DWord `
-Value 1
# MSDT interactive communication with support provider: disabled
$msdtPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\ScriptedDiagnosticsProvider\Policy"
if (-not (Test-Path $msdtPath)) {
New-Item -Path $msdtPath -Force | Out-Null
}
Set-ItemProperty -Path $msdtPath -Name "DisableQueryRemoteServer" -Type DWord -Value 1
# PerfTrack: disabled
$perfTrackPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WDI\{9C5A3C52-EE91-4AFA-9A20-101346A0F8A3}"
if (-not (Test-Path $perfTrackPath)) {
New-Item -Path $perfTrackPath -Force | Out-Null
}
Set-ItemProperty -Path $perfTrackPath -Name "ScenarioExecutionEnabled" -Type DWord -Value 0
Konfigurácia Windows NTP klienta a NTP servera
Presná synchronizácia systémového času je kritická pre bezpečnosť, správu logov a autentifikáciu v systéme Windows.
Skript povoľuje Windows NTP klienta a zakazuje NTP server, aby Windows mohol synchronizovať čas, ale neposkytoval ho iným zariadeniam.
# Windows NTP Client: enabled, Windows NTP Server: disabled
$ntpClientPath = "HKLM:\SOFTWARE\Policies\Microsoft\W32time\TimeProviders\NtpClient"
$ntpServerPath = "HKLM:\SOFTWARE\Policies\Microsoft\W32time\TimeProviders\NtpServer"
if (-not (Test-Path $ntpClientPath)) {
New-Item -Path $ntpClientPath -Force | Out-Null
}
if (-not (Test-Path $ntpServerPath)) {
New-Item -Path $ntpServerPath -Force | Out-Null
}
Set-ItemProperty -Path $ntpClientPath -Name "Enabled" -Type DWord -Value 1
Set-ItemProperty -Path $ntpServerPath -Name "Enabled" -Type DWord -Value 0
Obmedzenie Microsoft účtov a vypnutie funkcie AutoRun/AutoPlay
Windows umožňuje automatické pripojenie a spúšťanie zariadení, ako aj integrované prihlásenie pomocou Microsoft účtu.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Obmedziť povinné používanie Microsoft účtov
✅ Zakázať AutoRun a AutoPlay na všetkých zariadeniach
✅ Zabezpečiť, aby AutoRun nespúšťal žiadne neautorizované skripty
Tento skript zabezpečuje bezpečnosť prihlasovania a ochranu pred škodlivými externými zariadeniami tým, že:
✅ Umožňuje používať Windows bez Microsoft účtu
✅ Zakazuje AutoPlay na všetkých typoch médií
✅ Zakazuje AutoRun, čím zabraňuje automatickému spúšťaniu škodlivého softvéru
# Allow Microsoft accounts to be optional: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "MSAOptional" `
-Type DWord `
-Value 1
# Disallow Autoplay for non-volume devices: enabled
$explorerPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer"
if (-not (Test-Path $explorerPath)) {
New-Item -Path $explorerPath -Force | Out-Null
}
Set-ItemProperty -Path $explorerPath -Name "NoAutoplayfornonVolume" -Type DWord -Value 1
# Turn off Autoplay: all drives
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" `
-Name "NoDriveTypeAutoRun" `
-Type DWord `
-Value 255
# Set default behavior for AutoRun: do not execute any autorun commands
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" `
-Name "NoAutorun" `
-Type DWord `
-Value 1
Posilnenie biometrickej autentifikácie, ochrany súkromia a bezpečnostných nastavení
Windows umožňuje biometrické overovanie, kamerové funkcie a cloudové služby, ktoré môžu ovplyvniť bezpečnosť a súkromie používateľov. Zraniteľnosti v týchto oblastiach môžu byť zneužité útočníkmi na falšovanie identity, neoprávnený prístup alebo nežiaduce zdieľanie dát so službami Microsoftu.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Povoliť rozšírenú ochranu proti podvodom pri rozpoznávaní tváre (anti-spoofing)
✅ Zakázať kameru pre zvýšenie bezpečnosti v citlivých prostrediach
✅ Zakázať cloudovo optimalizovaný obsah a spotrebiteľské funkcie Microsoftu
✅ Vyžadovať PIN pri párovaní Bluetooth zariadení
✅ Zakázať zobrazovanie administrátorských účtov pri zvýšení oprávnení
Skript posilňuje biometrickú autentifikáciu, vypína nepotrebné cloudové služby a obmedzuje použitie kamery, aby sa:
✔ Zvýšila bezpečnosť biometrického overovania a zabránilo sa podvodom pri rozpoznávaní tváre
✔ Zakázala kamera v prostrediach, kde je nežiaduca (napr. v podnikových sieťach)
✔ Obmedzil prístup k cloudovým službám, ktoré môžu ohroziť súkromie
✔ Zvýšila bezpečnosť párovania Bluetooth zariadení pomocou PIN kódu
✔ Zakázalo zobrazovanie administrátorských účtov pri UAC výzvach
# Configure enhanced anti-spoofing: enabled
$facialFeaturesPath = "HKLM:\SOFTWARE\Policies\Microsoft\Biometrics\FacialFeatures"
if (-not (Test-Path $facialFeaturesPath)) {
New-Item -Path $facialFeaturesPath -Force | Out-Null
}
Set-ItemProperty -Path $facialFeaturesPath -Name "EnhancedAntiSpoofing" -Type DWord -Value 1
# Allow Use of Camera: disabled
$cameraPath = "HKLM:\SOFTWARE\Policies\Microsoft\Camera"
if (-not (Test-Path $cameraPath)) {
New-Item -Path $cameraPath -Force | Out-Null
}
Set-ItemProperty -Path $cameraPath -Name "AllowCamera" -Type DWord -Value 0
# Turn off cloud consumer account state content: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" `
-Name "DisableConsumerAccountStateContent" `
-Type DWord `
-Value 1
# Turn off cloud optimized content: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" `
-Name "DisableCloudOptimizedContent" `
-Type DWord `
-Value 1
# Turn off Microsoft consumer experiences: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" `
-Name "DisableWindowsConsumerFeatures" `
-Type DWord `
-Value 1
# Require pin for pairing: enabled - always
$connectPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Connect"
if (-not (Test-Path $connectPath)) {
New-Item -Path $connectPath -Force | Out-Null
}
Set-ItemProperty -Path $connectPath -Name "RequirePinForPairing" -Type DWord -Value 1
# Enumerate administrator accounts on elevation: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" `
-Name "FilterAdministratorToken" `
-Type DWord `
-Value 1
Obmedzenie diagnostických údajov a ochrana pred neautorizovaným zberom dát
Windows štandardne zhromažďuje diagnostické údaje a odosiela ich spoločnosti Microsoft, čo môže predstavovať bezpečnostné riziko. Tento mechanizmus je určený na zlepšenie stability systému, avšak môže obsahovať citlivé informácie, ktoré organizácie nechcú zdieľať.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať diagnostický zber údajov (telemetriu)
✅ Zakázať sťahovanie aktualizácií nastavení OneSettings
✅ Zakázať notifikácie spätnej väzby
✅ Obmedziť diagnostické a pamäťové výpisy (dump files)
✅ Zakázať App Installer a experimentálne funkcie inštalácie aplikácií
Tento skript zakazuje telemetriu a obmedzuje diagnostické funkcie Windows, čím zabezpečuje:
✅ Minimalizáciu rizika úniku citlivých údajov cez diagnostické kanály
✅ Zvýšenie súkromia a kontroly nad systémovými informáciami
✅ Obmedzenie automatických sťahovaní konfigurácií, ktoré môžu zmeniť nastavenia systému
# Allow Diagnostic Data: enabled - diagnostic data off
$dataCollectionPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"
if (-not (Test-Path $dataCollectionPath)) {
New-Item -Path $dataCollectionPath -Force | Out-Null
}
Set-ItemProperty -Path $dataCollectionPath -Name "AllowTelemetry" -Type DWord -Value 0
# Configure Authenticated Proxy usage for Telemetry: disable authenticated proxy usage
Set-ItemProperty -Path $dataCollectionPath -Name "DisableEnterpriseAuthProxy" -Type DWord -Value 1
# Disable OneSettings Downloads: enabled
Set-ItemProperty -Path $dataCollectionPath -Name "DisableOneSettingsDownloads" -Type DWord -Value 1
# Do not show feedback notifications: enabled
$siufPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\SIUF"
if (-not (Test-Path $siufPath)) {
New-Item -Path $siufPath -Force | Out-Null
}
Set-ItemProperty -Path $siufPath -Name "DisableNotifications" -Type DWord -Value 1
# Enable OneSettings Auditing: enabled
Set-ItemProperty -Path $dataCollectionPath -Name "EnableOneSettingsAuditing" -Type DWord -Value 1
# Limit Diagnostic Log Collection: enabled
Set-ItemProperty -Path $dataCollectionPath -Name "LimitDiagnosticLogCollection" -Type DWord -Value 1
# Limit Dump Collection: enabled
Set-ItemProperty -Path $dataCollectionPath -Name "LimitDumpCollection" -Type DWord -Value 1
# App Installer settings: disabled
$appInstallerPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppInstaller"
if (-not (Test-Path $appInstallerPath)) {
New-Item -Path $appInstallerPath -Force | Out-Null
}
Set-ItemProperty -Path $appInstallerPath -Name "EnableAppInstaller" -Type DWord -Value 0
Set-ItemProperty -Path $appInstallerPath -Name "EnableAppInstallerExpFeatures" -Type DWord -Value 0
Set-ItemProperty -Path $appInstallerPath -Name "EnableHashOverride" -Type DWord -Value 0
Set-ItemProperty -Path $appInstallerPath -Name "EnableAppInstallerProtocol" -Type DWord -Value 0
Nastavenie veľkosti a správania Event Logov
Windows Event Logy sú kľúčové pre detekciu bezpečnostných incidentov, forenznú analýzu a správu systému. Ak sú logy príliš malé, môžu sa rýchlo prepísať a stratiť dôležité záznamy, čo znemožní analýzu bezpečnostných incidentov.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Nastaviť primeranú veľkosť logov, aby obsahovali dostatok historických záznamov
✅ Zabezpečiť, že bezpečnostné logy (Security Log) majú dostatočnú kapacitu
✅ Zabrániť strate dôležitých udalostí v dôsledku obmedzenej veľkosti logov
Tento skript zväčšuje veľkosť Event Logov a zaisťuje, že kritické udalosti nebudú stratené, čím zabezpečuje:
✅ Možnosť spätného dohľadania bezpečnostných incidentov
✅ Dostatočné uchovávanie údajov o prihláseniach, zlyhaniach a systémových chybách
✅ Prevenciu proti rýchlemu prepisovaniu logov pri veľkom objeme udalostí
# Event log size and behavior (Application, Security, Setup, System)
Write-Progress -Activity "System Hardening" -Status "Step 28/38: Configuring Event Log sizes" -PercentComplete ([int](($CurrentStep / $TotalSteps) * 100))
$CurrentStep++
Write-Log "Configuring Event Log sizes..."
function Set-EventLogMaxSize {
param (
[string]$LogName,
[int]$MaxSizeKB
)
$eventLogPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\EventLog\$LogName"
if (-not (Test-Path $eventLogPath)) {
New-Item -Path $eventLogPath -Force | Out-Null
}
Set-ItemProperty -Path $eventLogPath -Name "MaxSize" -Type DWord -Value $MaxSizeKB
}
# Application Log
Set-EventLogMaxSize -LogName "Application" -MaxSizeKB 32768
# Security Log
Set-EventLogMaxSize -LogName "Security" -MaxSizeKB 196608
# Setup Log
Set-EventLogMaxSize -LogName "Setup" -MaxSizeKB 32768
# System Log
Set-EventLogMaxSize -LogName "System" -MaxSizeKB 32768
Zakázanie služieb určovania polohy vo Windows
Windows štandardne umožňuje určovanie polohy zariadenia pomocou GPS, Wi-Fi a IP adries. Táto funkcia je užitočná pre aplikácie, ale môže predstavovať vážne bezpečnostné riziko, najmä v podnikových a citlivých prostrediach.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať služby určovania polohy, ak nie sú nevyhnutné pre činnosť organizácie
✅ Zabrániť aplikáciám v prístupe k údajom o polohe
✅ Minimalizovať únik údajov a ochranu súkromia v podnikových prostrediach
Tento skript zakazuje služby určovania polohy vo Windows, čím zabezpečuje:
✅ Zamedzenie neoprávnenému sledovaniu zariadenia
✅ Zvýšenú ochranu súkromia a dátových údajov
✅ Prevenciu proti potenciálnym hrozbám spojeným s únikom polohy
# Turn off location: enabled
Write-Progress -Activity "System Hardening" -Status "Step 29/38: Disabling location services" -PercentComplete ([int](($CurrentStep / $TotalSteps) * 100))
$CurrentStep++
Write-Log "Disabling location services..."
$locationAndSensorsPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors"
if (-not (Test-Path $locationAndSensorsPath)) {
New-Item -Path $locationAndSensorsPath -Force | Out-Null
}
Set-ItemProperty -Path $locationAndSensorsPath -Name "DisableLocation" -Type DWord -Value 1
Zakázanie cloud synchronizácie správ a obmedzenie Microsoft účtov
Windows umožňuje synchronizáciu správ cez Microsoft cloud a umožňuje používateľom prihlásiť sa pomocou osobných Microsoft účtov. Tieto funkcie však môžu predstavovať vážne bezpečnostné riziko v podnikových prostrediach a pri správe citlivých údajov.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať synchronizáciu správ cez cloud (Message Service Cloud Sync)
✅ Blokovať možnosť prihlásenia používateľov cez spotrebiteľské Microsoft účty
✅ Obmedziť prepojenie Windows účtov s Microsoft cloudom, čím sa zníži riziko úniku dát
Tento skript zakazuje cloudovú synchronizáciu správ a blokuje spotrebiteľské Microsoft účty, čím zabezpečuje:
✅ Zvýšenú ochranu citlivých údajov pred únikom cez cloudové služby
✅ Zníženie rizika neoprávneného prístupu cez osobné Microsoft účty
✅ Zvýšenie kontroly nad autentifikáciou a správou používateľských účtov v organizácii
# Allow Message Service Cloud Sync: disabled
$messagingPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Messaging"
if (-not (Test-Path $messagingPath)) {
New-Item -Path $messagingPath -Force | Out-Null
}
Set-ItemProperty -Path $messagingPath -Name "AllowMessageSync" -Type DWord -Value 0
# Block all consumer Microsoft account user authentication: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "NoConnectedUser" `
-Type DWord `
-Value 3
Ochrana systému – Zakázanie MAPS, Defender nastavení a OneDrive
Windows štandardne umožňuje zdieľanie údajov o škodlivých súboroch cez Microsoft MAPS, čo môže predstavovať bezpečnostné riziko v podnikových prostrediach. Okrem toho, neautorizovaný prístup na nebezpečné weby, použitie OneDrive na ukladanie firemných súborov a vypnutie kritických Defender funkcií môžu zvýšiť riziko kybernetických útokov.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať MAPS (Microsoft Active Protection Service) pre zvýšenie súkromia
✅ Povoliť Attack Surface Reduction (ASR) na blokovanie škodlivých aplikácií
✅ Blokovať prístup na nebezpečné webové stránky pomocou SmartScreen
✅ Povoliť Microsoft Defender Antivirus (AV) pre ochranu pred malware
✅ Zakázať OneDrive na podnikových zariadeniach, aby sa zabránilo úniku dát
Tento skript chráni systém pred zbytočným zdieľaním údajov, zabezpečuje ochranu pred exploitmi a bráni používateľom v ukladaní citlivých firemných údajov na neautorizované cloudové úložiská.
# Configure local setting override for Microsoft MAPS: disabled
$spyNetPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\SpyNet"
if (-not (Test-Path $spyNetPath)) {
New-Item -Path $spyNetPath -Force | Out-Null
}
Set-ItemProperty -Path $spyNetPath -Name "LocalSettingOverride" -Type DWord -Value 0
# Join Microsoft MAPS: disabled
Set-ItemProperty -Path $spyNetPath -Name "SpyNetReporting" -Type DWord -Value 0
# Configure Attack Surface Reduction rules: enabled
$asrPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Windows Defender Exploit Guard\ASR"
if (-not (Test-Path $asrPath)) {
New-Item -Path $asrPath -Force | Out-Null
}
Set-ItemProperty -Path $asrPath -Name "ASRRules" -Type DWord -Value 1
# Prevent users and apps from accessing dangerous websites: block
$smartScreenPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\SmartScreen"
if (-not (Test-Path $smartScreenPath)) {
New-Item -Path $smartScreenPath -Force | Out-Null
}
Set-ItemProperty -Path $smartScreenPath -Name "ConfigureAppInstallControl" -Type DWord -Value 2
# Turn off Microsoft Defender AntiVirus: disabled (AV on)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" `
-Name "DisableAntiSpyware" `
-Type DWord `
-Value 0
# Prevent usage of OneDrive for file storage: enabled
$oneDrivePath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\OneDrive"
if (-not (Test-Path $oneDrivePath)) {
New-Item -Path $oneDrivePath -Force | Out-Null
}
Set-ItemProperty -Path $oneDrivePath -Name "DisableFileSyncNGSC" -Type DWord -Value 1
Posilnenie bezpečnosti RDP (Remote Desktop Protocol)
Vzdialená pracovná plocha (Remote Desktop Protocol – RDP) je jedným z najčastejšie zneužívaných vektorov útokov. Ak nie je správne nakonfigurovaná, môže útočníkom umožniť neautorizovaný prístup do systému.
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Obmedziť každého používateľa na jednu RDP reláciu (Single Session Mode)
✅ Zakázať UI Automation redirection, aby sa zabránilo automatizovaným útokom cez RDP
Tento skript posilňuje bezpečnosť RDP tým, že obmedzuje počet relácií na jedného používateľa a zakazuje UI Automation redirection, čím zabezpečuje:
✅ Zvýšenú kontrolu nad vzdialenými reláciami a zníženie rizika zneužitia
✅ Minimalizáciu automatizovaných útokov na RDP pomocou UI Automation
✅ Ochranu pred neautorizovaným prístupom a zníženie možnosti RDP brute-force útokov
# RDP Settings
Write-Progress -Activity "System Hardening" -Status "Step 30/38: Configuring RDP settings" -PercentComplete ([int](($CurrentStep / $TotalSteps) * 100))
$CurrentStep++
Write-Log "Configuring RDP Settings..."
# Restrict RDS users to a single session: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fSingleSessionPerUser" `
-Type DWord `
-Value 1
# Allow UI Automation redirection: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fDisableUARedirection" `
-Type DWord `
-Value 1
Posilnenie bezpečnosti RDP – Ochrana proti presmerovaniu zariadení a zvýšenie šifrovania
Vzdialená pracovná plocha (Remote Desktop Protocol – RDP) poskytuje používateľom možnosť vzdialeného prístupu k systémom. Ak nie je správne nakonfigurovaná, môže sa stať hlavným vektorom útoku, umožňujúc presmerovanie zariadení, slabé šifrovanie a neautorizovaný prístup.
🔴 Útočníci môžu zneužiť presmerovanie lokálnych zariadení (USB, LPT, COM porty) na exfiltráciu dát
🔴 Nezabezpečená RDP komunikácia môže byť zachytená pomocou útokov typu „Man-in-the-Middle“
🔴 Nedostatočné šifrovanie umožňuje útočníkom dešifrovať komunikáciu medzi klientom a serverom
🔴 Neautorizované prihlásenia môžu byť možné, ak systém nevyžaduje vždy heslo pri RDP relácii
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať presmerovanie USB, LPT, COM, Plug-and-Play a WebAuthn zariadení
✅ Vždy vyžadovať heslo pri RDP pripojení
✅ Vyžadovať šifrovanú komunikáciu cez SSL a zabezpečený RPC
✅ Povoliť sieťovú autentifikáciu (Network Level Authentication – NLA)
✅ Nastaviť časové limity pre neaktívne a odpojené relácie, aby sa znížilo riziko neoprávneného prístupu
Tento skript posilňuje bezpečnosť RDP obmedzením presmerovania zariadení, zvýšením úrovne šifrovania a zavedením bezpečnostných obmedzení na nečinné relácie, čím zabezpečuje:
✅ Zníženie rizika exfiltrácie údajov cez RDP reláciu
✅ Ochranu pred útokmi na nezašifrovanú RDP komunikáciu
✅ Prevenciu proti neoprávnenému prístupu cez slabé autentifikačné mechanizmy
# Do not allow COM/LPT/drive/location/PlugAndPlay/WebAuthn redirection: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fDisableCcm" `
-Type DWord `
-Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fDisableLPT" `
-Type DWord `
-Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fDisableCdm" `
-Type DWord `
-Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fDisablePNPRedir" `
-Type DWord `
-Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fDisableWebAuthnRedir" `
-Type DWord `
-Value 1
# Always prompt for password upon connection: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fPromptForPassword" `
-Type DWord `
-Value 1
# Require secure RPC communication: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "fEncryptRPCTraffic" `
-Type DWord `
-Value 1
# Require specific security layer: SSL (2)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "SecurityLayer" `
-Type DWord `
-Value 2
# Require NLA: enabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "UserAuthentication" `
-Type DWord `
-Value 1
# Set client connection encryption level: High (3)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "MinEncryptionLevel" `
-Type DWord `
-Value 3
# Set time limit for active but idle sessions: 15 minutes
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "MaxIdleTime" `
-Type DWord `
-Value 900000
# Set time limit for disconnected sessions: 1 minute
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
-Name "MaxDisconnectionTime" `
-Type DWord `
-Value 60000
Zakázanie KMS AVS validácie a posilnenie SmartScreen
Windows obsahuje viacero bezpečnostných mechanizmov, ktoré môžu zlepšiť ochranu pred škodlivým softvérom a podvodnými aplikáciami. CIS Benchmark odporúča zakázanie online AVS validácie pre KMS klientov a posilnenie Microsoft Defender SmartScreen, aby sa minimalizovalo riziko škodlivých aktivít v systéme.
🔴 Online validácia KMS môže predstavovať bezpečnostné riziko, pretože systém komunikuje s externými servermi
🔴 Ak nie je SmartScreen správne nakonfigurovaný, používatelia môžu nevedomky spúšťať škodlivý softvér
🔴 Útočníci môžu obísť ochranu systému, ak SmartScreen umožňuje ľahké obchádzanie varovaní
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať KMS Client Online AVS Validáciu, aby sa minimalizovalo riziko zneužitia licenčného mechanizmu
✅ Povoliť Windows Defender SmartScreen, aby varoval pred škodlivými aplikáciami
✅ Zakázať možnosť obísť varovanie SmartScreen, aby používatelia nevedomky nespustili škodlivý softvér
Tento skript zlepšuje bezpečnosť Windows systému zakázaním nebezpečnej KMS validácie a posilnením SmartScreen ochrany, čím zabezpečuje:
✅ Prevenciu pred neautorizovanou online licenčnou validáciou
✅ Blokovanie potenciálne škodlivých aplikácií a ochránenie používateľov pred sociálnym inžinierstvom
✅ Zvýšenie kontroly nad bezpečnostnými nastaveniami, aby sa predišlo chybám používateľov
# Turn off KMS Client Online AVS Validation: enabled
$KMSOnlineAVSValid = "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Software Protection Platform"
if (-not (Test-Path $KMSOnlineAVSValid)) {
New-Item -Path $KMSOnlineAVSValid -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Software Protection Platform" `
-Name "NoCbsAvsValidation" `
-Type DWord `
-Value 1
# Configure Windows Defender SmartScreen: warn and prevent bypass
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "EnableSmartScreen" `
-Type DWord `
-Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" `
-Name "ConfigureAppInstallControl" `
-Type DWord `
-Value 2
Posilnenie bezpečnosti Windows Ink Workspace, PowerShell a prihlásenia
Windows poskytuje viacero funkcií, ktoré môžu byť potenciálnymi bezpečnostnými rizikami, ak nie sú správne nakonfigurované. Windows Ink Workspace umožňuje používateľom používať digitálne pero a aplikácie na písanie poznámok, pričom môže zobrazovať odporúčané aplikácie, ktoré nie sú vždy bezpečné. PowerShell skriptovanie je výkonný nástroj pre administrátorov, no môže byť zneužitý útočníkmi na vykonávanie škodlivých príkazov. Automatické prihlásenie po reštarte môže zvýšiť riziko neautorizovaného prístupu k systému.
🔴 Odporúčané aplikácie vo Windows Ink Workspace môžu obsahovať bezpečnostné riziká
🔴 PowerShell môže byť použitý na vykonávanie škodlivých skriptov, ak nie je správne monitorovaný
🔴 Automatické prihlásenie po reštarte môže umožniť útočníkom prístup k systému bez zadania hesla
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať odporúčané aplikácie a samotný Windows Ink Workspace
✅ Zakázať automatické prihlásenie po reštarte, aby bol vyžadovaný login
✅ Povoliť PowerShell Script Block Logging a Transcription pre monitorovanie skriptovania
Tento skript zlepšuje bezpečnosť systému odstránením nepotrebných funkcionalít, zvýšením transparentnosti PowerShell skriptov a zabránením automatickému prihláseniu, čím zabezpečuje:
✅ Zníženie rizika inštalácie nežiaducich alebo škodlivých aplikácií
✅ Zvýšenie kontroly nad spúšťaním PowerShell skriptov a potenciálne škodlivým kódom
✅ Minimalizovanie neautorizovaného prístupu k systému po reštarte
# Allow suggested apps in Windows Ink Workspace: disabled
$WindowsInkWSPath = "HKLM:\SOFTWARE\Policies\Microsoft\WindowsInkWorkspace"
if (-not (Test-Path $WindowsInkWSPath)) {
New-Item -Path $WindowsInkWSPath -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsInkWorkspace" `
-Name "AllowSuggestedAppsInWindowsInkWorkspace" `
-Type DWord `
-Value 0
# Allow Windows Ink Workspace: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsInkWorkspace" `
-Name "AllowWindowsInkWorkspace" `
-Type DWord `
-Value 0
# Prevent IE security prompt for Windows Installer scripts: disabled (no registry needed if default)
# Sign-in and lock last interactive user automatically after a restart: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" `
-Name "DisableAutomaticRestartSignOn" `
-Type DWord `
-Value 1
# Turn on PowerShell Script Block Logging: enabled
$scriptBlockLoggingPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
if (-not (Test-Path $scriptBlockLoggingPath)) {
New-Item -Path $scriptBlockLoggingPath -Force | Out-Null
}
Set-ItemProperty -Path $scriptBlockLoggingPath -Name "EnableScriptBlockLogging" -Type DWord -Value 1
# Turn on PowerShell Transcription: enabled
$transcriptionPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription"
if (-not (Test-Path $transcriptionPath)) {
New-Item -Path $transcriptionPath -Force | Out-Null
}
Set-ItemProperty -Path $transcriptionPath -Name "EnableTranscripting" -Type DWord -Value 1
Posilnenie bezpečnosti Windows Remote Management (WinRM) a Windows Remote Shell (WinRS)
Windows Remote Management (WinRM) a Windows Remote Shell (WinRS) umožňujú vzdialenú správu systémov cez PowerShell a príkazový riadok. Hoci tieto funkcie môžu byť užitočné pre administrátorov, môžu byť tiež zneužité útočníkmi na vzdialený prístup k systému.
🔴 Ak je povolený základný (Basic) autentifikačný mechanizmus, útočníci môžu získať heslá v nezašifrovanej podobe
🔴 Nešifrovaný WinRM prenos môže byť zachytený a použitý na získanie citlivých údajov
🔴 Ak je povolená Windows Remote Shell (WinRS), útočníci môžu vykonávať príkazy na diaľku
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať Basic autentifikáciu vo WinRM, aby sa zabránilo odosielaniu hesiel v nezašifrovanej podobe
✅ Zakázať nezašifrovaný prenos WinRM, aby sa zabránilo odpočúvaniu komunikácie
✅ Zakázať Digest autentifikáciu, aby sa zabránilo slabým autentifikačným metódam
✅ Zakázať Windows Remote Shell (WinRS), aby sa zabránilo neautorizovanému vzdialenému vykonávaniu príkazov
✅ Zakázať RunAs vo WinRM, aby sa zabránilo eskalácii oprávnení
Tento skript zabezpečuje vzdialenú správu systému tým, že zakazuje nebezpečné autentifikačné metódy, zakazuje nešifrovanú komunikáciu a vypína Windows Remote Shell (WinRS), čím zabezpečuje:
✅ Prevenciu pred odpočúvaním nezašifrovanej WinRM komunikácie
✅ Ochranu proti neautorizovanému vzdialenému vykonávaniu príkazov cez WinRS
✅ Minimalizovanie rizika eskalácie oprávnení cez WinRM
# WinRM Client settings
$winrmClientPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client"
if (-not (Test-Path $winrmClientPath)) {
New-Item -Path $winrmClientPath -Force | Out-Null
}
Set-ItemProperty -Path $winrmClientPath -Name "AllowBasic" -Type DWord -Value 0
Set-ItemProperty -Path $winrmClientPath -Name "AllowUnencryptedTraffic" -Type DWord -Value 0
Set-ItemProperty -Path $winrmClientPath -Name "AllowDigest" -Type DWord -Value 0
# WinRM Service
$winrmServicePath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Service"
if (-not (Test-Path $winrmServicePath)) {
New-Item -Path $winrmServicePath -Force | Out-Null
}
Set-ItemProperty -Path $winrmServicePath -Name "AllowBasic" -Type DWord -Value 0
Set-ItemProperty -Path $winrmServicePath -Name "AllowUnencryptedTraffic" -Type DWord -Value 0
Set-ItemProperty -Path $winrmServicePath -Name "DisableRunAs" -Type DWord -Value 1
Set-ItemProperty -Path $winrmServicePath -Name "DisableAutoConfig" -Type DWord -Value 1
# Windows Remote Shell: disabled
$winrsPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\WinRS"
if (-not (Test-Path $winrsPath)) {
New-Item -Path $winrsPath -Force | Out-Null
}
Set-ItemProperty -Path $winrsPath -Name "AllowRemoteShellAccess" -Type DWord -Value 0
Ochrana aplikácií, prehliadačov, aktualizácií a vzdialenej správy
Windows obsahuje viacero bezpečnostných mechanizmov, ktoré je potrebné správne nakonfigurovať na ochranu systému pred exploitmi, škodlivými aplikáciami a neoprávneným vzdialeným prístupom. App and Browser Protection chráni systém pred nebezpečnými webovými stránkami a aplikáciami. Správna konfigurácia Windows Update zabraňuje nechceným prerušeniam práce a zabezpečuje, že systém zostáva aktuálny. Vzdialená UAC autentifikácia (Remote UAC) môže ovplyvniť bezpečnosť v prípade vzdialenej správy.
🔴 Ak je povolené obchádzanie Exploit Protection, škodlivý kód môže ľahšie vykonávať útoky na systém
🔴 Ak nie sú správne nastavené Windows aktualizácie, systém môže zostať zraniteľný voči hrozbám
🔴 Ak je UAC deaktivovaný pre vzdialených používateľov, útočníci môžu ľahšie eskalovať oprávnenia
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať obchádzanie Exploit Protection v App and Browser Protection
✅ Nastaviť plán aktualizácií tak, aby boli prijímané v bezpečnom časovom rámci
✅ Zabrániť automatickému reštartu systému s prihlásenými používateľmi
✅ Zakázať vzdialenú UAC autentifikáciu pre bezpečnejšie spracovanie systémových požiadaviek
Tento skript posilňuje bezpečnosť systému nastavením Exploit Protection, konfiguráciou aktualizácií a ochranou vzdialenej správy, čím zabezpečuje:
✅ Zlepšenú ochranu pred exploitmi a útokmi na aplikácie a prehliadače
✅ Bezpečný proces aktualizácií bez narušenia práce používateľov
✅ Minimalizovanie možnosti eskalácie oprávnení pri vzdialenom prístupe
# App and browser protection:
$appBrowserProtectionPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Security Center\App And Browser Protection"
if (-not (Test-Path $appBrowserProtectionPath)) {
New-Item -Path $appBrowserProtectionPath -Force | Out-Null
}
Set-ItemProperty -Path $appBrowserProtectionPath -Name "DisallowExploitProtectionOverride" -Type DWord -Value 1
# Legacy Policies:
# No auto-restart with logged on users: disabled
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" `
-Name "NoAutoRebootWithLoggedOnUsers" `
-Type DWord `
-Value 0
# Select when Preview Builds and Feature Updates are received: enabled - 180 days
$deferUpgradePath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\DeferUpgrade"
if (-not (Test-Path $deferUpgradePath)) {
New-Item -Path $deferUpgradePath -Force | Out-Null
}
Set-ItemProperty -Path $deferUpgradePath -Name "DeferFeatureUpdates" -Type DWord -Value 1
Set-ItemProperty -Path $deferUpgradePath -Name "DeferFeatureUpdatesPeriodInDays" -Type DWord -Value 180
# Select when Quality Updates are received: enabled - 0 days
Set-ItemProperty -Path $deferUpgradePath -Name "DeferQualityUpdates" -Type DWord -Value 1
Set-ItemProperty -Path $deferUpgradePath -Name "DeferQualityUpdatesPeriodInDays" -Type DWord -Value 0
# Disable remote UAC to be able to use the service account for Veeam services
$remoteUACPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
if (-not (Test-Path $remoteUACPath)) {
New-Item -Path $remoteUACPath -Force | Out-Null
}
Set-ItemProperty -Path $remoteUACPath -Name "LocalAccountTokenFilterPolicy" -Type DWord -Value 1
Odstránenie obnovovacej partície a rozšírenie disku C:
Windows obsahuje Windows Recovery Environment (WinRE), ktorý umožňuje obnovu systému v prípade zlyhania. Hoci je to užitočné, v niektorých prípadoch môže byť bezpečnostným rizikom, najmä ak je systém nasadený v podnikových prostrediach s oddeleným zálohovaním.
🔴 Obnovovacia partícia môže byť cieľom škodlivého softvéru alebo zneužitá na neautorizovaný prístup
🔴 Ak je voľné miesto nevyužité, môže byť efektívnejšie alokované na primárny disk C:
🔴 Niektoré bezpečnostné politiky vyžadujú odstránenie WinRE na minimalizáciu rizík
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať Windows Recovery Environment (WinRE), ak sa nepoužíva
✅ Odstrániť obnovovaciu partíciu, ak nie je potrebná
✅ Zabrániť zneužitiu obnovovacej partície na eskaláciu oprávnení
✅ Rozšíriť primárny disk C: na maximalizáciu dostupného priestoru
Tento skript zabezpečuje systém odstránením obnovovacej partície a rozšírením hlavného disku C:, čím zabezpečuje:
✅ Minimalizovanie bezpečnostných rizík spojených s WinRE
✅ Zlepšenie efektívnosti využitia disku
✅ Predchádzanie možnému zneužitiu obnovovacej partície
# Deleting recovery partition and stopping required service
reagentc /disable
Start-Sleep -Seconds 3 # Allow time for the operation
# Identify the Recovery Partition
$recoveryPartition = Get-Partition | Where-Object { $_.Type -eq 'Recovery' }
if ($recoveryPartition) {
$diskNumber = $recoveryPartition.DiskNumber
$partitionNumber = $recoveryPartition.PartitionNumber
Write-Log "Recovery Partition Found on Disk $diskNumber, Partition $partitionNumber"
Write-Log "Creating diskpart script to remove partition..."
# Create a diskpart script to remove the partition
$diskpartScript = @"
select disk $diskNumber
select partition $partitionNumber
delete partition override
"@
# Save the diskpart script to a temporary file
$scriptPath = "$env:TEMP\delete_recovery_partition.txt"
$diskpartScript | Set-Content -Path $scriptPath -Encoding ASCII
# Execute Diskpart to delete the recovery partition
Write-Log "Running diskpart to delete the Recovery Partition..."
Start-Process -FilePath "diskpart.exe" -ArgumentList "/s $scriptPath" -Wait -WindowStyle Hidden
# Cleanup
Remove-Item -Path $scriptPath -Force
Write-Log "Recovery Partition deleted successfully!", "success"
} else {
Write-Log "No Recovery Partition found. Skipping removal of recovery partition."
}
# Find C: partition to extend
Write-Log "Finding C: Partition to extend..."
$cPartition = Get-Partition | Where-Object { $_.DriveLetter -eq "C" }
if ($cPartition) {
$cDiskNumber = $cPartition.DiskNumber
$cPartitionNumber = $cPartition.PartitionNumber
Write-Log "C: Partition Found on Disk $cDiskNumber, Partition $cPartitionNumber"
Write-Log "Extending C: partition with freed space..."
# Create a diskpart script to extend C: drive
$diskpartScript = @"
select disk $cDiskNumber
select partition $cPartitionNumber
extend
"@
# Save the diskpart script to a temporary file
$scriptPath = "$env:TEMP\extend_c_partition.txt"
$diskpartScript | Set-Content -Path $scriptPath -Encoding ASCII
# Execute Diskpart to extend the C: partition
Start-Process -FilePath "diskpart.exe" -ArgumentList "/s $scriptPath" -Wait -WindowStyle Hidden
# Cleanup
Remove-Item -Path $scriptPath -Force
Write-Log "C: partition extended successfully!", "success"
} else {
Write-Log "C: Partition not found! Please check manually.", "error"
}
Zakázanie služieb obnovy systému a automatického pripojenia diskov
Windows obsahuje viacero služieb na obnovu systému a automatické pripájanie nových diskov. Ak tieto služby nie sú potrebné, môžu predstavovať bezpečnostné riziko, pretože môžu byť zneužité na eskaláciu oprávnení alebo neoprávnené modifikácie systému.
🔴 Služby Windows Error Reporting (WER) môžu posielať citlivé systémové údaje spoločnosti Microsoft, čo môže predstavovať riziko úniku informácií
🔴 Automount automaticky pripája nové disky, čo môže byť zneužité na vykonanie škodlivého kódu z prenosných zariadení
🔴 Zakázaním týchto funkcií sa eliminuje riziko neoprávneného zápisu do systémových oblastí
CIS (Center for Internet Security) Benchmark odporúča nasledujúce opatrenia:
✅ Zakázať služby Windows Error Reporting (WER), ktoré nie sú nevyhnutné
✅ Zakázať automatické pripájanie nových diskov, aby sa zabránilo neoprávnenému spusteniu kódu
✅ Zabrániť vytváraniu nových obnovovacích partícií
✅ Minimalizovať riziko zneužitia externých zariadení na modifikáciu systému
Tento skript zabezpečuje systém vypnutím nepotrebných obnovovacích služieb a zakázaním automount, čím zabezpečuje:
✅ Zvýšenie kontroly nad pripojenými zariadeniami
✅ Zamedzenie neoprávnenému zápisu do systémových oblastí
✅ Minimalizovanie bezpečnostných rizík spojených s WER a automount
# Disable related services
$services = @("wercplsupport", "werSvc")
foreach ($service in $services) {
Write-Log "Disabling service: $service"
Stop-Service -Name $service -Force -ErrorAction SilentlyContinue
Set-Service -Name $service -StartupType Disabled
}
# Run diskpart to disable automount
$scriptPath = "$env:TEMP\disable_automount.txt"
@"
automount disable
exit
"@ | Set-Content -Path $scriptPath -Encoding ASCII
Start-Process -FilePath "diskpart.exe" -ArgumentList "/s $scriptPath" -Wait -WindowStyle Hidden
Remove-Item -Path $scriptPath -Force -ErrorAction SilentlyContinue
Odborník na kybernetickú bezpečnosť, správu Azure Cloud a VMware onprem. Využíva technológie, ako Checkmk a MRTG, na monitorovanie siete a zvyšovanie efektívnosti a bezpečnosti IT infraštruktúry. Kontakt: hasin(at)mhite.sk