macOS Güvenlik Duvarı (Firewall) Yönetimi

 

Hedef Sistem: macOS Sequoia
Seviye: Başlangıç → İleri → Sistem Yöneticisi
Hedef Kitle: Son kullanıcılar, Sistem Yöneticileri, Ağ Yöneticileri, Siber Güvenlik Uzmanları


İnternet bağlantısı olan her bilgisayar, dış dünyadan gelebilecek binlerce bağlantı isteğine maruz kalır.

Bu bağlantıların hangilerine izin verileceğini, hangilerinin engelleneceğini belirleyen mekanizma Firewall (Güvenlik Duvarı)'dır.

macOS uzun yıllardır oldukça gelişmiş bir güvenlik mimarisine sahiptir.

Firewall bunun yalnızca küçük bir parçasıdır.

Apple güvenlik mimarisi şu katmanlardan oluşur:

  • SIP (System Integrity Protection)

  • Gatekeeper

  • XProtect

  • MRT

  • App Sandbox

  • FileVault

  • TCC (Privacy)

  • Firewall

  • PF Packet Filter

  • Network Extension Framework

Bu makalede özellikle Firewall sistemini tamamen öğreneceğiz.


Firewall Nedir?

Firewall;

Bilgisayara gelen veya bilgisayardan çıkan ağ paketlerini kontrol eden güvenlik sistemidir.

Görevleri:

  • Yetkisiz erişimi engellemek

  • Zararlı yazılımların dış bağlantısını kesmek

  • Ağ saldırılarını azaltmak

  • Port taramalarını önlemek

  • Servisleri korumak


macOS'ta İki Ayrı Firewall Bulunur

Birçok kullanıcı yalnızca tek firewall olduğunu düşünür.

Aslında iki farklı yapı vardır.

FirewallSeviyesi
Application FirewallUygulama Seviyesi
PF FirewallPaket Seviyesi

1) Application Firewall

Grafik arayüzden yönetilir.

Kontrol ettiği şey:

"Hangi uygulama dışarıdan bağlantı kabul edebilir?"

Örneğin;

  • SSH Server

  • AirDrop

  • VNC

  • Screen Sharing

  • Apache

  • Python Server


2) PF Firewall

BSD tabanlı gerçek firewall'dır.

Linux'taki nftables veya iptables'a benzer.

Yapabilecekleri:

  • NAT

  • Port yönlendirme

  • Paket filtreleme

  • Trafik şekillendirme

  • IP engelleme

  • Stateful Inspection

  • Anti Spoofing

Profesyonel sistem yöneticileri PF kullanır.


Firewall Mimarisi

Internet
+---------------------+
| PF Firewall |
+---------------------+
Application Firewall
macOS Servisleri

Application Firewall Açma

Sistem Ayarları

Apple Menu
System Settings
Network
Firewall
Enable Firewall

Terminal ile Firewall Durumu

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

Örnek çıktı:

Firewall is enabled.

Firewall Açmak

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

Firewall Kapatmak

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

Durumu Kontrol Etmek

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

Tüm Ayarlar

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --help

Uygulama Bazlı İzinler

Örneğin;

Python Server

python3 -m http.server

İlk bağlantıda macOS soracaktır.

Allow Incoming Connections?

İzin verirseniz firewall'a eklenir.


Uygulama Ekleme

sudo socketfilterfw --add /Applications/Google\ Chrome.app

İzin Vermek

sudo socketfilterfw --unblockapp /Applications/Google\ Chrome.app

Engellemek

sudo socketfilterfw --blockapp /Applications/Google\ Chrome.app

Listeleme

sudo socketfilterfw --listapps

Örnek

1 :
Google Chrome
2 :
Visual Studio Code
3 :
Terminal

Gizli Mod (Stealth Mode)

En önemli özelliklerden biridir.

Bilgisayar:

  • Ping cevaplamaz

  • Port taramalarına tepki vermez

  • Ağ keşfini zorlaştırır

Aktif etme

sudo socketfilterfw --setstealthmode on

Durum

sudo socketfilterfw --getstealthmode

Signed Applications

Apple imzalı uygulamalar otomatik izin alabilir.

Kontrol

sudo socketfilterfw --getallowsigned

Aktif

sudo socketfilterfw --setallowsigned on

Signed Downloaded Apps

App Store dışı ama imzalı uygulamalar.

sudo socketfilterfw --setallowsignedapp on

Logging

Firewall loglarını açma

sudo socketfilterfw --setloggingmode on

Log seviyesi

sudo socketfilterfw --setloggingopt detail

Log Dosyası

/var/log/appfirewall.log

İzleme

tail -f /var/log/appfirewall.log

PF Firewall

Asıl güçlü firewall budur.

Durum

sudo pfctl -s info

Aktif Etmek

sudo pfctl -e

Devre Dışı

sudo pfctl -d

Yapılandırma Dosyası

/etc/pf.conf

Kontrol

sudo pfctl -nf /etc/pf.conf

Yüklemek

sudo pfctl -f /etc/pf.conf

Kuralları Görüntüleme

sudo pfctl -sr

NAT Kuralları

sudo pfctl -sn

Tablolar

sudo pfctl -t blacklist -T show

Tüm Durum

sudo pfctl -sa

Basit PF Kuralı

block in all
pass out all keep state

SSH'ye İzin

pass in proto tcp to any port 22

HTTP

pass in proto tcp to any port 80

HTTPS

pass in proto tcp to any port 443

Belirli IP Engelleme

block in from 192.168.1.50

Ülke Bazlı Engelleme

PF tabloları kullanılır.

table <blacklist> persist
block in quick from <blacklist>

Anti Spoofing

antispoof quick for en0

Stateful Firewall

pass out all keep state

Rate Limit

pass in proto tcp to port ssh \
keep state (max-src-conn-rate 5/60)

Port Forward

rdr pass on en0 proto tcp \
from any to any port 80 \
-> 192.168.1.100 port 8080

NAT

nat on en0 from 192.168.10.0/24 to any -> (en0)

IPv6

pass inet6

Loglama

block log all

Log Görüntüleme

sudo tcpdump -n -e -ttt -r /var/log/pflog

veya canlı izleme:

sudo tcpdump -n -e -ttt -i pflog0

Gerçek Sistem Yöneticisi Senaryoları

Senaryo 1

SSH dışında her şeyi kapat.

block all
pass proto tcp to port 22

Senaryo 2

Belirli IP engelle.

block from 10.0.0.5

Senaryo 3

Sadece ofis ağına izin ver.

pass from 192.168.1.0/24
block all

Senaryo 4

Ping engelle.

block in proto icmp

Senaryo 5

SSH brute force koruması.

table <ssh_abuse> persist
block quick from <ssh_abuse>
pass in proto tcp to port ssh \
keep state \
(max-src-conn-rate 5/60, overload <ssh_abuse> flush)

Senaryo 6

Web sunucusu.

pass proto tcp to port {80 443}

Senaryo 7

Belirli ülkeyi engelle.

table <geoip>
block from <geoip>

Senaryo 8

DNS Sunucusu

pass proto udp to port 53

Senaryo 9

FTP Sunucusu

pass proto tcp to port 21

Senaryo 10

SMTP Sunucusu

pass proto tcp to port 25

Güvenlik Önerileri

  • Application Firewall'u her zaman açık tutun.

  • Gereksiz uygulamalara gelen bağlantı izni vermeyin.

  • Stealth Mode'u etkinleştirin.

  • Paylaşım servislerini kullanmıyorsanız kapatın.

  • PF kurallarını değişiklikten önce doğrulayın (pfctl -nf /etc/pf.conf).

  • PF yapılandırmasının yedeğini alın.

  • Günlükleri düzenli olarak inceleyin.

  • SSH gibi kritik servisler için bağlantı oranı sınırları uygulayın.

  • Gereksiz açık portları düzenli olarak denetleyin (lsof -i, netstat, ss benzeri araçlar).

Sık Kullanılan Komutlar (Cheat Sheet)

İşlemKomut
Application Firewall durumunu göstersudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
Firewall'u açsudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
Firewall'u kapatsudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
Uygulamaları listelesudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
Stealth Mode'u açsudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
PF'yi etkinleştirsudo pfctl -e
PF'yi devre dışı bıraksudo pfctl -d
PF kurallarını göstersudo pfctl -sr
PF yapılandırmasını doğrulasudo pfctl -nf /etc/pf.conf
PF yapılandırmasını yeniden yüklesudo pfctl -f /etc/pf.conf
PF günlüklerini canlı izlesudo tcpdump -i pflog0

Sonuç

macOS, hem son kullanıcılar hem de sistem yöneticileri için iki katmanlı bir güvenlik duvarı mimarisi sunar. Application Firewall, uygulama bazında gelen bağlantıları kolayca yönetmenizi sağlarken, PF (Packet Filter) profesyonel düzeyde paket filtreleme, NAT, port yönlendirme ve gelişmiş güvenlik politikaları oluşturmanıza olanak tanır.

Bu iki yapının doğru kullanımı; gereksiz servislerin kapatılması, günlüklerin düzenli incelenmesi ve iyi tasarlanmış PF kurallarıyla birleştirildiğinde, macOS sistemlerinin ağ güvenliğini önemli ölçüde artırır.



macOS, Unix mimarisinin sunduğu kararlı ve katmanlı bir güvenlik yapısına sahiptir. Güncel macOS sürümlerinde (özellikle modern arayüze geçişle birlikte) ağ güvenliği yapılandırması hem son kullanıcı hem de sistem yöneticileri için optimize edilmiştir.
Grafik arayüz (GUI) yapılandırmasını, arka planda çalışan çift katmanlı mimariyi ve Terminal üzerinden ileri düzey yönetim tekniklerini adım adım inceleyeceğiz.

BÖLÜM 1: Grafik Arayüz (GUI) ile Temel Güvenlik Duvarı Yönetimi

Güncel macOS sürümlerinde Güvenlik Duvarı ayarları, eski sürümlerdeki yerinden taşınarak ayarlarının altına konumlandırılmıştır.

Güvenlik Duvarını Aktif Etme

  1. Sol üstteki Apple () Menüsü > Sistem Ayarları adımlarını takip edin.
  2. Sol kenar çubuğundan (Network) sekmesine tıklayın.
  3. Sağ tarafta listelenen seçeneklerden Güvenlik Duvarı (Firewall) bölümüne girin.
  4. Güvenlik Duvarı anahtarını Açık konuma getirin.
[Sistem Ayarları] ➔ [Ağ] ➔ [Güvenlik Duvarı] ➔ [Açık (Toggle)]

Gelişmiş Seçeneklerin Yapılandırılması

Açık konuma getirdikten hemen sonra altında beliren "Seçenekler..." (Options) butonuna tıklayarak aşağıdaki kritik ayarları yapılandırabilirsiniz:
  • Gelen tüm bağlantıları engelle: Bu seçenek işaretlendiğinde, iCloud, DHCP ve Bonjour gibi temel Apple servisleri dışındaki tüm harici giriş istekleri tamamen engellenir. Ağda tamamen görünmez olmak istediğiniz güvensiz ortak Wi-Fi alanlarında bu modu açmanız önerilir.
  • Yerleşik/İmzalı yazılımların gelen bağlantıları almasına otomatik olarak izin ver: Güvenilir geliştiriciler tarafından dijital olarak imzalanmış uygulamaların (Örn: Zoom, Slack) ağ trafiğini aksatmamak için otomatik izin tanır.
  • Gizli Modu (Stealth Mode) Etkinleştir: Aktif edildiğinde Mac'iniz, ağ taramalarına ve harici bilgisayarlardan gelen "Ping" (ICMP) isteklerine yanıt vermez. Bilgisayarınız ağdaki siber korsanlar için "yokmuş gibi" davranır.

BÖLÜM 2: macOS Çift Katmanlı Güvenlik Duvarı Mimarisi

macOS'te tek bir firewall değil, eşzamanlı çalışan iki bağımsız katman bulunur:
Özelliksocketfilterfw (Uygulama Katmanı)PF - Packet Filter (Ağ Katmanı)
OSI KatmanıKatman 7 (Uygulama)Katman 3 ve 4 (Ağ / Taşıma)
Yönetim TipiGrafik Arayüz (GUI) + TerminalSadece Terminal (Komut Satırı)
Filtreleme KriteriDijital İmzalar ve Uygulama İzinleriIP Adresleri, Portlar ve Protokoller
Varsayılan DurumKullanıcı isteğine bağlı (Açık/Kapalı)Pasif (Kurallarla tetiklenir)
Kritik Güncelleme Notu: Apple, modern macOS sürümlerinde güvenlik duvarı ayarlarının el ile değiştirilebilir .plist mülkiyet dosyalarında saklanması mimarisini sonlandırmıştır. Artık sistem yapılandırmaları doğrudan /usr/libexec/ApplicationFirewall/socketfilterfw ikili dosyası (binary) veya MDM (Mobil Cihaz Yönetimi) profilleri üzerinden kontrol edilmektedir.

BÖLÜM 3: Terminal ile İleri Düzey socketfilterfw Yönetimi

Sistem yöneticileri veya otomasyon betikleri yazan kullanıcılar için socketfilterfw komut satırı aracı hayati önem taşır. Tüm komutların başına yönetici yetkisi için sudo eklenmelidir.

Temel Durum Komutları

  • Güvenlik duvarı durumunu sorgulama:
    /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
    
  • Güvenlik duvarını komut satırından açma/kapatma:
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

Uygulama Tabanlı Kural Ekleme ve Kaldırma

Sisteme dışarıdan bağlantı kabul edecek yeni bir servis/uygulama tanımlamak için:
  • Uygulamaya izin verme:
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/UygulamaAdi.app
    
  • Uygulama iznini engelleme/engeli kaldırma:
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /Applications/UygulamaAdi.app
    

Ağda Gizlenme (Stealth Mode) Kontrolü

  • Gizli modu Terminal'den açma:
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
    

BÖLÜM 4: PF (Packet Filter) ile Derinlemesine Paket ve Port Bloklama

Grafik arayüzü port engellemeyi desteklemediği için belirli bir IP adresini ya da siber saldırı alan bir portu (Örn: Port 22 SSH, Port 80 HTTP) kapatmak adına PF mimarisi kullanılır.

1. Geçici ve Güvenli Kural Uygulama Yöntemi

Sistemin orijinal /etc/pf.conf dosyasını bozmamak için özel kuralları harici bir dosyada birleştirmek en profesyonel yaklaşımdır.
Adım 1: Masaüstünüzde ozel_kurallar.conf adında bir dosya oluşturun ve içine engellemek istediğiniz ağ senaryosunu yazın:
  • Senaryo A: Belirli bir tehlikeli IP'yi tamamen engellemek:
    block drop in from 198.51.100.45 to any
    
  • Senaryo B: Güvensiz bir portu harici tüm bağlantılara kapatmak:
    block drop in proto tcp from any to any port 21
    
Adım 2: Bu yeni kural dosyasını PF mekanizmasına yükleyin:
sudo pfctl -f ~/Desktop/ozel_kurallar.conf
Adım 3: PF sistemini tetikleyerek aktif hale getirin:
sudo pfctl -e

2. Sık Kullanılan Teşhis ve Kontrol Komutları

  • Çalışan aktif filtre kurallarını listeleme:
    sudo pfctl -s rules
    
  • Güvenlik duvarı istatistiklerini ve durumunu görüntüleme:
    sudo pfctl -s info
    
  • Ağ katmanı güvenlik duvarını tamamen kapatma (Disable):
    sudo pfctl -d
    
Önemli Hatırlatma: pfctl -f komutu ile yüklenen kurallar dinamiktir. Mac cihazınızı yeniden başlattığınızda bu kurallar sıfırlanır. Kuralların kalıcı olması isteniyorsa, satırların kalıcı olarak /etc/pf.conf dosyasının uygun bölümlerine eklenmesi gerekir.

BÖLÜM 5: Sorun Giderme (Troubleshooting) ve Yönetim İpuçları

  1. Yerel Ağ Bağlantı Kopmaları: Özellikle macOS güncellemelerinden sonra bazı üçüncü parti yazılımlar yerel ağda (Local Network) iletişim kuramayabilir. Bu durumda Sistem Ayarları > Gizlilik ve Güvenlik > Yerel Ağ adımlarını kontrol ederek ilgili uygulamaya izin verildiğinden emin olun.
  2. Kural Çakışmaları: Hem grafik arayüzde "Tüm bağlantıları engelle" seçeneğini aktif edip hem de PF üzerinden bir porta izin vermeye çalışırsanız uygulama katmanı (socketfilterfw) baskın çıkacak ve bağlantıyı kesecektir. İki katmanı birbiriyle çelişmeyecek şekilde planlayın.



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