macOS Güvenlik Duvarı (Firewall) Yönetimi
Hedef Sistem: macOS SequoiaSeviye: Başlangıç → İleri → Sistem YöneticisiHedef 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.
| Firewall | Seviyesi |
|---|---|
| Application Firewall | Uygulama Seviyesi |
| PF Firewall | Paket 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 Chrome2 :Visual Studio Code3 :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 allpass 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> persistblock 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 allpass 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/24block all
Senaryo 4
Ping engelle.
block in proto icmp
Senaryo 5
SSH brute force koruması.
table <ssh_abuse> persistblock 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,ssbenzeri araçlar).
Sık Kullanılan Komutlar (Cheat Sheet)
| İşlem | Komut |
|---|---|
| Application Firewall durumunu göster | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate |
| Firewall'u aç | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on |
| Firewall'u kapat | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off |
| Uygulamaları listele | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps |
| Stealth Mode'u aç | sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on |
| PF'yi etkinleştir | sudo pfctl -e |
| PF'yi devre dışı bırak | sudo pfctl -d |
| PF kurallarını göster | sudo pfctl -sr |
| PF yapılandırmasını doğrula | sudo pfctl -nf /etc/pf.conf |
| PF yapılandırmasını yeniden yükle | sudo pfctl -f /etc/pf.conf |
| PF günlüklerini canlı izle | sudo 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.
BÖLÜM 1: Grafik Arayüz (GUI) ile Temel Güvenlik Duvarı Yönetimi
Güvenlik Duvarını Aktif Etme
- Sol üstteki Apple () Menüsü > Sistem Ayarları adımlarını takip edin.
- Sol kenar çubuğundan Ağ (Network) sekmesine tıklayın.
- Sağ tarafta listelenen seçeneklerden Güvenlik Duvarı (Firewall) bölümüne girin.
- Güvenlik Duvarı anahtarını Açık konuma getirin.
Gelişmiş Seçeneklerin Yapılandırılması
- 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
| Özellik | socketfilterfw (Uygulama Katmanı) | PF - Packet Filter (Ağ Katmanı) |
|---|---|---|
| OSI Katmanı | Katman 7 (Uygulama) | Katman 3 ve 4 (Ağ / Taşıma) |
| Yönetim Tipi | Grafik Arayüz (GUI) + Terminal | Sadece Terminal (Komut Satırı) |
| Filtreleme Kriteri | Dijital İmzalar ve Uygulama İzinleri | IP Adresleri, Portlar ve Protokoller |
| Varsayılan Durum | Kullanı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.plistmülkiyet dosyalarında saklanması mimarisini sonlandırmıştır. Artık sistem yapılandırmaları doğrudan/usr/libexec/ApplicationFirewall/socketfilterfwikili dosyası (binary) veya MDM (Mobil Cihaz Yönetimi) profilleri üzerinden kontrol edilmektedir.
BÖLÜM 3: Terminal ile İleri Düzey socketfilterfw Yönetimi
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:
- Güvenlik duvarını komut satırından açma/kapatma:
Uygulama Tabanlı Kural Ekleme ve Kaldırma
- Uygulamaya izin verme:
- Uygulama iznini engelleme/engeli kaldırma:
Ağda Gizlenme (Stealth Mode) Kontrolü
- Gizli modu Terminal'den açma:
BÖLÜM 4: PF (Packet Filter) ile Derinlemesine Paket ve Port Bloklama
PF mimarisi kullanılır.1. Geçici ve Güvenli Kural Uygulama Yöntemi
/etc/pf.conf dosyasını bozmamak için özel kuralları harici bir dosyada birleştirmek en profesyonel yaklaşımdır.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:
- Senaryo B: Güvensiz bir portu harici tüm bağlantılara kapatmak:
2. Sık Kullanılan Teşhis ve Kontrol Komutları
- Çalışan aktif filtre kurallarını listeleme:
- Güvenlik duvarı istatistiklerini ve durumunu görüntüleme:
- Ağ katmanı güvenlik duvarını tamamen kapatma (Disable):
Önemli Hatırlatma:pfctl -fkomutu 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.confdosyasının uygun bölümlerine eklenmesi gerekir.
BÖLÜM 5: Sorun Giderme (Troubleshooting) ve Yönetim İpuçları
- 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.
- 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