Automated TLS/SSL Security Hardening for Windows Server | Windows Sunucular için Otomatik TLS/SSL Güvenlik Sıkılaştırma
A comprehensive PowerShell script to harden TLS/SSL security configuration on Windows servers. Disable weak protocols (SSL 2.0/3.0, TLS 1.0/1.1), enable secure ciphers (AES-GCM), and ensure compliance with PCI-DSS, NIST, HIPAA, and CIS benchmarks.
Windows sunucularda TLS/SSL güvenlik yapılandırmasını otomatik olarak sıkılaştıran kapsamlı PowerShell scripti. Zayıf protokolleri devre dışı bırakın, güvenli cipher'ları etkinleştirin ve güvenlik standartlarına uyumluluğu sağlayın.
TLS SSL Security Hardening Windows Server PowerShell SCHANNEL Cipher Suites PCI-DSS NIST HIPAA CIS TLS 1.3 TLS 1.2 Registry Compliance Güvenlik Sıkılaştırma
- Özellikler
- Gereksinimler
- Kurulum
- Kullanım
- Uzak Sunucu Desteği
- Compliance Raporu
- Yapılandırma Dosyaları
- Güvenlik Ayarları
- Uyumluluk
- Sorun Giderme
- Katkıda Bulunma
| Özellik | Açıklama |
|---|---|
| 🔒 Protokol Yönetimi | SSL 2.0/3.0, TLS 1.0/1.1 devre dışı, TLS 1.2/1.3 etkin |
| 🛡️ Cipher Suite Optimizasyonu | Sadece GCM modlu güvenli cipher'lar |
| 🔑 DH Key Size | Minimum 3072-bit Diffie-Hellman anahtarı |
| #️⃣ Hash Algoritmaları | MD5/SHA1 kapalı, SHA256/384/512 açık |
| 📦 Otomatik Yedekleme | Registry değişikliklerinden önce yedek alır |
| 👁️ Dry-Run Modu | Değişiklik yapmadan önizleme (-WhatIf) |
| 🎯 Profil Desteği | strict/recommended/compatible profilleri |
| 🔄 Rollback | Önceki yapılandırmaya veya varsayılanlara dönüş |
| 🌐 Uzak Sunucu | Birden fazla sunucuyu tek komutla yapılandırma |
| 📊 Compliance Raporu | PCI-DSS, NIST, HIPAA, CIS uyumluluk kontrolü |
| ✅ Doğrulama Scripti | Yapılandırma sonrası kontrol |
| 📝 Detaylı Loglama | Tüm işlemler loglanır |
| Gereksinim | Minimum |
|---|---|
| İşletim Sistemi | Windows Server 2016+ veya Windows 10+ |
| PowerShell | 5.1 veya üzeri |
| Yetki | Administrator |
| TLS 1.3 Desteği | Windows Server 2022+ / Windows 11+ |
# PowerShell versiyonunu kontrol et
$PSVersionTable.PSVersion
# Administrator olarak çalıştığını doğrula
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")🇹🇷 TÜRKÇE: Bu scripti çalıştırmadan önce mutlaka sistem yedeği alın! Registry değişiklikleri geri alınamaz sorunlara yol açabilir. Önce
-WhatIfparametresi ile test edin.🇬🇧 ENGLISH: Always create a system backup before running this script! Registry changes can cause irreversible issues. Test with
-WhatIfparameter first.
git clone https://github.com/kullanici/TLSHardener.git
cd TLSHardener- Repository'yi ZIP olarak indirin
- İstediğiniz klasöre çıkartın
- PowerShell'i Administrator olarak açın
# Standart çalıştırma (onay ister)
.\TLSHardener.ps1
# Onay istemeden çalıştır
.\TLSHardener.ps1 -BypassConfirmation
# .NET Strong Crypto ile çalıştır
.\TLSHardener.ps1 -EnableStrongCrypto
# Tüm parametrelerle
.\TLSHardener.ps1 -BypassConfirmation -EnableStrongCryptoFarklı güvenlik seviyeleri için hazır profiller:
# Strict profil - Maksimum güvenlik, sadece TLS 1.3
.\TLSHardener.ps1 -Profile strict
# Recommended profil - Dengeli güvenlik (varsayılan ayarlar)
.\TLSHardener.ps1 -Profile recommended
# Compatible profil - Eski sistemlerle uyumlu
.\TLSHardener.ps1 -Profile compatible
# Profil ile Dry-Run
.\TLSHardener.ps1 -Profile strict -WhatIf| Özellik | Strict | Recommended | Compatible |
|---|---|---|---|
| TLS 1.2 | ❌ Kapalı | ✅ Açık | ✅ Açık |
| TLS 1.3 | ✅ Açık | ✅ Açık | ✅ Açık |
| CBC Cipher | ❌ Yasak | ❌ Yasak | ✅ İzin |
| DH Key Size | 4096 bit | 3072 bit | 2048 bit |
| AES-128 | ❌ Kapalı | ✅ Açık | ✅ Açık |
| Cipher Sayısı | 2 | 9 | 15 |
| Uyumluluk | Düşük | Orta | Yüksek |
| Güvenlik | Maksimum | Yüksek | Orta |
Hiçbir değişiklik yapmadan ne olacağını görmek için:
.\TLSHardener.ps1 -WhatIfÖrnek çıktı:
╔════════════════════════════════════════════════════════════════╗
║ DRY-RUN MODU AKTİF ║
║ Hiçbir değişiklik yapılmayacak, sadece önizleme gösterilecek ║
╚════════════════════════════════════════════════════════════════╝
[DRY-RUN] PROTOKOL[Client] : TLS 1.0 -> DISABLED
[DRY-RUN] PROTOKOL[Client] : TLS 1.2 -> ENABLED
[DRY-RUN] CIPHER SUITES : TLS 1.3 ve TLS 1.2 -> 9 cipher suite yapılandırılacak
...
# Mevcut TLS yapılandırmasını raporla
.\TLSHardener-Report.ps1
# Yapılandırmayı temizle/sıfırla
.\TLSHardener-Clean.ps1
# Yapılandırmayı doğrula
.\TLSHardener-Verify.ps1
# Profil bazlı doğrulama
.\TLSHardener-Verify.ps1 -Profile recommended
# HTML rapor ile doğrulama
.\TLSHardener-Verify.ps1 -Profile strict -ExportReportYapılandırmayı geri almak için esnek seçenekler:
# İnteraktif mod - mevcut yedekleri listeler ve seçim yaparsınız
.\TLSHardener.ps1 -Rollback
# Belirli bir yedek dosyasını yükle
.\TLSHardener.ps1 -Rollback -BackupFile ".\backups\20251129_103045_SCHANNEL.reg"
# Windows varsayılanlarına dön (tüm TLS ayarlarını temizle)
.\TLSHardener.ps1 -Rollback -ToDefaults
# Onay istemeden rollback
.\TLSHardener.ps1 -Rollback -ToDefaults -BypassConfirmationRollback işlemi sırasında:
- Aynı zaman damgalı tüm yedek dosyaları gruplandırılır
- Seçilen yedek grubundaki tüm dosyalar birlikte yüklenir
- Yedek yoksa Windows varsayılanlarına dönme seçeneği sunulur
Birden fazla sunucuyu tek komutla yapılandırın:
# Tek sunucu
.\TLSHardener.ps1 -ComputerName "Server01" -Profile recommended
# Birden fazla sunucu
.\TLSHardener.ps1 -ComputerName "Server01","Server02","Server03" -Profile strict
# Kimlik bilgisi ile
.\TLSHardener.ps1 -ComputerName "Server01" -Credential (Get-Credential)
# Dry-Run ile önizleme
.\TLSHardener.ps1 -ComputerName "Server01","Server02" -WhatIf
# Strong Crypto ile
.\TLSHardener.ps1 -ComputerName "Server01" -EnableStrongCrypto -BypassConfirmationUzak sunucu desteği için PowerShell Remoting (WinRM) gereklidir:
# Hedef sunucularda WinRM'i etkinleştirin
Enable-PSRemoting -Force
# Güvenlik duvarı kuralını kontrol edin
Get-NetFirewallRule -Name "WINRM-HTTP-In-TCP" | Enable-NetFirewallRule
# Trusted Hosts ekleyin (gerekirse)
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "Server01,Server02"- Bağlantı testi ve durum raporu
- Her sunucu için ayrıntılı ilerleme
- CSV formatında sonuç raporu (
.\reports\TLSHardener-Remote_*.csv)
Güvenlik standartlarına uyumluluğu kontrol edin:
# Tüm standartları kontrol et
.\TLSHardener-Compliance.ps1
# Sadece belirli bir standart
.\TLSHardener-Compliance.ps1 -Standard PCI-DSS
.\TLSHardener-Compliance.ps1 -Standard NIST
.\TLSHardener-Compliance.ps1 -Standard HIPAA
.\TLSHardener-Compliance.ps1 -Standard CIS
# HTML rapor oluştur
.\TLSHardener-Compliance.ps1 -ExportReport
# HTML rapor oluştur ve tarayıcıda aç
.\TLSHardener-Compliance.ps1 -OpenReport
# Detaylı açıklamalar
.\TLSHardener-Compliance.ps1 -DetailedDesteklenen standartlar:
| Standart | Açıklama |
|---|---|
| PCI-DSS v4.0 | Payment Card Industry Data Security Standard |
| NIST SP 800-52 | Guidelines for TLS Implementations |
| HIPAA | Health Insurance Portability and Accountability Act |
| CIS Benchmark | Center for Internet Security Windows Hardening |
HTML Rapor Özellikleri:
- 📊 Büyük ve okunabilir yazı boyutları
- 🎨 Modern dark theme tasarım
- 📋 Tıklanabilir genişleyebilir bölümler (Accordion)
- ✅❌
⚠️ Renkli durum ikonları - 💡 Başarısız kontroller için çözüm önerileri
Örnek çıktı:
╔════════════════════════════════════════════════════════════════════╗
║ 🔐 TLSHardener COMPLIANCE RAPORU v1.0 ║
╚════════════════════════════════════════════════════════════════════╝
═══════════════════════════════════════════════════════════════════════
📋 PCI-DSS v4.0
═══════════════════════════════════════════════════════════════════════
✅ [4.2.1.a] SSL 2.0 devre dışı
✅ [4.2.1.b] SSL 3.0 devre dışı
✅ [4.2.1.c] TLS 1.0 devre dışı
❌ [4.2.1.f] Zayıf cipher suite'ler devre dışı
═══════════════════════════════════════════════════════════════════════
📊 UYUMLULUK ÖZETİ
═══════════════════════════════════════════════════════════════════════
✅ PCI-DSS - 85.7% uyumlu (6 geçti, 1 başarısız, 0 uyarı)
✅ NIST - 100% uyumlu (6 geçti, 0 başarısız, 0 uyarı)
TOPLAM: 92.3% uyumlu
Yapılandırma sonrası ayarların doğru uygulandığını kontrol edin:
# Temel doğrulama
.\TLSHardener-Verify.ps1
# Profil bazlı doğrulama (hangi profili uyguladıysanız ona göre)
.\TLSHardener-Verify.ps1 -Profile recommended
# HTML rapor oluştur
.\TLSHardener-Verify.ps1 -Profile strict -ExportReportÖrnek çıktı:
╔════════════════════════════════════════════════════════════════════╗
║ 🔐 TLSHardener DOĞRULAMA SCRIPTİ v1.1 ║
╚════════════════════════════════════════════════════════════════════╝
======================================================================
PROTOKOL AYARLARI
======================================================================
✅ TLS 1.0 [Server] Beklenen: Kapalı Mevcut: Kapalı
✅ TLS 1.2 [Server] Beklenen: Açık Mevcut: Açık
✅ TLS 1.3 [Server] Beklenen: Açık Mevcut: Açık
======================================================================
DOĞRULAMA ÖZETİ
======================================================================
Toplam Kontrol : 35
✅ Başarılı : 32
❌ Başarısız : 0
⚠️ Uyarı : 3
Başarı Oranı : 91.4%
Tüm profil ayarları config/ klasöründeki JSON dosyalarında tutulur:
config/
├── strict.json # Maksimum güvenlik (TLS 1.3 only)
├── recommended.json # Önerilen ayarlar (varsayılan)
├── compatible.json # Legacy uyumluluk
└── custom.json # Kullanıcı özelleştirmesi
Her profil tüm güvenlik ayarlarını tek dosyada tanımlar:
{
"name": "Strict",
"description": "Sadece TLS 1.3 ve en güçlü cipher'lar",
"protocols": {
"TLS 1.2": false,
"TLS 1.3": true
},
"cipherSuitesTls13": [
"TLS_AES_256_GCM_SHA384",
"TLS_CHACHA20_POLY1305_SHA256"
],
"dhMinKeySize": 4096,
"allowCBC": false
}{
"name": "Recommended",
"description": "TLS 1.2/1.3 ve GCM cipher'lar",
"protocols": {
"TLS 1.2": true,
"TLS 1.3": true
},
"dhMinKeySize": 3072,
"allowCBC": false
}{
"name": "Compatible",
"description": "Eski sistemlerle uyumlu, CBC dahil",
"protocols": {
"TLS 1.2": true,
"TLS 1.3": true
},
"dhMinKeySize": 2048,
"allowCBC": true
}{
"name": "Custom",
"description": "Kendi ihtiyaçlarınıza göre düzenleyin",
// recommended.json kopyası - özgürce düzenleyebilirsiniz
}{
"Multi-Protocol Unified Hello": false,
"PCT 1.0": false,
"SSL 2.0": false,
"SSL 3.0": false,
"TLS 1.0": false,
"TLS 1.1": false,
"TLS 1.2": true,
"TLS 1.3": true
}{
"$12CipherSuites": [
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
"TLS_RSA_WITH_AES_256_GCM_SHA384",
"TLS_RSA_WITH_AES_128_GCM_SHA256"
]
}| Protokol | Durum | Açıklama |
|---|---|---|
| SSL 2.0 | ❌ Kapalı | Ciddi güvenlik açıkları |
| SSL 3.0 | ❌ Kapalı | POODLE saldırısına açık |
| TLS 1.0 | ❌ Kapalı | BEAST saldırısına açık |
| TLS 1.1 | ❌ Kapalı | Zayıf cipher desteği |
| TLS 1.2 | ✅ Açık | Güvenli (GCM ile) |
| TLS 1.3 | ✅ Açık | En güvenli |
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ← En güvenli
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384 ← Uyumluluk için
TLS_RSA_WITH_AES_128_GCM_SHA256
| Kategori | Devre Dışı |
|---|---|
| Cipher'lar | RC4, DES, 3DES, NULL |
| Hash | MD5, SHA1 |
| Mod | CBC (tüm cipher'lar) |
| Key Exchange | RSA (sadece ECDHE/DHE önerilir) |
| Ayar | Değer |
|---|---|
| ServerMinKeyBitLength | 3072 bit |
| ClientMinKeyBitLength | 3072 bit |
| Sistem | TLS 1.2 | TLS 1.3 |
|---|---|---|
| Windows Server 2022+ | ✅ | ✅ |
| Windows Server 2019 | ✅ | ❌ |
| Windows Server 2016 | ✅ | ❌ |
| Windows 11 | ✅ | ✅ |
| Windows 10 (1903+) | ✅ | ✅ |
Bu yapılandırma aşağıdaki eski sistemlerle çalışmaz:
| Sistem/Uygulama | Neden |
|---|---|
| Windows XP | TLS 1.2 desteği yok |
| Windows Vista | TLS 1.2 varsayılan değil |
| Internet Explorer 10 ve altı | Eski cipher desteği |
| Android 4.3 ve altı | GCM desteği yok |
| Java 7 ve altı | TLS 1.2 desteği sınırlı |
| OpenSSL 0.9.8 | Eski sürüm |
-
Yeniden Başlatma: Değişikliklerin tam olarak uygulanması için sunucuyu yeniden başlatmanız gerekebilir.
-
Test Edin: Üretim ortamına uygulamadan önce test ortamında deneyin.
-
Yedekleme: Script otomatik yedek alır ancak manuel yedek de almanız önerilir.
-
Eski Uygulamalar: Eski .NET uygulamaları için
-EnableStrongCryptoparametresini kullanın.
# PowerShell'i Administrator olarak çalıştırın
Start-Process powershell -Verb runAs# Windows sürümünü kontrol edin
[System.Environment]::OSVersion.Version
# TLS 1.3 için: Windows Server 2022+ veya Windows 11+ gerekli# .NET uygulamaları için Strong Crypto etkinleştirin
.\TLSHardener.ps1 -EnableStrongCrypto# backups/ klasöründeki .reg dosyasını çift tıklayın
# veya
reg import .\backups\Protocol_Script_YYYYMMDD_HHMMSS_SCHANNEL.regLoglar logs/ klasöründe tutulur:
logs/TLSHardener_2025_11_29_1430.log
Bu yapılandırma aşağıdaki standartlarla uyumludur:
| Standart | Durum | Notlar |
|---|---|---|
| PCI-DSS 4.0 | ✅ | TLS 1.2+ zorunlu |
| NIST SP 800-52 Rev. 2 | ✅ | GCM cipher önerisi |
| HIPAA | ✅ | Güçlü şifreleme |
| GDPR | ✅ | Veri şifreleme |
| CIS Benchmark | ✅ | Windows Server hardening |
TLSHardener/
├── TLSHardener.ps1 # Ana script
├── TLSHardener-Verify.ps1 # Doğrulama scripti
├── TLSHardener-Compliance.ps1 # Uyumluluk raporu scripti
├── TLSHardener-Report.ps1 # Raporlama scripti
├── TLSHardener-Clean.ps1 # Temizleme scripti
├── README.md # Bu dosya
├── CHANGELOG.md # Versiyon geçmişi
├── TODO.md # Yapılacaklar listesi
├── config/ # Profil yapılandırma dosyaları
│ ├── strict.json # Maksimum güvenlik (TLS 1.3 only)
│ ├── recommended.json # Önerilen (varsayılan)
│ ├── compatible.json # Legacy uyumluluk
│ └── custom.json # Kullanıcı özelleştirmesi
├── assets/ # Görseller
├── backups/ # Otomatik yedekler
├── logs/ # Log dosyaları
└── reports/ # Doğrulama ve uyumluluk raporları
- Bu repository'yi fork edin
- Feature branch oluşturun (
git checkout -b feature/YeniOzellik) - Değişikliklerinizi commit edin (
git commit -m 'Yeni özellik eklendi') - Branch'inizi push edin (
git push origin feature/YeniOzellik) - Pull Request açın
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
- Proje: GitHub Repository
- Sorunlar: Issues
- Microsoft TLS/SSL güvenlik dokümantasyonu
- NIST kriptografik standartları
- Açık kaynak topluluğu
⭐ Bu proje işinize yaradıysa yıldız vermeyi unutmayın! ⭐