PowerShell: Windows Güvenlik Duvarını Yapılandırma
Güvenlik duvarları trafiği kontrol eder. Diğer ağlarla bağlantı kurmak için Durum Denetimi gibi teknolojileri kullanırlar. Bu yazımda Windows PowerShell kullanarak host tabanlı Windows Güvenlik Duvarının nasıl yapılandırılacağını anlatacağım.
Windows XP SP2'den bu yana yerleşik ana bilgisayar tabanlı güvenlik duvarı, her Windows işletim sisteminde varsayılan olarak etkindir. Bu, her Windows Sistem Yöneticisinin ve Geliştiricisinin buna aşina olması gerektiği anlamına gelir. Ancak uygulamada çoğu zaman durumun böyle olmadığını öğrendim. Belki grafiksel arayüzden ya da ilgi eksikliğinden kaynaklanmaktadır. Kim bilir. Hatta birçok ortamda güvenlik duvarı devre dışı bırakılır. Bu yazımda Windows Güvenlik Duvarı'nın PowerShell ile nasıl yapılandırılacağını göstereceğim. Üzerine inşa edebileceğiniz temel bilgiler.
Grafik Kullanıcı Arayüzü
Her şeyden önce, Windows Güvenlik Duvarı grafik arayüzünün büyük bir hayranı olmadığımı itiraf etmeliyim. Windows Güvenlik Duvarı'nı açmak için wf.msc yazın veya sistem ayarlarında arama yapın. Bu güvenlik duvarı kuralı adlarını kim buldu? Gerçekten sinir bozucu ama çıkış yolu yok.
NetSecurity Modülü
Windows PowerShell'de tüm güvenlik duvarı komutları NetSecurity modülünde bulunabilir.
Get-Command -Module NetSecurity | Format-List Name
Windows Güvenlik Duvarını Etkinleştirme ve Devre Dışı Bırakma
Bu beni ilk PowerShell Cmdlet'imize getiriyor: Set-NetFirewallProfile. Ana bilgisayar tabanlı Güvenlik Duvarınızı etkinleştirmenizi ve devre dışı bırakmanızı sağlar.
Set-NetFirewallProfile -All -Enabled false
Set-NetFirewallProfile -All -Enabled true
Aramızdaki cmd hayranları için evet netsh hala hayatta.
netsh advfirewall set allprofiles state off
Yeni Güvenlik Duvarı Kuralları oluşturma
Önceden yapılandırılmış kurallardan memnun değilseniz kendi kurallarınızı ekleyin. New-NetFirewallRule cmdlet'ini kullanın. İşte tüm gelen http trafiğinin nasıl engelleneceğine bir örnek.
New-NetFirewallRule -Name "Block HTTP" -DisplayName "Block HTTP" -Enabled 1 -Direction Inbound -Action Block -LocalPort 80 -Protocol TCP
Bu bizi bir sonraki komuta getiriyor: Get-NetFirewallRule. Daha önce yapılandırdığımız kuralımızı arayalım.
Get-NetFirewallRule -Name *Block* | Select Name,Enabled,Direction,Action,PrimaryStatus
New-NetFirewallRule hakkında daha fazla bilgiyi burada bulabilirsiniz: https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=win10-ps
Get-NetFirewallRule hakkında daha fazla bilgiyi burada bulabilirsiniz: https://docs.microsoft.com/en-us/powershell/module/netsecurity/get-netfirewallrule?view=win10-ps
Kapsamın Tanımlanması
Diyelim ki HTTP erişimini yalnızca bir bilgisayarla kısıtlamak istiyoruz. Bana nedenini sorma ama bu kısım için senaryomuz bu. ? Yani client01, dc01'e HTTP üzerinden ulaşabilen tek bilgisayar olmalıdır.
Şimdi kapsamı değiştirelim. Demek istediğim şu:
Bunun işe yaraması için kuralımı izin verecek şekilde değiştirmem gerekiyor. Daha sonra HTTP erişimini yalnızca client01 ile kısıtlıyorum.
Set-NetFirewallRule -DisplayName "Block HTTP" -Action Allow
Şimdi Windows Sunucu Rolü Web Sunucusu ile birlikte gelen kuraldaki varsayılan HTTP'yi devre dışı bırakacağım. Bunu yapmazsam sonraki testim işe yaramaz.
Set-NetFirewallRule -DisplayName "World Wide Web Services (HTTP Traffic-In)" -Enabled false
Bu artık benim kuralımın bilgisayarımdaki tek HTTP kuralı olduğu anlamına geliyor. Şimdi kapsamı değiştiriyoruz.
Set-NetFirewallRule -Name "Block HTTP" -RemoteAddress 192.168.0.102
Hızlı bir kontrol yapalım. 192.168.0.102'de True alıyorum. 192.168.0.19'da Yanlış mesajı alıyorum. Bu işe yarıyor!
Windows Güvenlik Duvarı Uzaktan Yönetimi
Bilgisayarlarınız aynı Active Directory Etki Alanını paylaşıyorsa, Windows Güvenlik Duvarı Ayarlarını uzaktan kolayca yapılandırabilirsiniz. İstemci sistemlerinde uzaktan yönetimin etkinleştirildiğinden emin olun. Etkinleştirmek için winrm qc girin veya WinRM'yi Grup İlkesi ile yapılandırın. Windows Server Sistemlerinde başka bir işlem yapılmasına gerek yoktur. WinRM'yi Grup İlkeleriyle etkinleştirme hakkında daha fazla bilgi için bkz.: Grup İlkeleri: Windows İstemci İşletim Sistemleri için WinRM'yi Etkinleştirme (Windows 10, Windows 8, Windows 7)
Hadi devam edelim. DC01'de oturum açtım ve client01'in Güvenlik Duvarının etkin olup olmadığını kontrol etmek istiyorum. Bunu yapmak için girin
Invoke-Command -ComputerName client01 {Get-NetFirewallProfile -All | Select Name,Enabled}
Bu iyi görünüyor. Tüm profillerde etkindir.
Ve burada tüm sunucu sistemlerinin tüm güvenlik duvarını test etmek için bir komut bulabilirsiniz:
Test-FirewallAllServer: Tüm Windows Sunucularındaki Güvenlik Duvarı durumunu sorgulayın
Çözüm
Umarım iyi bir genel bakış sunabilmişimdir. Windows Güvenlik Duvarı hakkında daha fazla bilgiyi burada bulabilirsiniz:
https://technet.microsoft.com/en-us/library/hh831755(v=ws.11).aspx












