BitLocker ile Disk Şifreleme: Kurulum ve Yönetim

Disk şifreleme, modern IT altyapısının vazgeçilmez bir parçası haline geldi. Özellikle Windows Server ortamlarında hassas verileri barındıran sistemlerde BitLocker, hem fiziksel hırsızlığa hem de yetkisiz erişim girişimlerine karşı güçlü bir koruma katmanı sağlıyor. Bu yazıda BitLocker’ı sıfırdan nasıl kuracağınızı, yöneteceğinizi ve gerçek dünya senaryolarında nasıl kullanacağınızı ele alacağız.

BitLocker Nedir ve Neden Kullanmalısınız?

BitLocker, Windows’un içine gömülü olarak gelen tam disk şifreleme teknolojisidir. AES-128 veya AES-256 şifreleme algoritmaları kullanarak diskinizin tüm içeriğini korur. Sunucunuz fiziksel olarak çalınsa bile, şifreleme anahtarı olmadan disk içeriğine erişmek neredeyse imkansız hale gelir.

Gerçek dünyadan bir senaryo düşünelim: Bir veri merkezinden bir sunucu rafını çalan bir saldırgan, disk sürücülerini doğrudan başka bir sisteme takar ve verilere erişmeye çalışır. BitLocker olmadan bu iş birkaç dakika sürer. BitLocker ile bu senaryoda saldırgan sadece şifrelenmiş veriler görür.

BitLocker’ın temel avantajları şunlardır:

  • Şeffaf işletim: Sistem açık olduğunda kullanıcılar herhangi bir fark hissetmez
  • TPM entegrasyonu: Trusted Platform Module ile donanım düzeyinde anahtar yönetimi
  • Active Directory entegrasyonu: Kurtarma anahtarlarını merkezi olarak saklama imkanı
  • Uzaktan yönetim: PowerShell ve Group Policy üzerinden merkezi yönetim

Ön Gereksinimler ve Hazırlık

BitLocker kurulumuna geçmeden önce ortamınızı hazırlamanız gerekiyor. İlk kontrol edilmesi gereken şey TPM modülünün varlığı ve durumudur.

# PowerShell ile TPM durumunu kontrol edin
Get-Tpm

Bu komut size TPM’in mevcut olup olmadığını, sürümünü ve aktif olup olmadığını gösterir. TPM 1.2 veya 2.0 desteklenmektedir, ancak TPM 2.0 tercih edilmelidir.

BitLocker özelliğini Windows Server’a yüklemek için:

# BitLocker özelliğini ve yönetim araçlarını yükle
Install-WindowsFeature BitLocker -IncludeAllSubFeature -IncludeManagementTools -Restart

# Kurulumu doğrula
Get-WindowsFeature BitLocker

Sunucunuzu yeniden başlatmanız gerekebilir. Yeniden başlatma sonrasında özelliğin düzgün yüklendiğini yukarıdaki doğrulama komutuyla kontrol edin.

Disk Bölümlerini Kontrol Etme

BitLocker’ın düzgün çalışması için sistem sürücüsünde en az 350 MB boyutunda ayrı bir sistem bölümü bulunması gerekir. Bu bölüm şifrelenemez çünkü sistem başlangıcını yönetir.

# Disk bölümlerini listele
Get-Partition | Select-Object DriveLetter, Size, Type, IsSystem

# Disk bölümü boyutlarını daha detaylı gör
Get-Volume | Select-Object DriveLetter, FileSystemLabel, Size, SizeRemaining

Eğer sistem bölümünüz yeterli boyutta değilse, BitLocker kurulumu sırasında otomatik olarak oluşturulacaktır. Windows Server 2016 ve üzeri sürümler bunu genellikle otomatik halleder.

BitLocker’ı Etkinleştirme

Sistem Sürücüsünü Şifreleme (C: Sürücüsü)

İşletim sistemi sürücüsünü şifrelemek, diğer sürücülerden biraz farklı bir süreç gerektirir çünkü sistemin başlangıcında kimlik doğrulama mekanizması devreye girer.

# C sürücüsünde BitLocker'ı etkinleştir, TPM ile birlikte PIN kullan
# Önce kurtarma anahtarını dosyaya kaydet
$RecoveryKey = (New-Object -TypeName System.Security.SecureString)
Add-BitLockerKeyProtector -MountPoint "C:" -RecoveryPasswordProtector

# TPM ve PIN ile şifrelemeyi etkinleştir
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -TpmAndPinProtector -Pin (Read-Host -AsSecureString "PIN giriniz")

Sunucu ortamlarında genellikle PIN kullanımı tercih edilmez çünkü yeniden başlatma sonrasında biri fiziksel olarak PIN girmeden sistem boot etmez. Bu durumda sadece TPM koruyucusu yeterli olabilir:

# Sadece TPM ile şifreleme (sunucu ortamı için pratik)
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -TpmProtector

# Kurtarma anahtarını ekle
Add-BitLockerKeyProtector -MountPoint "C:" -RecoveryPasswordProtector

Veri Sürücülerini Şifreleme

Sistem dışı sürücüler için süreç daha basittir. Özellikle birden fazla veri diski bulunan sunucularda bu işlem sıkça yapılır:

# D sürücüsünü parola ile şifrele
$SecurePassword = Read-Host -AsSecureString "Sürücü parolasını girin"
Enable-BitLocker -MountPoint "D:" -EncryptionMethod Aes256 -PasswordProtector -Password $SecurePassword

# Kurtarma anahtarını da ekle
Add-BitLockerKeyProtector -MountPoint "D:" -RecoveryPasswordProtector

# Şifreleme durumunu kontrol et
Get-BitLockerVolume -MountPoint "D:"

Tüm Sürücüleri Toplu Şifreleme

Birden fazla sunucunuz varsa veya aynı sunucuda birden fazla veri diski bulunuyorsa, toplu işlem için şu yaklaşımı kullanabilirsiniz:

# Tüm sürücülerin BitLocker durumunu listele
Get-BitLockerVolume | Select-Object MountPoint, VolumeStatus, EncryptionPercentage, ProtectionStatus

# Şifrelenmemiş tüm veri sürücülerini bul ve şifrele
$UnencryptedVolumes = Get-BitLockerVolume | Where-Object {$_.VolumeStatus -eq "FullyDecrypted" -and $_.MountPoint -ne "C:"}

foreach ($Volume in $UnencryptedVolumes) {
    Write-Host "Şifreleniyor: $($Volume.MountPoint)"
    Enable-BitLocker -MountPoint $Volume.MountPoint -EncryptionMethod Aes256 -RecoveryPasswordProtector
    Write-Host "Tamamlandı: $($Volume.MountPoint)"
}

Kurtarma Anahtarlarını Yönetme

Kurtarma anahtarları, BitLocker yönetiminin en kritik parçasıdır. Bu anahtarları kaybederseniz şifreli verilerinize bir daha erişemeyebilirsiniz. Bu yüzden kurtarma anahtarlarını güvenli bir şekilde saklamak zorunludur.

Active Directory’ye Kurtarma Anahtarı Yedekleme

Kurumsal ortamlarda kurtarma anahtarlarını Active Directory’ye yedeklemek en iyi pratiktir. Öncelikle Group Policy’de bu ayarı etkinleştirmeniz gerekir. Ancak bunu PowerShell üzerinden de yapabilirsiniz:

# Mevcut kurtarma anahtarlarını AD'ye yedekle
$BitLockerVolume = Get-BitLockerVolume -MountPoint "C:"
$RecoveryProtector = $BitLockerVolume.KeyProtector | Where-Object {$_.KeyProtectorType -eq "RecoveryPassword"}

# Her kurtarma şifresi koruyucusu için AD'ye yedekle
foreach ($Protector in $RecoveryProtector) {
    Backup-BitLockerKeyProtector -MountPoint "C:" -KeyProtectorId $Protector.KeyProtectorId
    Write-Host "Kurtarma anahtarı AD'ye yedeklendi: $($Protector.KeyProtectorId)"
}

Kurtarma Anahtarlarını Dosyaya Kaydetme

AD entegrasyonunuz yoksa kurtarma anahtarlarını güvenli bir konuma dosya olarak kaydedin:

# Kurtarma anahtarını metin dosyasına kaydet
$KeyProtectors = (Get-BitLockerVolume -MountPoint "C:").KeyProtector
$RecoveryPassword = $KeyProtectors | Where-Object {$_.KeyProtectorType -eq "RecoveryPassword"}

# Anahtarı güvenli bir ağ konumuna kaydet
$RecoveryPassword.RecoveryPassword | Out-File -FilePath "\secureserverbitlocker-keys$env:COMPUTERNAME-C.txt"

Write-Host "Kurtarma Şifresi: $($RecoveryPassword.RecoveryPassword)"

Bu dosyayı şifreli bir konumda veya ayrı bir sistemde sakladığınızdan emin olun. Şifreli diskle aynı fiziksel konumda tutmak anlamsız olur.

Group Policy ile Merkezi Yönetim

Birden fazla sunucunuz varsa Group Policy üzerinden merkezi yönetim hayat kurtarır. Bunun için şu GPO yolunu kullanın:

Computer Configuration > Administrative Templates > Windows Components > BitLocker Drive Encryption

Kritik GPO ayarları:

  • Require additional authentication at startup: TPM ve PIN gereksinimini ayarlar
  • Choose drive encryption method and cipher strength: AES-256 kullanımını zorunlu kılar
  • Choose how BitLocker-protected operating system drives can be recovered: Kurtarma seçeneklerini tanımlar
  • Store BitLocker recovery information in Active Directory Domain Services: AD yedeklemeyi zorunlu kılar

GPO ayarlarını uyguladıktan sonra doğrulama için:

# GPO uygulamasını zorla
gpupdate /force

# BitLocker politika durumunu kontrol et
manage-bde -status C:

Gerçek Dünya Senaryosu: Şube Ofisi Sunucusu

Diyelim ki şube ofislerinde küçük Windows Server sistemleri çalıştırıyorsunuz. Bu sunucular fiziksel güvenliği sınırlı ortamlarda duruyor. İşte bu senaryo için pratik bir yaklaşım:

Öncelikle her şube sunucusuna otomatik olarak BitLocker kurmak için bir kurulum scripti hazırlayın:

# Şube sunucusu BitLocker kurulum scripti
param(
    [Parameter(Mandatory=$true)]
    [string]$BackupPath = "\headquarterbitlocker-backup"
)

# TPM kontrolü
$TpmStatus = Get-Tpm
if (-not $TpmStatus.TpmPresent) {
    Write-Error "TPM bulunamadı! BitLocker kurulamaz."
    exit 1
}

if (-not $TpmStatus.TpmReady) {
    Write-Error "TPM hazır değil. Önce TPM'i etkinleştirin."
    exit 1
}

# BitLocker özelliği yüklü mü?
$BitLockerFeature = Get-WindowsFeature BitLocker
if ($BitLockerFeature.InstallState -ne "Installed") {
    Write-Host "BitLocker özelliği yükleniyor..."
    Install-WindowsFeature BitLocker -IncludeAllSubFeature -IncludeManagementTools
    Write-Host "Yeniden başlatma gerekiyor. Lütfen sunucuyu yeniden başlatın."
    exit 0
}

# C sürücüsünü şifrele
Write-Host "C sürücüsü şifreleniyor..."
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -TpmProtector
Add-BitLockerKeyProtector -MountPoint "C:" -RecoveryPasswordProtector

# Kurtarma anahtarını merkezi konuma kaydet
$KeyProtector = (Get-BitLockerVolume -MountPoint "C:").KeyProtector | 
    Where-Object {$_.KeyProtectorType -eq "RecoveryPassword"}
    
$BackupFile = Join-Path $BackupPath "$env:COMPUTERNAME-$(Get-Date -Format 'yyyyMMdd').txt"
$KeyProtector.RecoveryPassword | Out-File -FilePath $BackupFile

Write-Host "BitLocker kurulumu tamamlandı."
Write-Host "Kurtarma anahtarı kaydedildi: $BackupFile"

# Şifreleme ilerlemesini göster
do {
    $Status = Get-BitLockerVolume -MountPoint "C:"
    Write-Host "Şifreleme ilerlemesi: %$($Status.EncryptionPercentage)"
    Start-Sleep -Seconds 30
} while ($Status.VolumeStatus -eq "EncryptionInProgress")

Write-Host "Şifreleme tamamlandı!"

Bu scripti Group Policy Startup Script olarak veya uzaktan çalıştırma ile tüm şube sunucularına uygulayabilirsiniz.

Sorun Giderme

Yaygın Hatalar ve Çözümleri

TPM kilitleme durumu: TPM çok fazla yanlış giriş denemesi sonucunda kendini kilitleyebilir.

# TPM kilidini aç
Clear-TpmAuthValue

# TPM durumunu yeniden kontrol et
Get-Tpm | Select-Object TpmPresent, TpmReady, TpmEnabled, TpmActivated, TpmOwned

Kurtarma modu: Sistem beklenmedik bir değişiklik sonrasında kurtarma moduna girerse:

# Kurtarma anahtarını görüntüle
manage-bde -protectors -get C:

# Kurtarma modundan çıkmak için (kurtarma anahtarıyla)
manage-bde -unlock C: -RecoveryPassword 123456-789012-345678-901234-567890-123456-789012-345678

Şifreleme takılı kaldıysa: Bazen şifreleme işlemi yarıda kesintiye uğrayabilir.

# Şifreleme durumunu kontrol et
Get-BitLockerVolume | Select-Object MountPoint, VolumeStatus, EncryptionPercentage

# Şifrelemeyi devam ettir
Resume-BitLocker -MountPoint "C:"

BitLocker Onarım Aracı

Ciddi disk sorunlarında BitLocker Repair Tool kullanabilirsiniz:

# BitLocker onarım aracını çalıştır
repair-bde C: D: -rp 123456-789012-345678-901234-567890-123456-789012-345678

# Burada D: hedef sürücü, rp ise kurtarma şifresidir

Performans Değerlendirmesi

BitLocker’ın disk performansına etkisi merak konusudur. Modern donanımlarda bu etki oldukça minimaldır. AES-NI donanım hızlandırması destekleyen işlemcilerde (neredeyse tüm modern Intel ve AMD işlemciler) performans kaybı yüzde birden azdır.

Performansı test etmek için:

# Disk performansını ölç (WinSAT ile)
winsat disk -drive c

# Şifreleme algoritmasını kontrol et
Get-BitLockerVolume | Select-Object MountPoint, EncryptionMethod

Eğer sunucunuz eski ve yoğun disk I/O işlemleri yapıyorsa, önce test ortamında performans ölçümü yapmanızı öneririm. Ancak çoğu senaryoda BitLocker’ın getirdiği güvenlik avantajı, minimum performans maliyetini fazlasıyla karşılar.

Düzenli Bakım ve Denetim

BitLocker kurulumunun ardından düzenli denetim yapmanız gerekir. Aşağıdaki script, ortamınızdaki tüm sunucuların BitLocker durumunu raporlar:

# Uzak sunucularda BitLocker durumunu raporla
$Servers = Get-Content "C:scriptsserver-list.txt"
$Report = @()

foreach ($Server in $Servers) {
    try {
        $Volumes = Invoke-Command -ComputerName $Server -ScriptBlock {
            Get-BitLockerVolume | Select-Object MountPoint, VolumeStatus, 
                EncryptionPercentage, ProtectionStatus, EncryptionMethod
        }
        
        foreach ($Volume in $Volumes) {
            $Report += [PSCustomObject]@{
                Sunucu = $Server
                Surucu = $Volume.MountPoint
                Durum = $Volume.VolumeStatus
                SifrelemePct = $Volume.EncryptionPercentage
                KorumaAktif = $Volume.ProtectionStatus
                Algoritma = $Volume.EncryptionMethod
            }
        }
    } catch {
        Write-Warning "$Server sunucusuna bağlanılamadı: $_"
    }
}

# Raporu CSV olarak kaydet
$Report | Export-Csv -Path "C:reportsbitlocker-status-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation -Encoding UTF8

# Koruması devre dışı olan sürücüleri vurgula
$ProtecitonDisabled = $Report | Where-Object {$_.KorumaAktif -eq "Off"}
if ($ProtecitonDisabled) {
    Write-Warning "DİKKAT: Aşağıdaki sürücülerde BitLocker koruması devre dışı:"
    $ProtecitonDisabled | Format-Table -AutoSize
}

Bu scripti görev zamanlayıcıya ekleyerek haftalık otomatik raporlar oluşturabilirsiniz.

Kurtarma Anahtarı Rotasyonu

Güvenlik politikası gereği kurtarma anahtarlarını periyodik olarak döndürmeniz gerekebilir:

# Mevcut kurtarma anahtarını kaldır ve yenisini oluştur
$OldProtector = (Get-BitLockerVolume -MountPoint "C:").KeyProtector | 
    Where-Object {$_.KeyProtectorType -eq "RecoveryPassword"}

# Eski anahtarı kaldır
Remove-BitLockerKeyProtector -MountPoint "C:" -KeyProtectorId $OldProtector.KeyProtectorId

# Yeni kurtarma anahtarı ekle
Add-BitLockerKeyProtector -MountPoint "C:" -RecoveryPasswordProtector

# Yeni anahtarı görüntüle ve kaydet
$NewProtector = (Get-BitLockerVolume -MountPoint "C:").KeyProtector | 
    Where-Object {$_.KeyProtectorType -eq "RecoveryPassword"}

Write-Host "Yeni Kurtarma Anahtarı: $($NewProtector.RecoveryPassword)"

Sonuç

BitLocker, Windows Server ortamlarında disk şifrelemesi için güçlü ve yönetimi kolay bir çözüm sunuyor. TPM entegrasyonu, Active Directory desteği ve PowerShell üzerinden tam yönetim kabiliyeti ile kurumsal ortamlara gayet uygun bir araç.

Kritik noktalara değinmek gerekirse; kurtarma anahtarlarını asla şifreli diskle aynı fiziksel konumda saklamayın. Active Directory ortamında mutlaka AD’ye yedekleyin. Şube ve uzak ofis sunucularında TPM varsa BitLocker kesinlikle devreye alınmalı. Performans konusunda ise modern donanımlarda ciddi bir endişeniz olmasın.

Uyarı niteliğinde şunu ekleyeyim: Kurtarma anahtarını kaybederseniz ve TPM sorun çıkarırsa, diskinizin içindeki verilere bir daha erişemeyebilirsiniz. Bu yüzden kurtarma prosedürlerinizi test edin, anahtarlarınızı güvenli ve erişilebilir bir yerde saklayın. Yedek testini yapmadan “güvendeyiz” demeyin.

BitLocker’ı ciddiye alan bir güvenlik politikası, fiziksel güvenlik ihlallerine karşı en etkili savunma katmanlarından birini oluşturur. Özellikle KVKK ve ISO 27001 gibi uyumluluk gereksinimlerinde disk şifreleme artık bir seçenek değil, zorunluluk haline gelmiş durumda.

Yorum yapın