Celil Uyanikoglu

Windows Güvenlik Duvarı Kuralları Nasıl Oluşturulur?

C Celil Uyanikoglu · 11 Şub 2026 · 11 dk okuma

Windows Güvenlik Duvarı Nedir ve Neden Yapılandırılmalı?

Windows Güvenlik Duvarı, işletim sisteminizle birlikte gelen ağ trafiği filtreleme aracıdır. Varsayılan kurallarda eksiklikler olabilir veya özel uygulamalarınız için manuel kural oluşturmanız gerekebilir.

Doğru yapılandırılmış güvenlik duvarı kuralları, sadece belirlediğiniz portlardan ve IP adreslerinden gelen trafiği kabul eder. Yanlış yapılandırma ise uygulamalarınızın çalışmasını engelleyebilir veya gereksiz portları açık bırakabilir.

Windows Güvenlik Duvarı Kural Türleri

Gelen Bağlantı (Inbound) Kuralları

Dışarıdan bilgisayarınıza yapılan bağlantıları kontrol eder. Web sunucusu, FTP servisi veya uzak masaüstü gibi hizmetler için bu tür kurallar gerekir. Varsayılan olarak Windows tüm gelen trafiği engeller, açıkça izin vermediğiniz sürece.

Giden Bağlantı (Outbound) Kuralları

Bilgisayarınızdan dışarıya yapılan bağlantıları düzenler. Belirli uygulamaların internete erişimini engellemek veya sadece belirli sunuculara bağlanmasını sağlamak için kullanılır. Varsayılan olarak tüm giden trafik izinlidir.

Bağlantı Güvenliği Kuralları

IPsec kullanarak iki bilgisayar arasında şifrelenmiş bağlantı oluşturur. Ağdaki belirli bilgisayarlar arasında zorunlu kimlik doğrulama gerektiğinde kullanılır.

 

Güvenlik duvarı kuralı oluşturma adımlarını gösteren bir görsel

 

Grafik Arayüz ile Kural Oluşturma

Windows Defender Güvenlik Duvarı Yönetim Panelini Açma

Windows tuşuna basıp "wf.msc" yazın ve Enter'a basın. Alternatif olarak Denetim Masası > Sistem ve Güvenlik > Windows Defender Güvenlik Duvarı > Gelişmiş ayarlar yolunu izleyebilirsiniz.

Açılan pencerede sol tarafta "Gelen Kuralları" veya "Giden Kuralları" seçenekleri görünür. Orta kısımda mevcut kuralların listesi, sağ tarafta ise eylem menüsü bulunur.

Porta Göre Gelen Bağlantı Kuralı Oluşturma

Sol menüden "Gelen Kuralları"nı seçin. Sağ tarafta "Yeni Kural..." seçeneğine tıklayın. Açılan sihirbazda "Bağlantı Noktası" seçeneğini işaretleyip İleri'ye tıklayın.

"TCP" veya "UDP" protokolünü seçin. "Belirli yerel bağlantı noktaları" seçeneğini işaretleyip port numarasını yazın. Örneğin web sunucusu için 80, HTTPS için 443, RDP için 3389 gibi. Birden fazla port için virgülle ayırın: 80,443,8080.

Sonraki adımda "Bağlantıya izin ver" seçeneğini işaretleyin. "Bağlantıya izin ver, güvenliyse" seçeneği IPsec doğrulaması gerektirir. "Bağlantıyı engelle" seçeneği o porta gelen trafiği reddeder.

Kuralın uygulanacağı profilleri seçin. Etki Alanı (domain ağlarında), Özel (ev/iş ağlarında), Genel (kafelerdeki gibi güvenilmeyen ağlarda). Genellikle üçünü de işaretleyebilirsiniz.

Son adımda kurala tanımlayıcı bir isim verin: "Apache Web Sunucusu HTTP" gibi. Açıklama kısmına port numarasını ve amacını yazabilirsiniz.

Uygulamaya Göre Kural Oluşturma

Yeni Kural sihirbazında "Program" seçeneğini işaretleyin. "Bu program yolu" seçeneğini işaretleyip Gözat butonuyla exe dosyasını seçin. Örnek yol: C:\Program Files\VideoLAN\VLC\vlc.exe

"Tüm programlar" seçeneğini işaretlerseniz kural tüm uygulamalara uygulanır, bu güvenlik açısından önerilmez. Her uygulama için ayrı kural oluşturun.

İzin ver veya engelle seçeneğini belirleyin. Örneğin bir oyunun internete bağlanmasını engellemek istiyorsanız "Bağlantıyı engelle"yi seçin.

IP Adresine Göre Kural Oluşturma

Port veya program kuralını oluşturduktan sonra özelliklerini açın. "Kapsam" sekmesine gidin. Burada yerel ve uzak IP adreslerini belirtebilirsiniz.

"Uzak IP adresi" bölümünde "Bu IP adresleri" seçeneğini işaretleyin. Ekle butonuna tıklayın. Tek bir IP (örn: 192.168.1.100), IP aralığı (192.168.1.50-192.168.1.150) veya alt ağ (192.168.1.0/24) girebilirsiniz.

Örneğin sadece belirli bir sunucudan RDP bağlantısı kabul etmek için 3389 portu için kural oluşturun ve uzak IP olarak sunucunun IP adresini ekleyin.

 

Windows ayarları ve güvenlik duvarı yapılandırma ekranını temsil eden görsel

 

PowerShell ile Kural Oluşturma

Temel Port Kuralı Komutları

PowerShell'i yönetici olarak açın. New-NetFirewallRule cmdlet'ini kullanarak kural oluşturabilirsiniz:

New-NetFirewallRule -DisplayName "HTTP Server" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow

Bu komut 80 portuna gelen TCP trafiğine izin verir. Birden fazla port için:

New-NetFirewallRule -DisplayName "Web Services" -Direction Inbound -Protocol TCP -LocalPort 80,443,8080 -Action Allow

Uygulama Bazlı Kural Oluşturma

Belirli bir exe dosyası için kural:

New-NetFirewallRule -DisplayName "Custom App" -Direction Outbound -Program "C:\Apps\myapp.exe" -Action Block

Bu komut myapp.exe uygulamasının dışarı bağlantı yapmasını engeller. Herhangi bir port belirtmediğiniz için tüm portları kapsar.

IP Kısıtlamalı Kural Oluşturma

Sadece belirli IP adreslerinden bağlantı kabul eden kural:

New-NetFirewallRule -DisplayName "SSH Only From Admin" -Direction Inbound -Protocol TCP -LocalPort 22 -RemoteAddress 192.168.1.50 -Action Allow

Birden fazla IP için virgülle ayırın:

New-NetFirewallRule -DisplayName "Database Access" -Direction Inbound -Protocol TCP -LocalPort 3306 -RemoteAddress 192.168.1.50,192.168.1.51,192.168.1.52 -Action Allow

Profil Belirtme

Kuralın hangi ağ profillerinde çalışacağını -Profile parametresiyle belirleyin:

New-NetFirewallRule -DisplayName "RDP Home Only" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow -Profile Private

Domain, Private ve Public değerlerini kullanabilirsiniz. Birden fazla için virgülle ayırın: -Profile Domain,Private

Mevcut Kuralları Listeleme ve Silme

Tüm kuralları listelemek için:

Get-NetFirewallRule | Select-Object DisplayName,Enabled,Direction,Action

Belirli bir kurala göre filtreleme:

Get-NetFirewallRule -DisplayName "HTTP Server"

Kural silmek için:

Remove-NetFirewallRule -DisplayName "HTTP Server"

Komut Satırı (Netsh) ile Kural Yönetimi

Netsh Firewall Komutları

Komut İstemi'ni yönetici olarak açın. Netsh advfirewall komutuyla güvenlik duvarı ayarlarını yönetebilirsiniz:

netsh advfirewall firewall add rule name="Web Server" dir=in action=allow protocol=TCP localport=80

Giden trafik için dir=out parametresini kullanın:

netsh advfirewall firewall add rule name="Block Telemetry" dir=out action=block remoteip=131.107.0.0/16

Program Bazlı Netsh Kuralı

netsh advfirewall firewall add rule name="MyApp" dir=in action=allow program="C:\Program Files\MyApp\app.exe"

Kuralları Dışa ve İçe Aktarma

Tüm güvenlik duvarı yapılandırmasını dışa aktarma:

netsh advfirewall export "C:\backup\firewall-rules.wfw"

Kaydedilen kuralları içe aktarma:

netsh advfirewall import "C:\backup\firewall-rules.wfw"

Bu özellik birden fazla bilgisayarda aynı kuralları uygulamak için kullanışlıdır.

Dikkat Edilmesi Gerekenler

Varsayılan Kuralları Silmeyin

Windows ile gelen varsayılan kurallar kritik servisler için gereklidir. "Çekirdek Ağ İletişimi", "Dosya ve Yazıcı Paylaşımı" gibi kuralları silmek sistem işlevlerini bozabilir. Özel kurallarınızı ekleyin ama varsayılanları değiştirirken dikkatli olun.

Kural Sıralaması Önemlidir

Güvenlik duvarı kuralları yukarıdan aşağıya değerlendirilir. Engelleme kuralı izin verme kuralından önce gelirse engelleme uygulanır. Çelişen kurallarınız varsa sıralamayı kontrol edin.

Test Etmeden Uygulamayın

Özellikle uzak sunucularda kural değişikliği yaparken dikkatli olun. RDP portunu engelleyen bir kural oluşturursanız sunucuya erişiminizi kaybedebilirsiniz. Her zaman lokal erişiminiz olduğundan veya yönetim konsolunuz olduğundan emin olun.

Günlük Tutma

Güvenlik duvarının engellediği bağlantıları görmek için günlük tutmayı etkinleştirin. wf.msc'de sağ üst köşedeki "Özellikler"e tıklayın. Her profil için ayrı ayrı "Engellenen bağlantıları günlüğe kaydet" seçeneğini Evet yapın.

Günlük dosyası varsayılan olarak C:\Windows\System32\LogFiles\Firewall\pfirewall.log yolunda oluşturulur. Bu dosyadan hangi IP ve portların engellendiğini görebilirsiniz.

Kural İsimlendirme Standardı

Kurallara anlamlı isimler verin. "Kural 1", "Yeni Kural" gibi isimler aylar sonra ne işe yaradığını anlamanızı zorlaştırır. "Apache-HTTP-80-Inbound" gibi protokol, port ve yönü içeren isimler kullanın.

Gelişmiş Senaryo Örnekleri

Sadece Belirli Saatlerde Erişim İzni

PowerShell ile zaman bazlı kural doğrudan oluşturamazsınız ancak Görev Zamanlayıcı ile kuralları etkinleştirip devre dışı bırakabilirsiniz:

Set-NetFirewallRule -DisplayName "After Hours Access" -Enabled False

Bu komutu sabah 8'de çalıştıracak bir görev, akşam 6'da True yapacak başka bir görev oluşturun.

Coğrafi IP Engelleme

Belirli ülkelere ait IP bloklarını engellemek için büyük IP aralıkları kullanabilirsiniz. Örneğin Çin IP bloklarını engellemek için:

New-NetFirewallRule -DisplayName "Block China IPs" -Direction Inbound -RemoteAddress 1.0.1.0/24,1.0.2.0/23,1.0.8.0/21 -Action Block

IP blok listelerini RIPE, ARIN gibi kaynaklardan edinebilirsiniz. Ancak bu listeler çok büyük olduğunda performans etkilenebilir.

Port Yönlendirme ve NAT Kuralları

Windows Güvenlik Duvarı doğrudan port forwarding yapmaz. Bunun için netsh interface portproxy komutlarını kullanmanız gerekir:

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.1.100

Bu komut 8080 portuna gelen istekleri 192.168.1.100:80 adresine yönlendirir. Ardından 8080 portu için güvenlik duvarı kuralı oluşturmanız gerekir.

Sorun Giderme

Kural Çalışmıyor

Kuralın etkin olduğunu doğrulayın. wf.msc'de kural yanında yeşil onay işareti varsa etkindir, gri varsa devre dışıdır. Kural üzerine çift tıklayıp "Genel" sekmesinden "Etkin" seçeneğini kontrol edin.

Profil eşleşmesini kontrol edin. Kural "Etki Alanı" profili için oluşturulmuşsa ama bilgisayar "Genel" ağa bağlıysa kural uygulanmaz. Hangi profilde olduğunuzu görmek için Denetim Masası > Ağ ve İnternet > Ağ ve Paylaşım Merkezi'ne bakın.

Kural Çakışmaları

Aynı port veya uygulama için hem izin veren hem engelleyen kural varsa engelleme önceliklidir. Çakışan kuralları bulmak için:

Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 80}

Bu komut 80 portunu etkileyen tüm kuralları listeler.

Performans Sorunları

Çok fazla kural performansı düşürebilir. Özellikle her bağlantı için değerlendirilen binlerce IP adresi içeren kurallar. Gereksiz kuralları silin veya birleştirin.

Kullanılmayan kuralları devre dışı bırakın:

Set-NetFirewallRule -DisplayName "Old Rule" -Enabled False

Özet

Windows Güvenlik Duvarı kuralları oluştururken grafik arayüz (wf.msc), PowerShell (New-NetFirewallRule) veya komut satırı (netsh advfirewall) yöntemlerinden birini kullanabilirsiniz. PowerShell toplu işlemler ve otomasyon için en esnektir.

Her kuralda yön (Inbound/Outbound), protokol (TCP/UDP), port numarası, IP kısıtlamaları ve profil ayarlarını doğru yapılandırın. Kural isimlendirme standardına uyun ve değişiklikler öncesi mevcut yapılandırmayı yedekleyin.

Üretim ortamlarında değişiklik yapmadan önce test edin. Günlük tutmayı etkinleştirerek engellenen bağlantıları izleyin ve kurallarınızı buna göre optimize edin. Varsayılan sistem kurallarını değiştirirken ekstra dikkatli olun.

Sıkça Sorulan Sorular

Oluşturduğum kural neden çalışmıyor?

Kuralın etkin olduğunu ve doğru ağ profiline (Domain/Private/Public) uygulandığını kontrol edin. Ayrıca aynı port veya uygulama için çelişen başka bir kural olup olmadığını Get-NetFirewallRule komutuyla kontrol edin. Windows hizmetlerinin (Windows Firewall servisi) çalıştığından emin olun.

Tüm giden trafiği nasıl engellerim?

wf.msc'de "Giden Kuralları"na sağ tıklayıp Özellikler'i seçin. "Giden bağlantılar" için "Engelle" seçeneğini işaretleyin. Ardından izin vermek istediğiniz her uygulama veya port için açıkça izin kuralları oluşturun. Bu yaklaşım güvenli ama yönetimi zordur.

Kuralları başka bir bilgisayara nasıl kopyalarım?

Tüm kuralları dışa aktarmak için komut satırında: netsh advfirewall export "C:\rules.wfw" komutunu çalıştırın. Dosyayı hedef bilgisayara kopyalayıp netsh advfirewall import "C:\rules.wfw" ile içe aktarın. Alternatif olarak Grup İlkesi kullanarak domain ortamında kuralları dağıtabilirsiniz.

Belirli bir IP aralığını tamamen engellemek için ne yapmalıyım?

Yeni bir engelleme kuralı oluşturun: New-NetFirewallRule -DisplayName "Block IP Range" -Direction Inbound -RemoteAddress 203.0.113.0/24 -Action Block komutuyla. Hem Inbound hem Outbound için ayrı kurallar oluşturmanız gerekir. Birden fazla alt ağ için virgülle ayırarak ekleyebilirsiniz.

PowerShell ile oluşturduğum kuralı grafik arayüzde göremiyorum, neden?

wf.msc'yi kapatıp tekrar açın veya F5 ile yenileyin. Kurallar hemen görünmelidir. Görünmüyorsa Get-NetFirewallRule -DisplayName "Kural Adı" komutuyla kuralın gerçekten oluşturulduğunu doğrulayın. DisplayName parametresindeki isim wf.msc'de göründüğü isimdir.

0 Yorum

Yorum Yaz