Windows Server 2025 birçok ayarı sıkı getiriyor: giden SMB imzalama zorunlu, NTLMv1 kaldırıldı, uygun donanımda Credential Guard açık. SMB sunucu tarafı, NTLM denetimi, RDP kapsamı, ASR, denetim ilkesi ve geri yükleme testi hâlâ sizin işiniz. Bu liste 27 maddeyi yedi bölümde neden, komut ve doğrulamayla veriyor. En kısa yol: test sunucusunda OSConfig güvenlik temel çizgisini uygulamak, kalan boşlukları bu listeyle kapatmak.
Bu listeyi nasıl kullanmalı
Liste iki rolü kapsıyor: üye sunucu (dosya, uygulama, Hyper-V) ve etki alanı denetleyicisi (DC). DC'ye özgü maddeler "Not" kutusuyla işaretli; Credential Guard, LAPS ve LDAP iki rolde farklı davranır. Workgroup sunucuda GPO yoktur; orada OSConfig'in WorkgroupMember senaryosu ve yerel PowerShell kalır.
Hiçbir maddeyi doğrudan üretime uygulamayın. SMB, NTLM, LDAP ve ASR'nin denetim (audit) modu var: önce denetim, istisnaları çöz, sonra zorla. Tek sunucuda PowerShell yeterli; onlarca sunucuda GPO veya OSConfig, ama aynı ayarı iki kaynaktan yönetmeyin.
Öncelikler: Y ilk gün, O ilk ay, D fırsat buldukça.
1. İlk saat: güncelleme, roller, yerel yönetici
- Güncellemeleri kurun (Y)
Neden: kurulum medyası aylarca eski olabilir; ilk açılıştaki açıkların hepsi bilinen açıklardır. Nasıl: SConfig'in güncelleme menüsü, Ayarlar > Windows Update veya WSUS/Azure Update Manager; ardından yeniden başlatın. Doğrulama: derleme ve UBR, Microsoft'un Windows Server 2025 sürüm geçmişindeki son kümülatif güncellemeyle eşleşmeli.
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object CurrentBuild, UBR Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 3 HotFixID, InstalledOn - Gereksiz rol, özellik ve servisleri kaldırın (Y)
Neden: kurulu her rol ek saldırı yüzeyidir. Nasıl: kullanmadığınızı kaldırın; yazdırma sunucusu değilse, özellikle DC'de, Print Spooler'ı kapatın.
Get-WindowsFeature | Where-Object Installed | Select-Object Name, DisplayName Uninstall-WindowsFeature -Name <OZELLIK-ADI> Stop-Service -Name Spooler; Set-Service -Name Spooler -StartupType DisabledDoğrulama:
Get-Service Spoolerçıktısında Status Stopped, StartType Disabled olmalı. - Yerel Administrator'ı Windows LAPS'e bağlayın (Y)
Neden: her sunucuda aynı yerel parola, tek sunucunun ele geçirilmesini tüm filoya yayar (pass-the-hash). Windows LAPS 2025'te yerleşik; yeni otomatik hesap yönetimi modu yönetilen hesabı kendisi oluşturup adını rastgele yapabilir. Nasıl: ormanda bir kez şema, OU'ya izin, ardından GPO'da Yönetim Şablonları > Sistem > LAPS > "Configure password backup directory" = Active Directory.
Update-LapsADSchema Set-LapsADComputerSelfPermission -Identity '<OU-ADI>'Yerleşik hesabı adıyla değil SID'iyle (RID 500) bulun; Türkçe kurulumda adı farklı olabilir:
Get-LocalUser | Where-Object { $_.SID -like 'S-1-5-*-500' } | Rename-LocalUser -NewName '<YENI-AD>'Doğrulama: sunucuda
Invoke-LapsPolicyProcessing, ardından aşağıdaki komut; LAPS günlüğündeki olay 10018 parolanın AD'ye yazıldığını gösterir.Get-LapsADPassword -Identity <SUNUCU-ADI> -AsPlainText
2. Kimlik ve oturum
- SMB imzalamayı sunucu tarafında da zorunlu yapın (Y)
Neden: imzasız SMB, NTLM relay ve araya girme saldırılarına açıktır. Microsoft'un belgesine göre Windows Server 2025 yalnızca giden imzalamayı zorunlu tutar; gelen taraf açık kalır. Nasıl: önce denetimi açın, SMBServer/Audit günlüğünü izleyin, sonra zorlayın. GPO karşılığı "Microsoft network server: Digitally sign communications (always)".
Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning $true -Force Set-SmbServerConfiguration -RequireSecuritySignature $true -ForceDoğrulama: iki tarafta da
RequireSecuritySignatureTrue olmalı.Get-SmbServerConfiguration | Select-Object RequireSecuritySignature, AuditClientDoesNotSupportSigning Get-SmbClientConfiguration | Select-Object RequireSecuritySignature - Hassas paylaşımlarda SMB şifrelemeyi açın (O)
Neden: imzalama bütünlük sağlar, gizlilik sağlamaz. Nasıl: sunucu genelinde değil, paylaşım bazında başlayın. Windows Server 2025 istemci tarafında
RequireEncryptionseçeneği de getirdi; ama hedef SMB 3.x şifrelemeyi desteklemiyorsa bağlantı hiç kurulmaz.Set-SmbShare -Name <PAYLASIM-ADI> -EncryptData $true -ForceDoğrulama:
Get-SmbShareçıktısındaEncryptDataTrue; SMB 3.x desteklemeyen istemci SmbServer/Operational günlüğüne olay 1003 düşürür. - NTLM'i denetleyin, sonra kısıtlayın (Y denetim, O kısıtlama)
Neden: NTLMv1 Windows Server 2025'ten kaldırıldı, ama NTLMv2 çalışır ve relay ile pass-the-hash'in ana yoludur; Microsoft Ocak 2026'da NTLM'i ileride varsayılan kapatma planını açıkladı. Nasıl: Güvenlik Seçenekleri'nde "Network security: LAN Manager authentication level" = "Send NTLMv2 response only. Refuse LM & NTLM"; "Restrict NTLM: Audit Incoming NTLM Traffic" = "Enable auditing for all accounts"; "Restrict NTLM: Outgoing NTLM traffic to remote servers" = "Audit all". Kullanım haritası çıkınca SMB istemcisinde NTLM'i engelleyin; istisnalar "Block NTLM Server Exception List" ile.
Set-SmbClientConfiguration -BlockNTLM $true -ForceDoğrulama:
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name LmCompatibilityLevel Get-WinEvent -LogName 'Microsoft-Windows-NTLM/Operational' -MaxEvents 20 - LDAP imzalama ve kanal bağlamayı zorlayın (DC, Y)
Neden: imzasız LDAP ve kanal bağlamasız LDAPS NTLM relay'e açıktır. Microsoft'a göre yeni Windows Server 2025 ormanlarında imzalama zorunlu, kanal bağlama (CBT) "When supported" ve denetimi açık gelir; yükseltilen DC'lerde eski ilke korunur. Nasıl: Default Domain Controllers Policy'de "Domain controller: LDAP server signing requirements" = Require signing; "LDAP server channel binding token requirements" önce When supported, olaylar temizlenince Always. İstemcileri bulmak için teşhis düzeyini 2 yapın:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '16 LDAP Interface Events' -Value 2Doğrulama: 2887/2889 imzasız bind'leri, 3074/3075 CBT göndermeyen istemcileri gösterir.
Get-WinEvent -FilterHashtable @{ LogName = 'Directory Service'; Id = 2887, 2889, 3039, 3074, 3075 } -MaxEvents 50 - Credential Guard'ın çalıştığını doğrulayın (Y)
Neden: NTLM hash'lerini ve Kerberos TGT'lerini sanallaştırma tabanlı güvenlikle (VBS) yalıtır. Microsoft'a göre Windows Server 2025'te etki alanına katılmış, DC olmayan, donanım ve lisans şartını karşılayan ve daha önce açıkça kapatılmamış sunucularda UEFI kilidi olmadan varsayılan açıktır. Hyper-V'de yalnızca 2. nesil VM'de, IOMMU'lu ana bilgisayarda çalışır. Nasıl: GPO'da Sistem > Device Guard > "Turn On Virtualization Based Security" > Credential Guard = "Enabled without lock". Doğrulama: çıktıda 1 varsa çalışıyor.
(Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard).SecurityServicesRunning - LSA korumasını açın (Y)
Neden: LSASS'ı korumalı süreç (PPL) yapar, bellek okumayı engeller. Microsoft'un otomatik etkinleştirme ölçütleri Windows 11 için yazılmış; sunucuda kendiniz kontrol edin. Nasıl: önce CodeIntegrity/Operational günlüğünde 3065/3066 denetim olaylarına bakın, sonra GPO'da Sistem > Local Security Authority > "Configures LSASS to run as a protected process" ya da kayıt defteri (2 = UEFI kilidi yok):
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name RunAsPPL -PropertyType DWord -Value 2 -ForceDoğrulama: yeniden başlatmadan sonra Wininit olay 12, "LSASS.exe was started as a protected process" der.
Get-WinEvent -FilterHashtable @{ LogName = 'System'; ProviderName = 'Microsoft-Windows-Wininit'; Id = 12 } -MaxEvents 1
3. Ağ ve uzaktan erişim
- RDP'de NLA'yı zorunlu yapın (Y)
Neden: NLA, oturum ekranı açılmadan kimlik doğrulama ister; kimliği doğrulanmamış RDP yüzeyini küçültür. Nasıl: GPO'da Windows Bileşenleri > Uzak Masaüstü Hizmetleri > Uzak Masaüstü Oturumu Ana Bilgisayarı > Güvenlik > "Require user authentication for remote connections by using Network Level Authentication".
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1Doğrulama:
UserAuthenticationRequired1 olmalı.Get-CimInstance -Namespace root\cimv2\TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'" | Select-Object UserAuthenticationRequired - RDP'yi yönetim ağına ve küçük bir gruba kısıtlayın (Y)
Neden: geniş ağa açık RDP, kaba kuvvet ve fidye yazılımı girişinin klasik yoludur. Nasıl: kuralın kaynağını yönetim ağıyla sınırlayın; kural adları dil bağımsızdır:
Set-NetFirewallRule -Name 'RemoteDesktop-UserMode-In-TCP', 'RemoteDesktop-UserMode-In-UDP' -RemoteAddress <YONETIM-AGI-CIDR>Doğrulama: adres filtresi ve Remote Desktop Users grubu (SID S-1-5-32-555) üyeleri.
Get-NetFirewallRule -Name 'RemoteDesktop-UserMode-In-*' | Get-NetFirewallAddressFilter | Select-Object RemoteAddress Get-LocalGroupMember -SID 'S-1-5-32-555' - Güvenlik duvarını üç profilde açık tutun (Y)
Neden: ağ konumu algılaması şaştığında kapalı tek profil sunucuyu açık bırakır. Nasıl: gelen trafik varsayılan engel, engellenenler günlüğe. Windows Server 2025'te yeni SMB paylaşımı artık 137-139'u açmayan "File and Printer Sharing (Restrictive)" grubunu kullanıyor.
Set-NetFirewallProfile -Profile Domain, Private, Public -Enabled True -DefaultInboundAction Block -LogBlocked TrueDoğrulama:
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, LogBlocked. - SMBv1'in kurulu olmadığını doğrulayın (Y)
Neden: SMBv1, EternalBlue (MS17-010) sınıfı açıkların kapısıdır. 2025'te varsayılan kurulu gelmez; şablondan veya yükseltmeden kalmış olabilir.
Uninstall-WindowsFeature -Name FS-SMB1Doğrulama:
Get-WindowsFeature FS-SMB1Available,Get-SmbServerConfigurationçıktısındaEnableSMB1ProtocolFalse. - LLMNR ve NetBIOS'u kapatın (O)
Neden: Responder benzeri araçlar LLMNR ve NBT-NS yayınlarını zehirleyip NTLM hash toplar. Nasıl: GPO'da Ağ > DNS İstemcisi > "Turn off multicast name resolution" = Enabled. NetBIOS için GPO yoktur; bağdaştırıcı başına veya DHCP seçeneğiyle kapatılır:
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = TRUE' | Invoke-CimMethod -MethodName SetTcpipNetbios -Arguments @{ TcpipNetbiosOptions = [uint32]2 }Doğrulama:
EnableMulticast0, her bağdaştırıcıdaTcpipNetbiosOptions2.Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient' -Name EnableMulticast Get-CimInstance Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = TRUE' | Select-Object Description, TcpipNetbiosOptions - Workgroup ve DMZ sunucularında WinRM'i HTTPS'e taşıyın (O)
Neden: etki alanında Kerberos ile WinRM trafiği zaten şifrelidir; HTTPS, NTLM kullanan workgroup sunucularında ve sunucu kimliğini sertifikayla doğrulamak için gerekir. Nasıl: FQDN'li Server Authentication sertifikasıyla dinleyici açın, 5986'yı yalnız yönetim ağına izin verin.
New-Item -Path WSMan:\localhost\Listener -Transport HTTPS -Address * -CertificateThumbPrint <SERTIFIKA-PARMAK-IZI> -Force New-NetFirewallRule -DisplayName 'WinRM HTTPS' -Direction Inbound -Protocol TCP -LocalPort 5986 -RemoteAddress <YONETIM-AGI-CIDR> -Action AllowDoğrulama:
Get-WSManInstance -ResourceURI winrm/config/listener -Enumerate | Select-Object Transport, Port, CertificateThumbprint
4. Microsoft Defender
- Defender Antivirus'ün aktif modda ve güncel olduğunu doğrulayın (Y)
Neden: üçüncü taraf antivirüs varken Defender pasif moda geçer ve ASR kuralları uygulanmaz. Nasıl: bulut korumasını ve örnek gönderimini açın.
Set-MpPreference -MAPSReporting Advanced -SubmitSamplesConsent SendSafeSamples Update-MpSignatureDoğrulama:
AMRunningModeNormal,RealTimeProtectionEnabledTrue, imza yaşı 1 günden az.Get-MpComputerStatus | Select-Object AMRunningMode, RealTimeProtectionEnabled, AntivirusSignatureAge - Sunucuya uygun ASR alt kümesini Audit modunda açın (O)
Neden: saldırı yüzeyi azaltma (ASR) kuralları zararlıların sık kullandığı davranışları keser. Office odaklı kurallar sunucuda anlamsızdır; aşağıdaki alt küme Microsoft'un tablosuna göre Windows Server 2019 ve sonrasında desteklenir.
Kural GUID Başlangıç Savunmasız imzalı sürücülerin kötüye kullanımı 56a863a9-875e-4185-98a7-b882c64b5ce5Block LSASS'tan kimlik bilgisi çalma 9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2LSA koruması yoksa Block WMI olay aboneliğiyle kalıcılık e6db77e5-3df2-4cf1-b95a-636979351e5bAudit PsExec ve WMI kaynaklı süreç oluşturma d1e49aac-8f56-4280-b9ba-993a6d77406cAudit (ConfigMgr varsa kapalı) Gizlenmiş (obfuscated) betikler 5beb7efe-fd9a-4556-801d-275e5ffc04ccAudit JavaScript/VBScript ile indirilen yürütülebilir d3e037e1-3eb8-44c8-a917-57927947596dAudit USB'den imzasız süreç b2b3f03d-6a65-4f7b-a9c7-1c7ef74a9ba4Block Fidye yazılımına karşı gelişmiş koruma c1db55ab-c21a-4637-bb3f-a12568109d35Audit Add-MpPreference -AttackSurfaceReductionRules_Ids <KURAL-GUID> -AttackSurfaceReductionRules_Actions AuditModeDoğrulama: kural listesi ve olaylar (1121 engellendi, 1122 denetlendi).
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions Get-WinEvent -FilterHashtable @{ LogName = 'Microsoft-Windows-Windows Defender/Operational'; Id = 1121, 1122 } -MaxEvents 50 - Tamper Protection'ı açın (O)
Neden: yönetici yetkisi ele geçiren saldırganın ilk işi Defender'ı kapatmaktır. Nasıl: GPO veya PowerShell ile açılmaz; Defender for Endpoint'e alınmış sunucuda Defender portalı veya Intune, tek sunucuda Windows Güvenliği uygulaması. Doğrulama:
IsTamperProtectedTrue.Get-MpComputerStatus | Select-Object IsTamperProtected, RealTimeProtectionEnabled
5. Denetim ve günlük
- Gelişmiş denetim ilkesini alt kategori düzeyinde ayarlayın (Y)
Neden: varsayılan denetim "kim, nereden, hangi komutla" sorusunu yanıtlamaz. Nasıl: GPO'da Güvenlik Ayarları > Gelişmiş Denetim İlkesi Yapılandırması altında en az Credential Validation, Logon, Special Logon, Security Group Management, User Account Management, Process Creation ve Sensitive Privilege Use için Başarı ve Hata; DC'de ek olarak Directory Service Changes ve Kerberos Authentication Service. "Audit: Force audit policy subcategory settings" Enabled, Sistem > Audit Process Creation > "Include command line in process creation events" Enabled (olay 4688'e komut satırı ekler).
Doğrulama:
auditpol /get /category:*. Türkçe arayüzde alt kategori adları yerelleştirilir; GUID'ler içinauditpol /list /subcategory:* /v. - PowerShell Script Block Logging'i açın (Y)
Neden: saldırganların gizlenmiş PowerShell'i, çözülmüş hâliyle olay 4104 olarak kaydedilir. Nasıl: GPO'da Windows Bileşenleri > Windows PowerShell > "Turn on PowerShell Script Block Logging". PowerShell 7 kendi ilke şablonunu ve PowerShellCore/Operational günlüğünü kullanır.
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Force Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' -Name EnableScriptBlockLogging -Value 1Doğrulama:
Get-WinEvent -FilterHashtable @{ LogName = 'Microsoft-Windows-PowerShell/Operational'; Id = 4104 } -MaxEvents 5kayıt döndürmeli. - Olay günlüğü boyutlarını büyütün (O)
Neden: varsayılan boyutta Security günlüğü yoğun bir DC'de saatler içinde döner. OSConfig temel çizgisi Security için en az 192 MB öngörüyor; SIEM'e iletim yoksa ben 1 GB veriyorum. Nasıl: GPO'da Windows Bileşenleri > Olay Günlüğü Hizmeti > Güvenlik > "Specify the maximum log file size (KB)" ya da:
wevtutil sl Security /ms:1073741824Doğrulama:
Get-WinEvent -ListLog Security, System | Select-Object LogName, MaximumSizeInBytes, LogMode.
6. Güncel yönetim: OSConfig ve Hotpatch
- OSConfig güvenlik temel çizgisini uygulayın (O)
Neden: tek komutla rol bazlı yüzlerce ayarı uygular ve sapma denetimiyle (drift control) korur; Microsoft'a göre güncel sürüm üye sunucuda 344, DC'de 347 ayar içeriyor. Nasıl: modülü kurun, rolünüze uygun senaryoyu uygulayın, yeniden başlatın. DC için
SecurityBaseline/WindowsServer/2025/DomainController, workgroup için.../WorkgroupMember; ayrıcaDefender/Antivirus/WindowsServer/2025veLAPS/WindowsServer/2025/MemberServersenaryoları var.Install-Module -Name Microsoft.OSConfig -Scope AllUsers -Force Set-OSConfigDesiredConfiguration -Scenario SecurityBaseline/WindowsServer/2025/MemberServer -DefaultDoğrulama: uyumluluk tablosu.
Get-OSConfigDesiredConfiguration -Scenario SecurityBaseline/WindowsServer/2025/MemberServer | Format-Table Name, @{ Name = 'Status'; Expression = { $_.Compliance.Status } }, @{ Name = 'Reason'; Expression = { $_.Compliance.Reason } } -AutoSize -WrapGPO tercih ediyorsanız alternatif Security Compliance Toolkit'teki Windows Server 2025 güvenlik temel çizgisi; denetçi CIS isterse referans "CIS Microsoft Windows Server 2025 Benchmark".
- Hotpatch'i değerlendirin (D)
Neden: güvenlik güncellemelerini yeniden başlatmadan uygular. Microsoft Learn'e göre Azure Arc'a bağlı Windows Server 2025 Standard ve Datacenter'da Arc portalından açılır ve artık ek ücret alınmıyor. Üç ayda bir gelen temel (baseline) güncelleme yine yeniden başlatma ister; .NET ve sürücüler kapsam dışı. Doğrulama: Azure Update Manager'daki Hotpatch durumu ve
Get-HotFix.
7. Yedekleme ve kurtarma
- Yedeği ve DC'de sistem durumunu alın (Y)
Neden: sertleştirme fidye yazılımını yavaşlatır, yedek geri getirir; bir kopya değiştirilemez veya çevrim dışı olmalı (3-2-1-1-0). Nasıl: ayrı bir yedek ürünü yoksa Windows Server Yedekleme; DC'de sistem durumu.
Install-WindowsFeature -Name Windows-Server-Backupwbadmin start systemstatebackup -backupTarget:<HEDEF-SURUCU>Doğrulama:
Get-WBSummary | Select-Object LastSuccessfulBackupTime, LastBackupResultHRvewbadmin get versions. - BitLocker kurtarma anahtarını AD'ye yedekleyin (O)
Neden: anahtarı olmayan şifreli disk, kurtarma senaryosunda veri kaybıdır. Nasıl: BitLocker özelliği kuruluysa koruyucu kimliğini alıp AD'ye yazın.
(Get-BitLockerVolume -MountPoint C:).KeyProtector Backup-BitLockerKeyProtector -MountPoint C: -KeyProtectorId '<KORUYUCU-ID>'Doğrulama: AD'de bilgisayar nesnesinin altında
msFVE-RecoveryInformationnesnesi görünmeli. - AD Geri Dönüşüm Kutusu'nu açın (DC, O)
Neden: silinen kullanıcı veya OU, yetkili geri yükleme olmadan öznitelikleriyle geri gelir. Nasıl ve doğrulama:
EnabledScopesboşsa kapalıdır.Get-ADOptionalFeature -Filter "Name -eq 'Recycle Bin Feature'" | Select-Object Name, EnabledScopes Enable-ADOptionalFeature -Identity 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target '<ORMAN-ADI>' - Geri yükleme testini takvime koyun, WinRE'yi kontrol edin (Y)
Neden: hiç geri yüklenmemiş yedek bir varsayımdır. Nasıl: ayda bir, izole ağda bir sunucuyu ve DC sistem durumunu geri yükleyin. WinRE'nin
reagentc /infoile Enabled olduğunu doğrulayın; kurtarma bölümü sorunları için recovery partition yazısına bakın.
Doğrulama: toplu kontrol betiği
Betik yalnızca Get- komutlarıyla okur, hiçbir ayarı değiştirmez. Yönetici PowerShell'de çalıştırın; KONTROL ET satırları iş listenizdir, BILGI satırları bağlama göre yorumlanır. Dosyaya almak için son satırı Export-Csv ile değiştirin.
# Windows Server 2025 sertleştirme - salt okunur kontrol
$sonuc = [System.Collections.Generic.List[object]]::new()
function Ekle($Alan, $Kontrol, $Deger, $Uygun) {
$durum = if ($null -eq $Uygun) { 'BILGI' } elseif ($Uygun) { 'OK' } else { 'KONTROL ET' }
$sonuc.Add([pscustomobject]@{ Alan = $Alan; Kontrol = $Kontrol; Deger = "$Deger"; Durum = $durum })
}
function Oku($Yol, $Ad) {
try { (Get-ItemProperty -Path $Yol -Name $Ad -ErrorAction Stop).$Ad } catch { $null }
}
$dc = (Get-CimInstance Win32_ComputerSystem).DomainRole -ge 4
$cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$sonHotfix = Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1
Ekle 'Güncelleme' 'Derleme.UBR' "$($cv.CurrentBuild).$($cv.UBR)" $null
Ekle 'Güncelleme' 'Son düzeltme' "$($sonHotfix.HotFixID) $($sonHotfix.InstalledOn)" $null
Ekle 'Rol' 'Etki alanı denetleyicisi' $dc $null
$spooler = Get-Service -Name Spooler
Ekle 'Servis' 'Print Spooler' "$($spooler.Status)/$($spooler.StartType)" ($spooler.StartType -eq 'Disabled')
$smbS = Get-SmbServerConfiguration
$smbC = Get-SmbClientConfiguration
Ekle 'SMB' 'Sunucu imzalama zorunlu' $smbS.RequireSecuritySignature ($smbS.RequireSecuritySignature -eq $true)
Ekle 'SMB' 'İstemci imzalama zorunlu' $smbC.RequireSecuritySignature ($smbC.RequireSecuritySignature -eq $true)
Ekle 'SMB' 'SMBv1 sunucu' $smbS.EnableSMB1Protocol ($smbS.EnableSMB1Protocol -eq $false)
Ekle 'SMB' 'Sunucu geneli şifreleme' $smbS.EncryptData $null
Ekle 'SMB' 'İstemci NTLM engelleme' $smbC.BlockNTLM $null
$lm = Oku 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' 'LmCompatibilityLevel'
Ekle 'Kimlik' 'LmCompatibilityLevel' $lm ($lm -eq 5)
$ppl = Oku 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' 'RunAsPPL'
Ekle 'Kimlik' 'LSA koruması (RunAsPPL)' $ppl ($ppl -in 1, 2)
$dg = Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard -ErrorAction SilentlyContinue
$cg = $dg.SecurityServicesRunning -contains 1
Ekle 'Kimlik' 'Credential Guard çalışıyor' $cg $(if ($dc) { $null } else { $cg })
if ($dc) {
$ntds = 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters'
Ekle 'DC' 'LDAPServerIntegrity' (Oku $ntds 'LDAPServerIntegrity') $null
Ekle 'DC' 'LdapEnforceChannelBinding' (Oku $ntds 'LdapEnforceChannelBinding') $null
}
$ts = Get-CimInstance -Namespace root\cimv2\TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'" -ErrorAction SilentlyContinue
Ekle 'Ağ' 'RDP NLA' $ts.UserAuthenticationRequired ($ts.UserAuthenticationRequired -eq 1)
$rdpAdres = (Get-NetFirewallRule -Name 'RemoteDesktop-UserMode-In-TCP' -ErrorAction SilentlyContinue | Get-NetFirewallAddressFilter).RemoteAddress -join ','
Ekle 'Ağ' 'RDP kaynak adresi' $rdpAdres ($rdpAdres -and $rdpAdres -ne 'Any')
foreach ($p in Get-NetFirewallProfile) {
Ekle 'Ağ' "Güvenlik duvarı $($p.Name)" "$($p.Enabled)/$($p.DefaultInboundAction)" ($p.Enabled -eq 'True' -and $p.DefaultInboundAction -ne 'Allow')
}
$llmnr = Oku 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient' 'EnableMulticast'
Ekle 'Ağ' 'LLMNR kapalı' $llmnr ($llmnr -eq 0)
$nb = (Get-CimInstance Win32_NetworkAdapterConfiguration -Filter 'IPEnabled = TRUE').TcpipNetbiosOptions
Ekle 'Ağ' 'NetBIOS seçenekleri' ($nb -join ',') (@($nb | Where-Object { $_ -ne 2 }).Count -eq 0)
$winrm = Get-WSManInstance -ResourceURI winrm/config/listener -Enumerate -ErrorAction SilentlyContinue
Ekle 'Ağ' 'WinRM dinleyicileri' ($winrm.Transport -join ',') $null
$mp = Get-MpComputerStatus -ErrorAction SilentlyContinue
Ekle 'Defender' 'Çalışma modu' $mp.AMRunningMode ($mp.AMRunningMode -eq 'Normal')
Ekle 'Defender' 'Gerçek zamanlı koruma' $mp.RealTimeProtectionEnabled ($mp.RealTimeProtectionEnabled -eq $true)
Ekle 'Defender' 'Tamper Protection' $mp.IsTamperProtected ($mp.IsTamperProtected -eq $true)
Ekle 'Defender' 'İmza yaşı (gün)' $mp.AntivirusSignatureAge ($mp.AntivirusSignatureAge -le 1)
$asr = (Get-MpPreference -ErrorAction SilentlyContinue).AttackSurfaceReductionRules_Actions
Ekle 'Defender' 'ASR Block/Audit kural sayısı' "$(@($asr | Where-Object { $_ -eq 1 }).Count)/$(@($asr | Where-Object { $_ -eq 2 }).Count)" (@($asr).Count -gt 0)
$sbl = Oku 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging' 'EnableScriptBlockLogging'
Ekle 'Günlük' 'Script Block Logging' $sbl ($sbl -eq 1)
$secLog = Get-WinEvent -ListLog Security
Ekle 'Günlük' 'Security günlüğü (MB)' ([math]::Round($secLog.MaximumSizeInBytes / 1MB)) ($secLog.MaximumSizeInBytes -ge 192MB)
$osc = Get-Module -ListAvailable -Name Microsoft.OSConfig | Select-Object -First 1
Ekle 'Yönetim' 'OSConfig modülü' $osc.Version $null
if (Get-Command Get-WBSummary -ErrorAction SilentlyContinue) {
$wb = Get-WBSummary
Ekle 'Kurtarma' 'Son başarılı WSB yedeği' $wb.LastSuccessfulBackupTime ($wb.LastSuccessfulBackupTime -gt (Get-Date).AddDays(-2))
}
if (Get-Command Get-BitLockerVolume -ErrorAction SilentlyContinue) {
$bl = Get-BitLockerVolume -MountPoint $env:SystemDrive
Ekle 'Kurtarma' 'BitLocker sistem sürücüsü' $bl.ProtectionStatus $null
}
$sonuc | Sort-Object Durum, Alan | Format-Table -AutoSize -WrapÖzet tablo
Değişiklik kaydına veya denetim dosyasına kopyalamak için tek sayfalık özet. Komut sütunu doğrulama komutudur.
| # | Madde | Öncelik | Doğrulama komutu |
|---|---|---|---|
| 1 | Güncellemeler | Y | Get-HotFix |
| 2 | Gereksiz rol ve Spooler | Y | Get-Service Spooler |
| 3 | Windows LAPS, RID 500 | Y | Get-LapsADPassword |
| 4 | SMB sunucu imzalama | Y | Get-SmbServerConfiguration |
| 5 | SMB şifreleme | O | Get-SmbShare |
| 6 | NTLM denetim ve kısıtlama | Y / O | Get-WinEvent -LogName Microsoft-Windows-NTLM/Operational |
| 7 | LDAP imzalama ve CBT (DC) | Y | Get-WinEvent -LogName 'Directory Service' |
| 8 | Credential Guard | Y | Get-CimInstance Win32_DeviceGuard |
| 9 | LSA koruması | Y | Wininit olay 12 |
| 10 | RDP NLA | Y | Get-CimInstance Win32_TSGeneralSetting |
| 11 | RDP kapsamı | Y | Get-NetFirewallAddressFilter |
| 12 | Güvenlik duvarı profilleri | Y | Get-NetFirewallProfile |
| 13 | SMBv1 yok | Y | Get-WindowsFeature FS-SMB1 |
| 14 | LLMNR ve NetBIOS | O | Get-CimInstance Win32_NetworkAdapterConfiguration |
| 15 | WinRM HTTPS | O | Get-WSManInstance |
| 16 | Defender aktif ve güncel | Y | Get-MpComputerStatus |
| 17 | ASR alt kümesi | O | Get-MpPreference |
| 18 | Tamper Protection | O | Get-MpComputerStatus |
| 19 | Gelişmiş denetim ilkesi | Y | auditpol /get /category:* |
| 20 | Script Block Logging | Y | olay 4104 |
| 21 | Günlük boyutları | O | Get-WinEvent -ListLog Security |
| 22 | OSConfig temel çizgisi | O | Get-OSConfigDesiredConfiguration |
| 23 | Hotpatch | D | Azure Update Manager |
| 24 | Yedek ve sistem durumu | Y | Get-WBSummary |
| 25 | BitLocker anahtarı | O | Get-BitLockerVolume |
| 26 | AD Geri Dönüşüm Kutusu (DC) | O | Get-ADOptionalFeature |
| 27 | Geri yükleme testi, WinRE | Y | reagentc /info |
Sık yapılan hatalar
- SMB imzalamayı zorlayıp eski NAS'ı unutmak. Yedekleme hedefi veya tarayıcı paylaşımı
STATUS_INVALID_SIGNATUREile düşer. Önce SMBServer/Audit günlüğünü izleyin, cihazları güncelleyin, sonra zorlayın. - NTLM'i denetimsiz kapatmak. IP adresiyle bağlanan betikler, SPN'i eksik servis hesapları ve etki alanı dışı cihazlar NTLM'e düşer. NTLM/Operational günlüğü boşalmadan engellemeyin; kalanları istisna listesine yazıp sahiplerine tarih verin.
- ASR'yi doğrudan Block'a almak. PsExec/WMI kuralı Configuration Manager'ı ve uzaktan yönetim betiklerini durdurabilir. 1122 olaylarını inceleyip dışlamaları kural bazında ekleyin.
- Aynı ayarı GPO ve OSConfig'le yönetmek. Sapma denetimi GPO'nun yazdığını geri alır, GPO yenilemesi tekrar yazar. Bir kaynak seçin.
Kaynaklar
- Microsoft Learn, What's new in Windows Server 2025 (erişim: Ekim 2026)
- Microsoft Learn, Configure security baselines for Windows Server 2025 (OSConfig) (erişim: Ekim 2026)
- Microsoft Learn, Control SMB signing behavior (erişim: Ekim 2026)
- Microsoft Learn, SMB security enhancements (erişim: Ekim 2026)
- Microsoft Learn, Block NTLM connections on SMB (erişim: Ekim 2026)
- Microsoft Learn, Features removed or no longer developed in Windows Server (erişim: Ekim 2026)
- Microsoft Tech Community, Advancing Windows security: Disabling NTLM by default (erişim: Ekim 2026)
- Microsoft Learn, LDAP signing overview ve LDAP channel binding (erişim: Ekim 2026)
- Microsoft Learn, Credential Guard overview (erişim: Ekim 2026)
- Microsoft Learn, Configure added LSA protection (erişim: Ekim 2026)
- Microsoft Learn, Get started with Windows LAPS and Windows Server Active Directory (erişim: Ekim 2026)
- Microsoft Learn, ASR rules reference (erişim: Ekim 2026)
- Microsoft Learn, Configure tamper protection on Windows (erişim: Ekim 2026)
- Microsoft Learn, Hotpatch for Windows Server (erişim: Ekim 2026)
- Microsoft, Security Compliance Toolkit (Windows Server 2025 güvenlik temel çizgisi; erişim: Ekim 2026)
- CIS, CIS Microsoft Windows Server Benchmarks (yalnızca referans; erişim: Ekim 2026)
Sık sorulan sorular
Windows Server 2025'te SMB imzalama varsayılan olarak açık mı?
Yarı yarıya. Microsoft'un belgesine göre Windows Server 2025 giden (istemci) SMB imzalamayı zorunlu tutar, gelen (sunucu) tarafını zorunlu tutmaz. Dosya sunucusu olarak çalışan bir 2025 sunucusunda sunucu tarafı imzalamayı siz açmalısınız; Windows 11 24H2 Enterprise ve Pro ise iki yönü de zorunlu tutar.
OSConfig temel çizgisi ile Microsoft Security Baseline GPO'su aynı şey mi?
Amaç aynı, dağıtım yolu farklı. Security Compliance Toolkit'teki temel çizgi GPO olarak içe aktarılır; OSConfig ise ayarları sunucuda yerel olarak uygular ve sapma denetimiyle (drift control) geri döndürür. Aynı ayarı ikisinden birden yönetirseniz ayarlar sürekli el değiştirir; birini seçin.
Credential Guard'ı etki alanı denetleyicisinde açmalı mıyım?
Hayır. Microsoft'a göre Credential Guard etki alanı denetleyicisine ek güvenlik sağlamaz ve uyumluluk sorunu çıkarabilir; Windows Server 2025 de onu yalnızca etki alanına katılmış, DC olmayan sunucularda varsayılan olarak açar. DC'de LSA koruması ve sıkı yönetim katmanı (tier 0) ayrımı daha anlamlıdır.
Windows LAPS için ayrı bir yazılım kurmam gerekir mi?
Hayır. Windows LAPS, Windows Server 2025'e yerleşik gelir; eski Microsoft LAPS MSI paketine gerek yoktur. Ormanda bir kez `Update-LapsADSchema` çalıştırır, OU'ya izin verir ve GPO ile yedekleme dizinini Active Directory olarak ayarlarsınız.
ASR kurallarını doğrudan Block modunda açabilir miyim?
Sunucuda önermem. Kuralları önce Audit modunda açıp Defender olay günlüğündeki 1122 kayıtlarını birkaç hafta izleyin; yanlış pozitifleri dışlama ile çözdükten sonra Block'a geçin. Özellikle PsExec/WMI kuralı Configuration Manager istemcisiyle çakışır.
Sistem Yöneticisi. Sanallaştırma ve depolama altyapıları kuruyor, yönetiyor ve burada belgeliyor. Yazıdaki bir bilgi eskidiyse düzeltme önerin.