“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
  [PSCustomObject]@{
    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.

 

Yorum Yazın