Microsoft Baseline Security Analyzer ile Windows Güvenlik Analizi

Windows ortamlarında güvenlik açıklarını tespit etmek her zaman can sıkıcı bir iş olmuştur. Yamalar eksik mi, zayıf şifreler var mı, güvenlik ayarları doğru yapılandırılmış mı? Bunları tek tek kontrol etmek yerine Microsoft’un ücretsiz sunduğu Microsoft Baseline Security Analyzer (MBSA) aracını kullanabilirsiniz. Eski ama altın değerinde bu araç, özellikle küçük ve orta ölçekli Windows ortamlarında hızlı güvenlik denetimi yapmak için hala geçerliliğini koruyor. Bu yazıda MBSA’yı sıfırdan kurmaktan, komut satırından otomatik tarama yapmaya kadar her şeyi ele alacağız.

MBSA Nedir ve Neden Hala Kullanılır?

MBSA, Microsoft tarafından geliştirilen ve Windows sistemlerindeki yaygın güvenlik yanlış yapılandırmalarını ile eksik güncellemeleri tespit eden ücretsiz bir güvenlik değerlendirme aracıdır. 2019’da resmi desteği sona ermiş olsa da birçok sysadmin hala bu aracı legacy Windows ortamlarında (Windows Server 2008, 2012, Windows 7/8.1 gibi) kullanmaktadır.

Neden hala popüler?

  • Ücretsiz ve kurulumu kolay: Lisans derdi yok, karmaşık yapılandırma yok.
  • GUI ve CLI desteği: Hem grafik arayüzden hem de komut satırından kullanılabiliyor.
  • Toplu tarama: Tek seferde birden fazla makineyi tarayabiliyorsunuz.
  • Raporlama: HTML formatında detaylı raporlar üretiyor.
  • Active Directory entegrasyonu: Domain üzerindeki tüm makineleri tarayabiliyorsunuz.

Tabii MBSA’nın sınırlamaları da var. Windows 10 20H2 ve üzeri sürümlerde yama kontrolü çalışmıyor çünkü araç eski Windows Update Agent API’sını kullanıyor. Modern ortamlar için Microsoft Defender for Endpoint veya Microsoft Security Compliance Toolkit daha uygun seçenekler. Ama elinizdeki ortam karma yapıdaysa MBSA hala değerli bir araç.

Kurulum ve Gereksinimler

MBSA 2.3 sürümü aşağıdaki sistemlerde çalışır:

  • Windows Server 2008 R2, 2012, 2012 R2, 2016
  • Windows 7, 8.1, 10 (sınırlı destek)
  • .NET Framework 2.0 veya üzeri
  • XML Core Services 3.0 veya üzeri

Kurulum için önce sisteminizde gerekli bileşenlerin mevcut olduğunu kontrol edin:

# PowerShell ile .NET Framework versiyonunu kontrol et
Get-ItemProperty "HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full" | Select-Object Version, Release

# Windows Update servisinin çalışıp çalışmadığını kontrol et
Get-Service -Name wuauserv | Select-Object Status, Name, DisplayName

MBSA kurulum dosyasını indirdikten sonra kurulum oldukça basit. Ancak domain ortamında uzak makineleri tarayacaksanız bazı ön hazırlıklar gerekiyor:

# Uzak makinelerde WMI trafiğine izin ver (Firewall kuralı)
netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=yes

# Remote Registry servisini başlat ve otomatik başlatmaya ayarla
sc config RemoteRegistry start= auto
sc start RemoteRegistry

# File and Printer Sharing kurallarını etkinleştir
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes

Bu adımları GPO üzerinden tüm makinelere uygulayabilirsiniz, tek tek uğraşmak zorunda değilsiniz.

MBSA’nın Kontrol Ettiği Güvenlik Alanları

MBSA bir tarama yaptığında şu alanlara bakıyor:

Windows Güvenlik Güncellemeleri

  • Eksik kritik, önemli ve orta önem seviyesindeki yamalar
  • Service Pack eksiklikleri
  • Güncel olmayan bileşenler

Kullanıcı Hesabı Güvenliği

  • Boş şifreli hesaplar
  • Süresi dolmuş şifreler
  • Guest hesabının etkin olup olmadığı
  • Administrator hesabının yeniden adlandırılıp adlandırılmadığı

Windows Güvenlik Duvarı

  • Güvenlik duvarının etkin olup olmadığı
  • Temel güvenlik duvarı yapılandırması

IIS Güvenliği (eğer IIS kuruluysa)

  • Gereksiz sanal dizinler
  • IIS lockdown durumu
  • Log dosyası yapılandırması

SQL Server Güvenliği (eğer SQL Server kuruluysa)

  • SA hesabı şifre güvenliği
  • SQL Server Authentication modu
  • Sysadmin grubundaki hesap sayısı

GUI ile İlk Tarama

MBSA’yı başlattığınızda üç seçenekle karşılaşıyorsunuz:

  • Scan a computer: Tek bir bilgisayarı tarar
  • Scan multiple computers: IP aralığı veya domain adına göre toplu tarama
  • View existing security reports: Daha önce yapılan tarama sonuçlarına bakar

Yerel makineyi taramak için “Scan a computer” seçeneğini açın. “Computer name” alanı otomatik olarak dolu gelir. Aşağıdaki seçenekleri özelleştirebilirsiniz:

  • Check for Windows administrative vulnerabilities: Windows güvenlik açıklarını kontrol eder
  • Check for weak passwords: Zayıf şifre kontrolü yapar
  • Check for IIS administrative vulnerabilities: IIS güvenlik kontrolü
  • Check for SQL administrative vulnerabilities: SQL Server güvenlik kontrolü
  • Check for security updates: Windows Update kontrolü

Hepsini seçili bırakıp “Start Scan” diyebilirsiniz. Tarama birkaç dakika sürer ve sonunda HTML tabanlı detaylı bir rapor açılır.

Komut Satırından MBSA Kullanımı

Gerçek sysadmin işi burada başlıyor. GUI’yi bir kez görmek yeterli, asıl güç komut satırı arayüzünde (mbsacli.exe) gizli. Bu araçla taramaları otomatize edebilir, sonuçları merkezi bir noktaya toplayabilirsiniz.

Temel parametreler:

  • /target: Hedef bilgisayar adı veya IP adresi
  • /r: IP aralığı taraması (örnek: 192.168.1.1-192.168.1.254)
  • /d: Domain adına göre tarama
  • /n: Belirli kontrolleri devre dışı bırak (OS, IIS, SQL, Updates, Password)
  • /o: Rapor dosyasının adı
  • /rd: Rapor dosyasının kaydedileceği dizin
  • /u: Kullanıcı adı (uzak taramalar için)
  • /p: Şifre (uzak taramalar için)
  • /qp: Şifre kontrolünü atla
  • /qe: Hata raporlamayı atla
  • /qr: Tamamlanma mesajını atla
  • /wi: Windows güvenlik duvarı kontrolünü dahil et
  • /nvc: Versiyon kontrolünü atla
  • /catalog: Özel bir güncelleme kataloğu kullan
  • /xmlout: XML formatında çıktı ver

Yerel makineyi taramak için:

# Temel yerel tarama
cd "C:Program FilesMicrosoft Baseline Security Analyzer 2"
mbsacli.exe /target localhost /n password

# Sonuçları belirli bir dizine kaydet
mbsacli.exe /target localhost /rd C:MBSA_Reports /o "%COMPUTERNAME%_report"

Uzak bir sunucuyu taramak için:

# Uzak sunucu taraması (domain hesabıyla)
mbsacli.exe /target 192.168.1.50 /u DOMAINAdministrator /p P@ssw0rd123 /rd C:MBSA_Reports

# Sadece güncelleme kontrolü yap, diğer kontrolleri atla
mbsacli.exe /target 192.168.1.50 /n "IIS SQL Password"

IP aralığı taraması için:

# Tüm subnet'i tara
mbsacli.exe /r 192.168.1.1-192.168.1.254 /u DOMAINsysadmin /p SifrenizBurada /rd C:MBSA_Reports /qe

# Domain üzerindeki tüm makineleri tara
mbsacli.exe /d contoso.local /u contosoadministrator /p P@ssw0rd /rd C:MBSA_Reports

PowerShell ile Otomatik Tarama Senaryosu

En verimli kullanım senaryosu MBSA’yı PowerShell scriptiyle otomatize etmektir. Aşağıdaki script bir liste dosyasından sunucu adlarını okuyarak hepsini tarar ve raporları düzenli bir klasör yapısında saklar:

# mbsa_toplu_tarama.ps1
# Kullanim: .mbsa_toplu_tarama.ps1 -SunucuListesi "C:sunucular.txt" -RaporDizini "C:MBSA_Reports"

param(
    [string]$SunucuListesi = "C:sunucular.txt",
    [string]$RaporDizini = "C:MBSA_Reports",
    [string]$DomainKullanici = "CONTOSOmbsa_service",
    [string]$Sifre = "HizmetHesabiSifresi"
)

$MBSAYolu = "C:Program FilesMicrosoft Baseline Security Analyzer 2mbsacli.exe"
$Tarih = Get-Date -Format "yyyyMMdd_HHmm"
$TaramaRaporDizini = "$RaporDizini$Tarih"

# Rapor dizini oluştur
if (-not (Test-Path $TaramaRaporDizini)) {
    New-Item -ItemType Directory -Path $TaramaRaporDizini | Out-Null
    Write-Host "[INFO] Rapor dizini olusturuldu: $TaramaRaporDizini" -ForegroundColor Green
}

# Sunucu listesini oku
$Sunucular = Get-Content $SunucuListesi | Where-Object { $_ -ne "" -and $_ -notlike "#*" }
Write-Host "[INFO] Toplam $($Sunucular.Count) sunucu taranacak." -ForegroundColor Cyan

$BasariliTarama = 0
$BasarisizTarama = 0

foreach ($Sunucu in $Sunucular) {
    Write-Host "`n[TARAMA] $Sunucu baslatiliyor..." -ForegroundColor Yellow
    
    $RaporAdi = "${Sunucu}_${Tarih}"
    
    $Argümanlar = "/target $Sunucu /u $DomainKullanici /p $Sifre /rd `"$TaramaRaporDizini`" /o `"$RaporAdi`" /qe /qr"
    
    try {
        $Islem = Start-Process -FilePath $MBSAYolu -ArgumentList $Argümanlar -Wait -PassThru -WindowStyle Hidden
        
        if ($Islem.ExitCode -eq 0) {
            Write-Host "[OK] $Sunucu taramasi tamamlandi." -ForegroundColor Green
            $BasariliTarama++
        } else {
            Write-Host "[HATA] $Sunucu taramasinda sorun olustu. Exit Code: $($Islem.ExitCode)" -ForegroundColor Red
            $BasarisizTarama++
        }
    } catch {
        Write-Host "[HATA] $Sunucu icin MBSA baslatılamadi: $($_.Exception.Message)" -ForegroundColor Red
        $BasarisizTarama++
    }
}

Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host "TARAMA OZETI" -ForegroundColor Cyan
Write-Host "Basarili: $BasariliTarama" -ForegroundColor Green
Write-Host "Basarisiz: $BasarisizTarama" -ForegroundColor Red
Write-Host "Raporlar: $TaramaRaporDizini" -ForegroundColor Cyan
Write-Host "========================================`n" -ForegroundColor Cyan

Bu scripti Task Scheduler’a ekleyerek haftalık otomatik tarama yapabilirsiniz:

# Task Scheduler'a ekle (Admin PowerShell'de çalıştır)
$Eylem = New-ScheduledTaskAction -Execute "PowerShell.exe" `
    -Argument "-NonInteractive -File C:Scriptsmbsa_toplu_tarama.ps1"

$Tetikleyici = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At "02:00AM"

$Ayarlar = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -WakeToRun

Register-ScheduledTask -TaskName "MBSA_Haftalik_Tarama" `
    -Action $Eylem `
    -Trigger $Tetikleyici `
    -Settings $Ayarlar `
    -RunLevel Highest `
    -User "CONTOSOmbsa_service" `
    -Password "HizmetHesabiSifresi"

Gerçek Dünya Senaryosu: Yeni Devralınan Ortam Denetimi

Şöyle bir senaryo düşünün: Yeni bir şirkette sysadmin olarak işe başladınız ve mevcut Windows altyapısı hakkında hiçbir belge yok. “Her şey çalışıyor” diyorlar ama neyin nasıl yapılandırıldığını kimse bilmiyor. Bu durumda MBSA’yı hızlı bir ilk değerlendirme aracı olarak kullanabilirsiniz.

Önce domain’deki tüm makineleri keşfedelim:

# Active Directory'den tüm Windows sunucuları çek
Import-Module ActiveDirectory

$Sunucular = Get-ADComputer -Filter {OperatingSystem -like "*Windows Server*"} `
    -Properties OperatingSystem, LastLogonDate | 
    Where-Object { $_.LastLogonDate -gt (Get-Date).AddDays(-30) } |
    Select-Object -ExpandProperty Name

# Sunucu listesini dosyaya yaz
$Sunucular | Out-File "C:sunucular.txt"
Write-Host "Toplam $($Sunucular.Count) aktif sunucu bulundu." -ForegroundColor Green

Sonra bu listeyi MBSA ile tarayın ve çıkan rapora göre öncelik listesi oluşturun. Tipik olarak şunlarla karşılaşırsınız:

  • Aylar, bazen yıllarca uygulanmamış Windows güncellemeleri
  • Etkin Guest hesapları
  • Boş şifreli lokal hesaplar
  • Devre dışı bırakılmamış IIS örnek uygulamaları
  • SQL Server’da SA hesabının zayıf şifresi

MBSA çıktısındaki renk kodlamasına dikkat edin: kırmızı X kritik sorunları, sarı X önemli uyarıları, yeşil onay işareti ise düzgün yapılandırılmış alanları gösteriyor.

MBSA Raporlarını XML ile Ayrıştırma

MBSA raporları varsayılan olarak XML formatında kaydedilir (uzantısı .mbsa). Bu dosyaları PowerShell ile işleyerek merkezi bir özet rapor oluşturabilirsiniz:

# MBSA XML raporlarini analiz et ve ozet cikar
$RaporDizini = "C:MBSA_Reports"
$XMLRaporlar = Get-ChildItem -Path $RaporDizini -Filter "*.mbsa" -Recurse

$Sonuclar = @()

foreach ($Rapor in $XMLRaporlar) {
    [xml]$XMLIcerik = Get-Content $Rapor.FullName
    
    $SunucuAdi = $XMLIcerik.SecScan.Machine
    $TaramaTarihi = $XMLIcerik.SecScan.ScanDate
    
    # Eksik guncellemeleri say
    $EksikGuncelleme = ($XMLIcerik.SecScan.Check | 
        Where-Object { $_.GroupID -eq "100" -and $_.Result -eq "1" }).Count
    
    # Kritik sorunlari say
    $KritikSorun = ($XMLIcerik.SecScan.Check | 
        Where-Object { $_.Severity -eq "4" -and $_.Result -eq "1" }).Count
    
    $Sonuclar += [PSCustomObject]@{
        Sunucu = $SunucuAdi
        TaramaTarihi = $TaramaTarihi
        EksikGuncelleme = $EksikGuncelleme
        KritikSorun = $KritikSorun
    }
}

# Sonuclari ekrana yaz
$Sonuclar | Sort-Object KritikSorun -Descending | Format-Table -AutoSize

# CSV'ye aktar
$Sonuclar | Export-Csv "C:MBSA_Reportsozet_rapor.csv" -NoTypeInformation -Encoding UTF8
Write-Host "Ozet rapor kaydedildi: C:MBSA_Reportsozet_rapor.csv" -ForegroundColor Green

MBSA’nın Sınırlamaları ve Modern Alternatifler

Dürüst olmak gerekirse MBSA yaşlı bir araç ve bazı durumlarda yetersiz kalıyor:

  • Windows 10 21H1 ve üzeri sürümlerde yama kontrolü çalışmıyor
  • Windows Server 2019 ve 2022 desteği yok
  • Microsoft Store uygulamalarını kontrol etmiyor
  • Bulut tabanlı kaynaklar (Azure VM’ler) için uygun değil
  • Son güncelleme 2015 yılında yapılmış

Modern alternatiflere bakacak olursak:

Microsoft Security Compliance Toolkit (SCT): CIS benchmarkları ve Microsoft güvenlik taban çizgilerini kontrol etmek için kullanılıyor. MBSA’dan çok daha kapsamlı.

Microsoft Defender Vulnerability Management: Kurumsal ortamlar için ideal, ancak lisans gerektiriyor.

OpenVAS / Greenbone: Açık kaynak, hem Windows hem Linux ortamları tarayabiliyor.

Nessus Essentials: Ücretsiz sürümüyle 16 IP’ye kadar tarama yapabiliyor.

Küçük bütçeli ortamlarda veya sadece legacy sistemler için MBSA hala kullanılabilir, ancak tek güvenlik aracınız olmamalı.

En İyi Pratikler

MBSA’yı ortamınıza entegre ederken dikkat etmeniz gereken birkaç nokta:

  • Düzenli tarama yapın: Aylık değil, haftalık veya iki haftada bir tarama yapın. Güvenlik açıkları hızlı ortaya çıkabiliyor.
  • Servis hesabı kullanın: Kendi admin hesabınızı scripte gömmeyin, bunun için ayrı bir servis hesabı oluşturun ve minimum gerekli yetkileri verin.
  • Raporları saklayın: Trend analizi için eski raporları silmeyin. Hangi sistemlerin sürekli sorun çıkardığını zamanla görürsünüz.
  • Sadece MBSA’ya güvenmeyin: MBSA belirli kontrollere odaklanıyor. Güvenlik duvarı kurallarını, uygulama güvenliğini ve ağ güvenliğini ayrıca değerlendirmeniz gerekiyor.
  • Tarama saatlerine dikkat edin: Gece yarısı yapılan taramalar üretim sistemlerini nadiren etkiliyor ama gündüz yaparsanız WMI sorguları nedeniyle küçük yavaşlamalar yaşanabilir.

Sonuç

MBSA, modern güvenlik araçlarıyla kıyaslandığında yaşlı ve sınırlı bir araç olduğu doğru. Ancak legacy Windows ortamlarında hızlı güvenlik değerlendirmesi yapmak, eksik yamaları tespit etmek ve zayıf yapılandırmaları bulmak için hala pratik ve etkili bir seçenek. Özellikle sıfır bütçeyle çalışan sysadminler için değerini koruyor.

Yeni kurduğunuz bir ortamı ilk kez denetliyorsanız, MBSA’yı bir başlangıç noktası olarak kullanın. Sonuçlara bakarak kritik sorunları önce çözün, ardından Microsoft Security Compliance Toolkit gibi daha kapsamlı araçlarla detaylı değerlendirme yapın. Güvenlik tek bir araçla sağlanmıyor; MBSA bu araç setinin küçük ama faydalı bir parçası olmaya devam ediyor.

Toplu tarama scriptlerini kendi ortamınıza göre uyarladıktan sonra haftalık raporları e-posta ile kendinize göndermek için bir adım daha ekleyebilirsiniz. Bu sayede sabah kahvenizi içerken geçen haftanın güvenlik özetini okumak gibi tatmin edici bir rutin oluşturabilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir