Yazılara geri dön

Windows Kurulumundan Sonra Kapatman Gereken 12 Tehlikeli Varsayılan Ayar

Yeni Windows kurulumları riskli varsayılanlarla gelir. Her sunucu ve iş istasyonunda kapattığım 12 ayarı saldırı yüzeyini küçültmek için paylaşıyorum.

WindowsWindows SecurityHardeningWindows ServerPowerShellSysadminSecurity Defaults

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:

  1. Windows Update'i tamamen çalıştır, reboot et, temizlenene kadar tekrarla
  2. Yukarıdaki 12 ayarı devre dışı bırak
  3. Varsayılan Administrator hesabının adını değiştir
  4. Yalnızca gerekli rolleri ve feature'ları yükle
  5. Belirli portlar ve kaynaklar için firewall kurallarını yapılandır
  6. Başarısız logon ve privileged use için auditing'i etkinleştir
  7. Yalnızca local hardening tamamlandıktan sonra domain'e join et
  8. 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