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-NetFirewallProfile
Set-NetFirewallProfile
Get-NetFirewallRule
New-NetFirewallRule
Set-NetFirewallRule
Enable-NetFirewallRule
Disable-NetFirewallRule
Remove-NetFirewallRule
Get-NetFirewallPortFilter
Get-NetFirewallAddressFilter
Get-NetFirewallApplicationFilter
Get-NetFirewallServiceFilter
Export-WindowsFirewallRules

Güvenlik Duvarı Durumu

Get-NetFirewallProfile

Örnek

Name : Domain
Enabled : True
DefaultInboundAction : Block
DefaultOutboundAction : 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 Block
Private Block
Public 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,3389
foreach ($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 SRV01
New-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ı DisplayName değ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

  1. Windows Güvenlik Duvarı Mimarisi

  2. PowerShell Güvenlik Duvarı Modülü

  3. Güvenlik Duvarı Profilleri

  4. Güvenlik Duvarı Durumunu Yönetme

  5. Güvenlik Duvarı Kuralları

  6. Gelen (Inbound) Kurallar

  7. Giden (Outbound) Kurallar

  8. Port Açma ve Kapatma

  9. Program Bazlı Kurallar

  10. IP Adresine Göre Filtreleme

  11. ICMP (Ping) Yönetimi

  12. Günlükleme (Logging)

  13. IPSec ve Connection Security Rules

  14. Güvenlik Duvarını Yedekleme ve Geri Yükleme

  15. PowerShell Remoting ve WinRM

  16. Active Directory Ortamında Güvenlik Duvarı

  17. Güvenlik Denetimi ve Analiz

  18. Gerçek Sistem Yönetimi Senaryoları

  19. 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:

ProfilAçıklama
DomainEtki alanına bağlı ağlar
PrivateEv veya güvenilir ağlar
PublicOrtak 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,OwningProcess
Get-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

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu