Windows Client DNS Sıralaması: Gerçekten Sıralı mı Çalışır?
DNS (Domain Name System) çözümlemesi, modern bilgisayar ağlarının en kriti...
 
        
Amaç: Domain Admin kimliklerini “internet-yüzlü” veya üretim sunucularından fiziksel olarak ayırmak. Böylece bir üretim sunucusu pwn’lense bile etki alanı tamamen gidemez.
Hızlı Ölçüt: Tier-0 admin’in girebildiği tek makineler = bastion forest içindeki DC’ler + PAW’lar. Prod sunucuya asla interaktif logon yok, sadece Privileged Session Manager tüneli.
# VBS + Credential Guard GPO
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" `
 -Name EnableVirtualizationBasedSecurity -Value 1 -Type Dword
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\LSA" `
 -Name LsaCfgFlags -Value 1 -Type Dword
# 1=CG on, 2=off, 0=not set
Kontrol: msinfo32 → “Device Guard - Credential Guard running: Yes”.
Gotcha’lar
Klasik smart-card CSP’leri, bazı VPN sürücüleri ve eski AV çekirdek modülleri uyumsuz kalabilir.
Nested Hyper-V içinde VBS desteklenmez; fiziksel host’ta aç.
Pass-the-Hash denemeleri LSASS dışında kaldığı için başarısız olur.
TPM’i hazırlayın: tpm.msc → “Prepare the TPM”. BIOS’ta PTT/fTPM değil, donanım çipi olması tercih.
BitLocker-TPM Mode:
Enable-BitLocker -MountPoint "C:" -TpmProtector -UsedSpaceOnly `
 -SkipHardwareTest
Recovery Key Yönetimi
Azure AD hybrid iseniz otomatik olarak Azure’daki cihaz objesine yüklenir.
On-prem ise GPO → Save BitLocker recovery information to AD DS.
Network Unlock (isteğe bağlı): 2012+ DHCP/WDS sunucusu, RFC 7030 sertifika.
Pre-Boot PIN? Yalnızca yüksek tehdit modelleri için; aksi hâlde TPM + Secure Boot zaten yeterlidir.
Golden rule: TPM 2.0 + Secure Boot + Measured Boot + BitLocker = disk çalıp offline kurcalama ≈ boşuna.
Azure Arc Onboarding
# 1. Indir + kur
Invoke-WebRequest -Uri https://aka.ms/AzureArcAgent -OutFile ArcSetup.msi
msiexec /i ArcSetup.msi /l*v log.txt
# 2. Azure CLI login
az connectedmachine connect --resource-group RG-OnPrem \
 --name ANT-FSRV01 --location westeurope
Sonrasında makine “Connected Machine” türünde görünür; Tag = Environment=OnPrem.
Arc Policy Guest Config sayesinde CIS - Server 2019 denetimlerini istediğin OU’ya zorlayabilirsin.
Pro İpucu: Arc-enabled sunucuyu “Auto-Provisioning = On” yap; Defender ajanı elle kurma. Alert’leri Sentinel’le birleştir, MITRE ATT&CK takibi hazır gelir.
Etkinleştirme Hız Turu
BIOS → Secure Boot: Enabled, Trusted Execution: On.
Windows Features → “Device Health Attestation” ve “Hyper-V-Hypervisor”.
Shielded VM senaryosu: HGS kur; önyükleme ölçümlerini karşılaştırıp yalnız temiz host’ta VM açtır.
Birlikte Çalışınca Ne Oluyor?
Jump-Box Forest Tier-0 admin kimliklerini ayırır.
PAW + Credential Guard bu kimliklerin RAM’de bile sızdırılmasını engeller.
TPM + BitLocker disk çalınsa bile offline saldırıları reddeder.
Secure Boot / DRTM işletim sistemi zincirinin ilk bit’ine kadar bütünlüğü ölçer.
Azure Arc + Defender katmanı, bulut-temelli sürekli konfig uyumu + XDR izleme sunar.
Sonuç: Saldırgan, tek bir sunucudan içeri girse bile domain komple gitmez; kalıcılık kuramaz; sızma erken görünür.
Daha da Derine İnmek İstersek
Windows Hello for Business (Key Trust) ile admin smart-card bağımlılığını kaldır.
Hyper-V “vTPM” + Shielding Data = production VM’leri de hardware-root’lu yap.
Attested Boot sonuçlarını Azure Policy’de “deny” olarak ayarla → temiz boot etmeyen makine CI/CD pipeline’a bile giremesin.
Intune + Config Mgr Co-Mgmt; PAW’lar için tam disk şifreleme, application allow-listing (WDAC) politikalarını hibrit dağıt.
PKI Rollup: Bastion forest içinde offline-root + online-issuing CA kur; tüm cihaz sertifikalarını buradan ver, güven kökü yine Tier-0’da kalsın.
Aşağıdaki tabloyu kendi ortamınızın gerçek tehdit modeline (ör. regülasyon, bütçe, SLA) göre tartın. “Bedel” satırında 1 = ucuz / düşük efor, 5 = pahalı / yüksek efor; “Risk Azaltma”da 1 = kozmetik, 5 = oyun-değiştirici.
Hızlı karar kuralı: CapEx < 2 & Risk ≥ 4 ise “hemen yap”; CapEx ≥ 4 & Risk ≤ 3 ise POC → C-seviyesinde onay.
📁 0. Pre-Flight
# ScriptRunner.ps1
Install-Module -Name PSWindowsUpdate, Az.Accounts -Force -Scope CurrentUser
Import-Module PSWindowsUpdate
Write-Host "✅ Modüller hazır"
# Güvenli icra politikası
Set-ExecutionPolicy AllSigned -Scope Process -Force
🏰 1. Jump-Box Forest Kurulumu
# 1_Create-BastionForest.ps1
$SecForestName = "contoso-sec.local"
$SecNet = "10.10.0.0/24"
$DCEdition = "Server2019Standard"
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
Install-ADDSForest `
 -DomainName $SecForestName `
 -DatabasePath "D:\NTDS" -SysvolPath "D:\SYSVOL" `
 -SafeModeAdministratorPassword (Read-Host -AsSecureString "DSRM PW")
# Tek-yön trust (Prod→Bastion güven)
New-ADTrust -Name $Env:USERDNSDOMAIN `
 -TargetForest $SecForestName `
 -Direction Outbound -Forest -Confirm:$false
Devam eden görevler: Tier0-Admins global grubunu oluştur, üyelerini yalnız bastion DC’de tut.
GPO: “Deny log on locally” → Domain Admin’leri prod DC’lerinde engelle.
🛡️ 2. Credential Guard + VBS
# 2_Enable-CredGuard.ps1
$Servers = @("PAW01","PAW02")
Invoke-Command -ComputerName $Servers -ScriptBlock {
 Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard `
 -Name EnableVirtualizationBasedSecurity -Value 1 -Type DWord
 Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\LSA `
 -Name LsaCfgFlags -Value 1 -Type DWord
 gpupdate /force
}
Write-Host "Credential Guard tetiklendi; reboot şart"
# test
Invoke-Command $Servers { Get-CimInstance Win32_DeviceGuard }
🔑 3. TPM BitLocker Devreye Alma
# 3_Enable-BitLocker.ps1
$Targets = Get-Content .\servers-bitlocker.txt # her satır FQDN
foreach ($srv in $Targets) {
 Invoke-Command $srv -ScriptBlock {
  Enable-BitLocker -MountPoint "C:" -TpmProtector -UsedSpaceOnly `
  -RecoveryPasswordProtector `
  -SkipHardwareTest
 }
}
Recovery Keys On-prem AD:
Get-BitLockerRecoveryPassword -MountPoint "C:" | Out-File "\\SEC-DC\Share\Recovery\$env:COMPUTERNAME.txt"
🔐 4. Secure Boot + DRTM Doğrulaması
# 4_Verify-SecureBoot.ps1
$report = foreach ($srv in $Targets){
 $sb = Confirm-SecureBootUEFI -ErrorAction SilentlyContinue
 $tpm = Get-Tpm
 @{ Host = $srv; SecureBoot = $sb; TPM20 = $tpm.TpmSpecVersion }
}
$report | Export-Csv .\SecureBootStatus.csv -NoType
DRTM BIOS’ta açıldıktan sonra Device Health Attestation servisi ölçü alır; Arc Policy ile “BootAttestation = Compliant” zorlanabilir.
☁️ 5. Azure Arc + Defender Birlikte
# 5_Arc-Defender.ps1
Connect-AzAccount
$rg = "RG-OnPrem"
$loc = "westeurope"
# Sunucuları Arc’e bağla
$Srv = @("ANT-FSRV01","ANT-SQL01")
foreach ($s in $Srv){
 Start-Process "https://aka.ms/AzureArcAgent" -Wait -ArgumentList "/quiet"
 az connectedmachine connect --resource-group $rg --name $s --location $loc
}
# Otomatik Defender planı
az security auto-provisioning-setting update `
 --name default --auto-provision On
🔄 İş Akışı & Zaman Çizelgesi (Fast-Track)
Ek Bilgi:
Budget-Savvy Taktik – Defender lisansını “per-server on-demand” aç; yalnız Tier-0 ve DMZ makinelerinde 7×24 tam EDR.
DSC / Ansible – Playbook’u DSC’ye çevir; drift → Teams alert’i.
Supply-Chain Alarmı – UEFI Secure Boot ölçü verisini “Azure Attestation” ile CI/CD pipeline’ına entegre et.