“Jump-Box Forest” (Bastion Forest)

“Jump-Box Forest” (Bastion Forest)
1️⃣ “Jump-Box Forest” (Bastion Forest) Tasarımı 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.

2️⃣ Credential Guard + VBS (Virtualization-Based Security)

Nasıl Açılır?
# 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ç. • Beltek’ten Pass-the-Hash denemeleri direkt LSASS dışında kaldığı için başarısız olur.

3️⃣ TPM-Tabanlı BitLocker (OS & Data Disks)

  • 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 HSM’deki TPM + Secure Boot zaten dizin dışı anahtarı kurtarır.
    Golden rule: TPM 2.0 + Secure Boot + Measured Boot + BitLocker = disk çalıp offline kurcalama ≈ boşuna.

4️⃣ Azure Arc & Defender for Cloud ile Hibrit Sertleştirme

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.

Defender for Cloud

Pro İpucu: Arc-enabled sunucuyu “Auto-Provisioning = On” yap; Defender ajanı elle kurmakla uğraşma. Alert’leri Sentinel’le birleştir, MITRE ATT&CK takibi hazır gelsin.

5️⃣ Hardware-Rooted Güvenlik: UEFI Secure Boot + Measured Boot + DRTM

Etkinleştirme Hız Turu
  1. BIOS → Secure Boot: Enabled, Trusted Execution: On.
  2. Windows Features → “Device Health Attestation” ve “Hyper-V-Hypervisor” ( lazım ise).
  3. Shielded VM senaryosu: Host-Guardian Service (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

  1. Windows Hello for Business (Key Trust) ile admin smart-card bağımlılığını kaldır.
  2. Hyper-V “vTPM” + Shielding Data = production VM’leri de hardware-root’lu yap.
  3. Attested Boot sonuçlarını Azure Policy’de “deny” olarak ayarla → temiz boot etmeyen makine CI/CD pipeline’a bile giremesin.
  4. Intune + Config Mgr Co-Mgmt; PAW’lar için tam disk şifreleme, application allow-listing (WDAC) politikalarını hibrit dağıt.
  5. 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.
 

1️⃣ Risk-Bedel Çizelgesi

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
  1. Tier0-Admins global grubunu oluştur, üyelerini yalnız bastion DC’de tut.
  2. GPO: “Deny log on locally” → Domain Admin’leri ürün 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’i (Intel TXT) BIOS’ta açtıktan sonra Device Health Attestation (DHA) servisi otomatik ölçü alır; Arc Policy ile “BootAttestation = Compliant” zorlayabilirsiniz.

☁️ 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

  1. Budget-Savvy Taktik – Defender lisansını “per-server on-demand” aç; yalnız Tier-0 ve DMZ makinelerinde 7×24 tam EDR, kalanında CSPM.
  2. DSC / Ansible – Yukarıdaki playbook’u ConfigurationData dosyasıyla DSC’ye çevir; drift → Teams alert’i.
  3. Supply-Chain Alarmı – UEFI Secure Boot ölçü verisini “Azure Attestation” ile CI/CD pipeline’ına entegre et; bozuk imajın prod’a çıkmasını blokla.