Yeni bir Windows kurulumu varsayılan olarak güvenli değildir. Benim ortamımda dağıtımdan sonra yaptığım ilk iş bir hardening kontrol listesi üzerinden geçmektir, çünkü Windows varsayılan ayarları açık bırakılmaması gereken kapılar aralık bırakır. Makine üretime dokunmadan önce saldırı yüzeyini küçültmek için her sunucu ve iş istasyonunda kapattığım 12 tehlikeli Windows varsayılan ayarı şunlar.
Neden Yeni Windows Kurulumları Güvenli Değildir
Microsoft Windows'u güvenlik değil kullanılabilirlik odaklıyla gönderir. Tüketici laptopları için bu mantıklıdır, ama bir sunucu ortamında veya kurumsal bir domain'de bu varsayılanlar yük haline gelir. Bunu yıllar önce zor yoldan öğrendim ve artık bu ayarları otomatik çeviren bir kurulum sonrası script'im var.
Ağınızdaki izinsiz cihazları tespit etmekten bahsederken de belirttiğim gibi (https://furkanikkan.com/urun/aginizdaki-izinsiz-cihazlari-10-dakikada-tespit-edin-28), görünürlük önemlidir. Ama önleme daha önemlidir. Her seferinde değiştirdiğim ayarları birlikte geçelim.
Ağ ve Paylaşım Varsayılanları
1. Network Discovery ve File Sharing
Yeni bir kurulumda Windows mevcut ağ profili için Network Discovery ve File and Printer Sharing'i etkinleştirir. Makine düz bir ağ segmentine düşerse diğer tüm hostlar onu görebilir ve paylaşımları enumerate edebilir.
Sunucularda bunu hemen devre dışı bırakıyorum. İş istasyonlarında ise yalnızca Private profil için etkinleştiriyorum, asla Public için değil.
# Disable network discovery and file sharing on all profiles
Set-NetFirewallRule -DisplayGroup "Network Discovery" -Enabled False -Profile Any
Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled False -Profile Any
2. WinRM Üzerinden Açık Bırakılan PowerShell Remoting
WinRM her zaman varsayılan olarak açık değildir, ama bazı dağıtım araçları etkinleştirir ve varsayılan auth ayarlarıyla çalışır halde bırakır. WinRM'i tamamen devre dışı bıraktığımdan veya belirli trusted hostlarla HTTPS'e kısıtladığımdan emin oluyorum.
3. LMHOSTS Lookup Etkin
Bu eski ama hâlâ mevcut. LMHOSTS lookup eski ağlarda isim çözümleme saldırılarını etkinleştirebilir. TCP/IP gelişmiş ayarlarından veya registry üzerinden devre dışı bırakıyorum:
# Disable LMHOSTS lookup
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters" -Name EnableLMHOSTS -Value 0
Kullanıcı Hesabı ve Kimlik Doğrulama Riskleri
4. Local Administrator Hesabı Etkin
Yerleşik Administrator hesabı client Windows'ta varsayılan olarak devre dışıdır, ama Server Core'da veya bazı dağıtımlarda aktif kalır. Devre dışı bırakıyorum ve bunun yerine ismi değiştirilmiş, bireysel takip edilen bir admin hesabı kullanıyorum.
Disable-LocalUser -Name "Administrator"
**5. Parola Karmaşıklığı Varsayılanlarda Bırakılmış
Varsayılan parola politikası 7 karakter ve dört karakter türünden üçünü gerektirir. On yıl önce iyiydi. Minimum uzunluğu 12'ye çıkarıyorum ve Group Policy üzerinden akıllı lockout politikalarını etkinleştiriyorum. Domain controller'larda bu pazarlıksızdır.
6. Reversible Encryption ile Parola Saklama
Bu politika varsayılan olarak devre dışıdır, ama eski bir uygulama için etkinleştirip unuttuğum dağıtımlar gördüm. Kontrol edin:
Get-ADDefaultDomainPasswordPolicy | Select ReversibleEncryptionEnabled
True dönerse hemen düzeltin.
Uzaktan Erişim ve Çalıştırma Varsayılanları
7. Herkese Açık Remote Desktop
RDP'nin kendisi client Windows'ta varsayılan olarak etkin değildir, ama Server'da etkindir. Sorun şu ki varsayılan yapılandırma her authenticated kullanıcının bağlanmasına izin verir. RDP erişimini belirli bir güvenlik grubuna kısıtlıyorum ve Network Level Authentication zorunlu kılıyorum.
Ayrıca varsayılan portu değiştiriyorum. Security through obscurity evet, ama loglarımdaki brute-force gürültüsünü belirgin şekilde azaltıyor.
8. SMBv1 Hâlâ Mevcut
SMBv1 ölmüş olmalı. Microsoft son build'lerde varsayılan olarak devre dışı bıraktı, ama yükseltilmiş sistemlerde hâlâ karşılaşıyorum. Kontrol edin ve kaldırın:
# Check SMBv1 status
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
# Disable it
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
9. Kısıtlamasız PowerShell Execution Policy
Sunucularda execution policy'i en az RemoteSigned olarak ayarlıyorum. Yüksek güvenlikli ortamlar için AllSigned daha iyi. Bir script'in çalışması için Unrestricted olarak ayarlayıp hiç geri değiştirmeyen yeni dağıtımlar gördüm.
Telemetri ve Gizlilik Ayarları
10. Microsoft'a Gönderilen Diagnostic ve Usage Data
Sunucularda telemetri minimal olmalıdır. Server sürümlerinde diagnostic data seviyesini Security (0), politikaların izin verdiği iş istasyonlarında Basic (1) olarak ayarlıyorum.
# Set telemetry to Security level on Server
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name AllowTelemetry -Value 0
11. Windows Error Reporting Etkin
WER Microsoft'a crash data gönderir. Production sunucularında devre dışı bırakıyorum. Data'nın kendisinden dolayı değil, crash dump'lerin ortamınızdan dışarı çıkmasını istemeyeceğiniz bellek içerikleri barındırabileceğinden dolayı.
Tarayıcı ve Uygulama Varsayılanları
12. Internet Explorer / Edge Legacy Mode Etkin
Server 2016 ve 2019'da Internet Explorer hâlâ varsayılan olarak yüklüdür. Kaldırıyorum veya en azından adminlerin uyarıları körü körüne bypass etmesini sağlayan Enhanced Security Configuration ince ayarlarını devre dışı bırakıyorum. ESC uyarıları o kadar sinir bozucu ki insanlar her şeyi whitelist'e alıyor, bu da IE'yi kaldırmaktan daha kötü.
# Remove Internet Explorer
Disable-WindowsOptionalFeature -FeatureName Internet-Explorer-Optional-amd64 -Online -NoRestart
Kurulum Sonrası Hardening Workflow'um
Her yeni Windows makinesinde izlediğim sıra şu:
- Windows Update'i tamamen çalıştır, reboot et, temizlenene kadar tekrarla
- Yukarıdaki 12 ayarı devre dışı bırak
- Varsayılan Administrator hesabının adını değiştir
- Yalnızca gerekli rolleri ve feature'ları yükle
- Belirli portlar ve kaynaklar için firewall kurallarını yapılandır
- Başarısız logon ve privileged use için auditing'i etkinleştir
- Yalnızca local hardening tamamlandıktan sonra domain'e join et
- Bir baseline backup al (ve backup failure postumda belirttiğim gibi (https://furkanikkan.com/urun/geri-yuklemede-basarisiz-olan-yedekler-sessiz-veri-kaybi-senaryosu-27), gerçekten bir restore testi yap)
İpucu: Bunların hepsini internal repomda sakladığım tek bir PowerShell script'inde tutuyorum. Yeni kurulumdan sonra çalıştırıyorum, reboot ediyorum ve makine güvendiğim bir baseline'da oluyor. Her dağıtımda yaklaşık 40 dakika kazandırıyor ve bir ayarı asla unutmadığım anlamına geliyor.
Amaç Windows'u kırılamaz yapmak değildir. Hiçbir şey kırılamaz. Amaç bir saldırganın erişim sağladıktan sonraki ilk birkaç dakikada aradığı kolay zaferleri ortadan kaldırmaktır. Bu 12 ayar low-hanging fruit'tir. Başkası bulmadan önce düzeltin.
Kapak görseli: Negative Space · CC0 (Openverse / kamu malı) · https://stocksnap.io/photo/macbook-laptop-X0CYLUO8E0
