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

İlgili makaleler