PowerShell ile Windows Güvenlik Duvarı (Windows Defender Firewall) Yönetimi
Windows Güvenlik Duvarı (Windows Defender Firewall), Microsoft Windows işletim sistemlerinde yerleşik olarak gelen en önemli güvenlik bileşenlerinden biridir. Ağ trafiğini filtreleyerek yetkisiz erişimleri engeller, saldırıları azaltır ve sistem güvenliğini önemli ölçüde artırır.
Grafik arayüz üzerinden yönetilebilmesine rağmen, gerçek sistem yöneticileri ve siber güvenlik uzmanları Windows Güvenlik Duvarını PowerShell ile yönetir.
PowerShell sayesinde;
Yüzlerce bilgisayarda aynı anda yapılandırma yapılabilir.
Otomasyon oluşturulabilir.
Grup İlkesi (GPO) ile uyumlu çalışır.
Sunucular uzaktan yönetilebilir.
Olay müdahalesi sırasında hızlı kural eklenebilir.
Windows Güvenlik Duvarı Mimarisi
Windows Defender Firewall üç farklı ağ profiline sahiptir.
| Profil | Kullanım |
|---|---|
| Domain | Active Directory ortamı |
| Private | Ev veya güvenilir ağ |
| Public | İnternet, otel, kafe |
Her profil için;
Gelen bağlantılar
Giden bağlantılar
Günlükleme
Kurallar
İstisnalar
ayrı ayrı tutulur.
PowerShell Modülü
Windows Güvenlik Duvarı aşağıdaki modül ile yönetilir.
NetSecurity
Modülün yüklenmesi
Import-Module NetSecurity
Kontrol
Get-Module NetSecurity
Tüm Komutları Listeleme
Get-Command -Module NetSecurity
Yaklaşık 150'den fazla cmdlet bulunur.
En sık kullanılanlar:
Get-NetFirewallProfileSet-NetFirewallProfileGet-NetFirewallRuleNew-NetFirewallRuleSet-NetFirewallRuleEnable-NetFirewallRuleDisable-NetFirewallRuleRemove-NetFirewallRuleGet-NetFirewallPortFilterGet-NetFirewallAddressFilterGet-NetFirewallApplicationFilterGet-NetFirewallServiceFilterExport-WindowsFirewallRules
Güvenlik Duvarı Durumu
Get-NetFirewallProfile
Örnek
Name : DomainEnabled : TrueDefaultInboundAction : BlockDefaultOutboundAction : Allow
Sadece Public Profili
Get-NetFirewallProfile Public
Güvenlik Duvarını Açmak
Set-NetFirewallProfile -Profile Domain -Enabled True
Tüm profiller
Set-NetFirewallProfile `-Profile Domain,Private,Public `-Enabled True
Güvenlik Duvarını Kapatmak
Set-NetFirewallProfile `-Profile Domain,Private,Public `-Enabled False
Üretim ortamlarında güvenlik duvarının tamamen kapatılması önerilmez.
Varsayılan Gelen Trafik
Mevcut durum
Get-NetFirewallProfile |Select Name,DefaultInboundAction
Çıktı
Domain BlockPrivate BlockPublic Block
Gelen Trafiği Engelle
Set-NetFirewallProfile `-DefaultInboundAction Block
Gelen Trafiğe İzin Ver
Set-NetFirewallProfile `-DefaultInboundAction Allow
Giden Trafik
Kontrol
Get-NetFirewallProfile |Select Name,DefaultOutboundAction
Varsayılan
Allow
Giden Trafiği Engelle
Set-NetFirewallProfile `-DefaultOutboundAction Block
Bu ayar oldukça katıdır ve yalnızca açıkça izin verilen uygulamalar iletişim kurabilir.
Güvenlik Duvarı Kuralları
Tüm kurallar
Get-NetFirewallRule
Sadece etkin
Get-NetFirewallRule |Where Enabled -EQ True
İsme Göre Arama
Get-NetFirewallRule -DisplayName "*RDP*"
Etkin Kurallar
Get-NetFirewallRule |Where Enabled -eq True
Port Bilgisi
Get-NetFirewallRule |Get-NetFirewallPortFilter
Kural Oluşturma
ICMP (Ping)
New-NetFirewallRule `-DisplayName "Ping Aç" `-Protocol ICMPv4 `-IcmpType 8 `-Direction Inbound `-Action Allow
SSH
New-NetFirewallRule `-DisplayName "SSH" `-Direction Inbound `-Protocol TCP `-LocalPort 22 `-Action Allow
HTTP
New-NetFirewallRule `-DisplayName "HTTP" `-Direction Inbound `-Protocol TCP `-LocalPort 80 `-Action Allow
HTTPS
New-NetFirewallRule `-DisplayName "HTTPS" `-Protocol TCP `-LocalPort 443 `-Direction Inbound `-Action Allow
RDP
New-NetFirewallRule `-DisplayName "Remote Desktop" `-Direction Inbound `-Protocol TCP `-LocalPort 3389 `-Action Allow
Belirli IP'ye İzin
New-NetFirewallRule `-DisplayName "Yönetici" `-RemoteAddress 192.168.1.15 `-Protocol TCP `-LocalPort 3389 `-Direction Inbound `-Action Allow
Bir IP'yi Engelleme
New-NetFirewallRule `-DisplayName "Engelli IP" `-Direction Inbound `-RemoteAddress 10.10.10.15 `-Action Block
Bir Ağ Bloğunu Engelleme
New-NetFirewallRule `-DisplayName "Misafir Ağ" `-RemoteAddress 172.16.0.0/16 `-Action Block
Program Bazlı Kural
New-NetFirewallRule `-DisplayName "Chrome" `-Program "C:\Program Files\Google\Chrome\Application\chrome.exe" `-Direction Outbound `-Action Allow
Hizmet Bazlı
-Service Spooler
Örnek
New-NetFirewallRule `-DisplayName "Print" `-Service Spooler `-Action Allow
UDP Kuralı
DNS
New-NetFirewallRule `-DisplayName "DNS" `-Protocol UDP `-LocalPort 53 `-Action Allow
Çoklu Port
New-NetFirewallRule `-DisplayName "Web" `-Protocol TCP `-LocalPort 80,443 `-Action Allow
Port Aralığı
New-NetFirewallRule `-DisplayName "RPC" `-LocalPort 5000-5100 `-Protocol TCP `-Action Allow
Kuralı Devre Dışı
Disable-NetFirewallRule `-DisplayName "HTTP"
Tekrar Etkin
Enable-NetFirewallRule `-DisplayName "HTTP"
Kural Silme
Remove-NetFirewallRule `-DisplayName "HTTP"
Profil Bazlı Kural
Sadece Public
New-NetFirewallRule `-DisplayName "SSH Public" `-Profile Public `-LocalPort 22 `-Protocol TCP `-Action Allow
Arabirim Bazlı
-InterfaceAlias Ethernet
Örnek
New-NetFirewallRule `-DisplayName "Ethernet SSH" `-InterfaceAlias Ethernet `-Protocol TCP `-LocalPort 22 `-Action Allow
Günlükleme (Logging)
Mevcut ayarlar
Get-NetFirewallProfile |Select LogFileName,LogAllowed,LogBlocked
Log dosyası
C:\Windows\System32\LogFiles\Firewall\pfirewall.log
Engellenen paketleri kaydet
Set-NetFirewallProfile `-LogBlocked True
İzin verilenleri de kaydet
Set-NetFirewallProfile `-LogAllowed True
Log Görüntüleme
Get-Content `"C:\Windows\System32\LogFiles\Firewall\pfirewall.log" -Tail 50
Gerçek zamanlı
Get-Content `"C:\Windows\System32\LogFiles\Firewall\pfirewall.log" `-Wait
Kuralları Dışa Aktarma
netsh advfirewall export firewall.wfw
Kuralları İçe Aktarma
netsh advfirewall import firewall.wfw
PowerShell Otomasyonu
SSH ve RDP'yi aç
$ports = 22,3389foreach ($p in $ports){New-NetFirewallRule `-DisplayName "Port $p" `-LocalPort $p `-Protocol TCP `-Action Allow `-Direction Inbound}
Uzak Bilgisayarda Firewall Yönetimi
PowerShell Remoting etkin ise:
Invoke-Command -ComputerName SRV01 -ScriptBlock {New-NetFirewallRule `-DisplayName "SSH" `-Direction Inbound `-Protocol TCP `-LocalPort 22 `-Action Allow}
Alternatif olarak CIM oturumu:
$cim = New-CimSession -ComputerName SRV01New-NetFirewallRule `-CimSession $cim `-DisplayName "HTTPS" `-Direction Inbound `-Protocol TCP `-LocalPort 443 `-Action Allow
Olay Günlükleri (Event Logs)
Güvenlik duvarı ile ilgili günlükleri görüntülemek için:
Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"
Son 20 kayıt:
Get-WinEvent `-LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" `-MaxEvents 20
Belirli bir Event ID'ye göre filtreleme:
Get-WinEvent `-FilterHashtable @{LogName="Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"Id=2004}
Windows Defender Firewall ve IPsec
PowerShell ile IPsec bağlantı güvenliği kuralları da yönetilebilir.
Örneğin mevcut IPsec kurallarını listeleme:
Get-NetIPsecRule
Yeni bir IPsec kuralı oluşturmak için New-NetIPsecRule, kimlik doğrulama yöntemleri için New-NetIPsecPhase1AuthSet ve şifreleme kümeleri için New-NetIPsecQuickModeCryptoSet gibi cmdlet'ler kullanılır. Bu yapılandırmalar özellikle etki alanı ortamlarında sunucular arası güvenli iletişim için tercih edilir.
Güvenlik Açısından En İyi Uygulamalar
Varsayılan gelen trafiği Block olarak bırakın.
Sadece ihtiyaç duyulan portları açın.
Mümkün olduğunca belirli IP adreslerine izin verin.
Uygulama tabanlı kuralları port tabanlı kurallara tercih edin.
Kuralları anlamlı
DisplayNamedeğerleriyle oluşturun.Düzenli olarak kullanılmayan kuralları temizleyin.
Güvenlik duvarı günlüklerini merkezi bir SIEM (Microsoft Sentinel, Wazuh, Graylog, ELK vb.) sistemine aktarın.
Kuralları Grup İlkesi (GPO) ile merkezi olarak yönetin.
Kural değişikliklerini belgeleyin ve yedeklerini (
.wfw) düzenli olarak alın.Sunucularda "izin ver, sonra engelle" yerine en az ayrıcalık (least privilege) yaklaşımını benimseyin.
Sonuç
PowerShell'in NetSecurity modülü, Windows Defender Firewall'un tüm temel ve ileri düzey yönetim işlemlerini komut satırından gerçekleştirmenizi sağlar. Profil yönetiminden uygulama ve servis bazlı kurallara, IP filtrelemeden günlük kaydına, uzaktan yönetime ve IPsec yapılandırmalarına kadar geniş bir yönetim alanı sunar. Büyük ölçekli ortamlarda otomasyon, standartlaştırma ve merkezi yönetim açısından PowerShell kullanımı grafik arayüze göre çok daha verimli ve sürdürülebilir bir çözümdür. Bu nedenle sistem yöneticileri ve siber güvenlik uzmanları için PowerShell tabanlı güvenlik duvarı yönetimi temel yetkinliklerden biridir.
Hedef Kitle: Sistem Yöneticileri, Ağ Yöneticileri, Siber Güvenlik Uzmanları, BT Öğretmenleri ve İleri Seviye Windows Kullanıcıları
Windows Güvenlik Duvarı (Windows Defender Firewall), Windows 10, Windows 11 ve Windows Server sistemlerinde ağ trafiğini denetleyen yerleşik güvenlik mekanizmasıdır. PowerShell ile güvenlik duvarını yönetmek, grafik arayüze göre çok daha hızlı, otomatikleştirilebilir ve merkezi yönetim açısından avantajlıdır.
İçindekiler
Windows Güvenlik Duvarı Mimarisi
PowerShell Güvenlik Duvarı Modülü
Güvenlik Duvarı Profilleri
Güvenlik Duvarı Durumunu Yönetme
Güvenlik Duvarı Kuralları
Gelen (Inbound) Kurallar
Giden (Outbound) Kurallar
Port Açma ve Kapatma
Program Bazlı Kurallar
IP Adresine Göre Filtreleme
ICMP (Ping) Yönetimi
Günlükleme (Logging)
IPSec ve Connection Security Rules
Güvenlik Duvarını Yedekleme ve Geri Yükleme
PowerShell Remoting ve WinRM
Active Directory Ortamında Güvenlik Duvarı
Güvenlik Denetimi ve Analiz
Gerçek Sistem Yönetimi Senaryoları
Siber Güvenlik Açısından En İyi Uygulamalar
1. Windows Güvenlik Duvarı Mimarisi
Windows Güvenlik Duvarı, Windows Filtering Platform (WFP) üzerine inşa edilmiştir.
Internet│Windows Filtering Platform│+-------------+-------------+| |Inbound Rules Outbound Rules| |+-------------+-------------+│Windows Services│Applications
PowerShell üzerinden yapılan işlemler doğrudan WFP'yi yönetir.
2. PowerShell Güvenlik Duvarı Modülü
Modülü görüntüleme:
Get-Module NetSecurity -ListAvailable
Yükleme:
Import-Module NetSecurity
Komutları listeleme:
Get-Command -Module NetSecurity
Bu modülde 200'den fazla cmdlet bulunur.
3. Güvenlik Duvarı Profilleri
Windows üç farklı güvenlik profili kullanır:
| Profil | Açıklama |
|---|---|
| Domain | Etki alanına bağlı ağlar |
| Private | Ev veya güvenilir ağlar |
| Public | Ortak ve güvenilmeyen ağlar |
Profilleri görüntüleme:
Get-NetFirewallProfile
Belirli profil:
Get-NetFirewallProfile -Name Domain
4. Güvenlik Duvarını Açma ve Kapatma
Domain profilini etkinleştirme:
Set-NetFirewallProfile `-Profile Domain `-Enabled True
Tüm profilleri etkinleştirme:
Set-NetFirewallProfile `-Profile Domain,Private,Public `-Enabled True
Geçici olarak devre dışı bırakma:
Set-NetFirewallProfile `-Profile Domain,Private,Public `-Enabled False
Uyarı: Güvenlik duvarını tamamen kapatmak yalnızca laboratuvar ortamlarında önerilir.
5. Varsayılan Güvenlik İlkeleri
Varsayılan davranışı görüntüleme:
Get-NetFirewallProfile |Select-Object Name,DefaultInboundAction,DefaultOutboundAction
Tüm gelen trafiği engellemek:
Set-NetFirewallProfile `-DefaultInboundAction Block
Tüm giden trafiği engellemek:
Set-NetFirewallProfile `-DefaultOutboundAction Block
6. Güvenlik Duvarı Kurallarını Listeleme
Tüm kurallar:
Get-NetFirewallRule
Yalnızca etkin kurallar:
Get-NetFirewallRule |Where-Object Enabled -eq True
Belirli bir kural:
Get-NetFirewallRule -DisplayName "*Remote Desktop*"
7. Yeni Gelen (Inbound) Kural Oluşturma
RDP için izin verme:
New-NetFirewallRule `-DisplayName "RDP 3389" `-Direction Inbound `-Protocol TCP `-LocalPort 3389 `-Action Allow
SSH için:
New-NetFirewallRule `-DisplayName "SSH" `-Direction Inbound `-Protocol TCP `-LocalPort 22 `-Action Allow
8. Giden (Outbound) Kural Oluşturma
Belirli bir uygulamanın internet erişimini engelleme:
New-NetFirewallRule `-DisplayName "Chrome Block" `-Direction Outbound `-Program "C:\Program Files\Google\Chrome\Application\chrome.exe" `-Action Block
9. Port Açma ve Kapatma
HTTP (80):
New-NetFirewallRule `-DisplayName "HTTP" `-Direction Inbound `-Protocol TCP `-LocalPort 80 `-Action Allow
HTTPS (443):
New-NetFirewallRule `-DisplayName "HTTPS" `-Direction Inbound `-Protocol TCP `-LocalPort 443 `-Action Allow
Belirli bir kuralı silme:
Remove-NetFirewallRule `-DisplayName "HTTP"
10. Program Bazlı Kurallar
Not Defteri için izin:
New-NetFirewallRule `-DisplayName "Notepad" `-Program "C:\Windows\System32\notepad.exe" `-Direction Outbound `-Action Allow
11. IP Adresine Göre Filtreleme
Sadece belirli IP'den RDP:
New-NetFirewallRule `-DisplayName "RDP Office" `-Direction Inbound `-Protocol TCP `-LocalPort 3389 `-RemoteAddress 192.168.10.50 `-Action Allow
Belirli ağı engelleme:
New-NetFirewallRule `-DisplayName "Block Network" `-Direction Inbound `-RemoteAddress 10.0.0.0/24 `-Action Block
12. ICMP (Ping) Yönetimi
Ping'e izin verme:
New-NetFirewallRule `-DisplayName "ICMPv4 Echo" `-Protocol ICMPv4 `-IcmpType 8 `-Direction Inbound `-Action Allow
Ping'i engelleme:
Disable-NetFirewallRule `-DisplayName "ICMPv4 Echo"
13. Kuralları Etkinleştirme ve Devre Dışı Bırakma
Etkinleştirme:
Enable-NetFirewallRule `-DisplayName "RDP 3389"
Devre dışı bırakma:
Disable-NetFirewallRule `-DisplayName "RDP 3389"
14. Güvenlik Duvarı Günlükleri
Mevcut yapılandırma:
Get-NetFirewallProfile |Select-Object Name,LogAllowed,LogBlocked,LogFileName
Engellenen paketleri kaydetme:
Set-NetFirewallProfile `-LogBlocked True
İzin verilen paketleri kaydetme:
Set-NetFirewallProfile `-LogAllowed True
Varsayılan günlük dosyası:
C:\Windows\System32\LogFiles\Firewall\pfirewall.log
15. IPSec ve Connection Security Rules
IPSec kurallarını listeleme:
Get-NetIPsecRule
Kimlik doğrulama yöntemleri:
Get-NetIPsecMainModeCryptoSet
Bu özellikler sunucular arasında şifreli iletişim ve kimlik doğrulama için kullanılır.
16. Güvenlik Duvarını Yedekleme ve Geri Yükleme
Yapılandırmayı dışa aktarma:
netsh advfirewall export C:\Backup\Firewall.wfw
Geri yükleme:
netsh advfirewall import C:\Backup\Firewall.wfw
17. WinRM ve PowerShell Remoting
WinRM kuralları:
Get-NetFirewallRule `-DisplayGroup "Windows Remote Management"
Etkinleştirme:
Enable-PSRemoting -Force
Bu komut gerekli WinRM servislerini başlatır ve ilgili güvenlik duvarı kurallarını etkinleştirir.
18. Active Directory Ortamında Güvenlik Duvarı
Etki alanına katılmış bilgisayarlarda güvenlik duvarı kuralları çoğunlukla Group Policy (GPO) ile merkezi olarak yönetilir.
Örnek olarak belirli bir sunucuda RDP kuralını kontrol etmek:
Invoke-Command -ComputerName SRV01 {Get-NetFirewallRule -DisplayName "*Remote Desktop*"}
19. Güvenlik Denetimi
Engelleme kuralları:
Get-NetFirewallRule |Where-Object Action -eq Block
Kapalı kurallar:
Get-NetFirewallRule |Where-Object Enabled -eq False
Açık portlar:
Get-NetTCPConnection -State Listen
Belirli bir portun hangi işlem tarafından kullanıldığını bulma:
Get-NetTCPConnection -LocalPort 443 |Select-Object LocalAddress,LocalPort,State,OwningProcessGet-Process -Id <PID>
20. Gerçek Sistem Yönetimi Senaryoları
Senaryo 1: Yalnızca Yönetim Ağından RDP
New-NetFirewallRule `-DisplayName "Secure RDP" `-Direction Inbound `-Protocol TCP `-LocalPort 3389 `-RemoteAddress 192.168.100.0/24 `-Action Allow
Senaryo 2: FTP Sunucusunu Yayınlama
New-NetFirewallRule `-DisplayName "FTP" `-Direction Inbound `-Protocol TCP `-LocalPort 21 `-Action Allow
Senaryo 3: Belirli Bir IP'yi Engelleme
New-NetFirewallRule `-DisplayName "Block Host" `-Direction Inbound `-RemoteAddress 203.0.113.25 `-Action Block
Senaryo 4: Tüm Kuralları CSV Dosyasına Aktarma
Get-NetFirewallRule |Select-Object DisplayName,Direction,Action,Enabled |Export-Csv C:\Temp\FirewallRules.csv -NoTypeInformation
Senaryo 5: Belirli Bir Kuralı Silme
Remove-NetFirewallRule `-DisplayName "Block Host"
21. Siber Güvenlik Açısından En İyi Uygulamalar
Güvenlik duvarını hiçbir zaman kalıcı olarak devre dışı bırakmayın.
"Allow Any" (her şeye izin veren) kurallardan kaçının.
Gereksiz açık portları düzenli olarak kaldırın.
RDP (3389), SMB (445) ve WinRM (5985/5986) gibi yönetim servislerini yalnızca yönetim ağlarından erişilebilir yapın.
Her kural için açıklayıcı bir DisplayName ve mümkünse Description kullanın.
Güvenlik duvarı günlüklerini etkinleştirerek engellenen bağlantıları düzenli olarak analiz edin.
GPO ile merkezi yönetim uygulayın; istemciler üzerinde elle yapılan değişiklikleri sınırlandırın.
PowerShell betiklerini dijital olarak imzalayın ve yönetim işlemlerini kayıt altına alın.
Periyodik olarak kullanılmayan veya çakışan kuralları temizleyin.
Değişikliklerden önce güvenlik duvarı yapılandırmasını yedekleyin.
Sonuç
PowerShell ile Windows Güvenlik Duvarı yönetimi, tek tek makineleri yönetmenin ötesinde yüzlerce istemci ve sunucuda standart güvenlik ilkelerini uygulamanıza olanak tanır. NetSecurity modülü sayesinde güvenlik duvarı profilleri, kurallar, portlar, IP filtreleri, günlükleme ve IPSec yapılandırmaları komut satırından veya otomasyon betikleriyle merkezi olarak yönetilebilir.
Kurumsal ortamlarda bu yetenekler; güvenlik politikalarının tutarlı uygulanmasını, hızlı olay müdahalesini ve tekrarlayan işlemlerin otomatikleştirilmesini sağlar.
Yorumlar