Donanım Firewall ile Yazılım Firewall Arasındaki Farklar
Yıllarca hem küçük ölçekli işletmelerde hem de büyük veri merkezlerinde güvenlik mimarileri kurdum. Ve şunu rahatlıkla söyleyebilirim: “Donanım mı, yazılım mı?” sorusu, network güvenliğinde en çok tartışılan ama en az doğru yanıtlanan sorulardan biri. Çoğu zaman bu soruya verilen yanıt, teknik gereksinimlerden çok bütçeye ya da alışkanlıklara göre şekilleniyor. Halbuki bu iki yaklaşım birbirinin rakibi değil, tamamlayıcısı.
Temelden Başlayalım: Ne Nedir?
Donanım firewall, fiziksel bir cihazın üzerine işlenmiş, genellikle özel bir işletim sistemi ve donanım hızlandırması kullanan güvenlik çözümleridir. Cisco ASA, Fortinet FortiGate, Palo Alto Networks cihazları, Juniper SRX serisi bunların en bilinen örnekleri. Bu cihazlar ağın fiziksel giriş/çıkış noktasına yerleştirilir ve tüm trafiği donanım seviyesinde işler.
Yazılım firewall ise bir işletim sistemi üzerinde çalışan, mevcut donanımın CPU ve bellek kaynaklarını kullanan güvenlik uygulamalarıdır. Linux’taki iptables, nftables, firewalld, Windows Defender Firewall, ya da pfSense/OPNsense gibi router işletim sistemleri bu kategoriye girer. Sanallaştırma ortamlarında konuşlandırılan “sanal appliance”lar da özünde yazılım firewallıdır.
Buradaki temel ayrım şu: Donanım firewall, işi için özel üretilmiş bir cihazdır. Yazılım firewall ise genel amaçlı bir platform üzerinde çalışır.
Performans: Rakamlar Yalan Söylemez
Donanım firewalların en güçlü tarafı performanstır. ASIC (Application-Specific Integrated Circuit) ya da FPGA tabanlı işleme birimleri sayesinde paket inceleme işlemi, genel amaçlı CPU’ya kıyasla çok daha hızlı yapılır.
Örneğin, bir FortiGate 200F cihazı saniyede 20 milyar bit (20 Gbps) firewall throughput sunarken, aynı para değerinde bir sunucu üzerine kurulmuş pfSense, yoğun trafik altında bu rakama yaklaşmakta zorlanabilir. Özellikle deep packet inspection (DPI) ve SSL/TLS inspection devreye girdiğinde donanımın farkı belirginleşir.
Ama burada önemli bir nokta var: Çoğu orta ölçekli kurum için bu fark pratikte hiç hissedilmez. 1 Gbps internet bağlantısı olan bir şirkette, iyi yapılandırılmış bir yazılım firewall fazlasıyla yeterli olabilir.
Linux üzerinde basit bir iptables kuralıyla ne kadar throughput alabileceğinizi test edebilirsiniz:
# iperf3 ile throughput testi - sunucu tarafı
iperf3 -s -p 5201
# istemci tarafından test
iperf3 -c 192.168.1.1 -p 5201 -t 30 -P 4
# nftables ile basit bir forward kuralı ve sayacı
nft add table ip filter
nft add chain ip filter forward { type filter hook forward priority 0 ; }
nft add rule ip filter forward counter accept
nft list ruleset | grep counter
Bu test, yazılım firewall’ınızın gerçek ortamdaki performansını ölçmenin ilk adımıdır. Kurallar eklendikçe bu rakamın nasıl değiştiğini izlemek önemli.
Yönetim ve Yapılandırma Kolaylığı
Burada yazılım firewall lehine konuşmak gerekiyor. Özellikle Linux tabanlı çözümler, betik yazma ve otomasyon açısından son derece güçlüdür.
# iptables kurallarını yedekleme
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
# Yedekten geri yükleme
iptables-restore < /etc/iptables/rules.v4
# Belirli bir IP'den gelen SSH trafiğine izin ver, diğerlerini engelle
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
# Kural listesini satır numaralarıyla göster
iptables -L INPUT -n -v --line-numbers
Ansible, Terraform ya da basit shell scriptleri kullanarak bu kuralları onlarca sunucuya dakikalar içinde dağıtabilirsiniz. Donanım firewall’da aynı şeyi yapmak için ya cihazın API’sini öğrenmeniz ya da vendor’a özgü bir otomasyon aracı kullanmanız gerekir.
# firewalld ile zone bazlı yönetim (RHEL/CentOS için)
# Mevcut zone'ları listele
firewall-cmd --get-active-zones
# HTTP ve HTTPS'e izin ver
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
# Özel port ekle
firewall-cmd --zone=public --add-port=8443/tcp --permanent
# Değişiklikleri uygula
firewall-cmd --reload
# Tüm kuralları listele
firewall-cmd --zone=public --list-all
Donanım firewallardaki GUI arayüzleri başlangıç için cazip görünse de, büyük ölçekli değişikliklerde scripting eksikliği acı verici olabiliyor.
Güvenlik Açısından Gerçekçi Bir Değerlendirme
“Donanım daha güvenlidir” klişesini çok duydum. Bu doğru, ama tam değil.
Donanım firewall’ların avantajları:
- Ayrı bir attack surface: İşletim sistemi saldırıları, kernel exploitleri hedef sunucuyu etkilemez
- Tamper-evident donanım: Fiziksel müdahale daha zordur
- Dedicated işleme: CPU kaynaklarını sunucuyla paylaşmaz, kaynak tüketimi saldırıları (DoS) daha az etkiler
- Vendor security desteği: Güvenlik güncellemeleri vendor tarafından test edilerek yayımlanır
Öte yandan yazılım firewall’ların güvenlik açısından göz ardı edilemeyecek yanları da var:
- Açık kaynak denetimi: iptables, nftables gibi araçlar binlerce gözün incelemesinden geçmiştir
- Hızlı yama: Bir CVE yayımlandığında, Linux kernel güncellemesi vendor approval beklemeksizin uygulanabilir
- Ücretsiz güvenlik araçları entegrasyonu: fail2ban, Suricata, Snort gibi araçlarla entegrasyon çok daha kolaydır
# fail2ban ile SSH brute force koruması
# /etc/fail2ban/jail.local dosyasına ekleyin:
cat >> /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
EOF
systemctl restart fail2ban
# Banlı IP'leri kontrol et
fail2ban-client status sshd
# Belirli bir IP'yi manuel ban'la
fail2ban-client set sshd banip 203.0.113.42
Burada bir gerçek dünya senaryosuna değineyim: 2021 yılında bir kurumun ağında, pahalı bir donanım firewall cihazında keşfedilen kritik bir zafiyet (CVE-2021-20016 SonicWall SMA) tüm sistemi tehlikeye atmıştı. Vendor’ın yamasını beklemek zorunda kaldılar. Açık kaynak çözümlerde bu bekleme süresi çok daha kısadır.
Maliyet Analizi: Sadece Fatura Değil
Donanım firewall satın alma maliyeti yüksektir. Orta ölçekli bir kuruma hitap eden bir FortiGate ya da Palo Alto cihazı, lisans ücretleriyle birlikte onlarca hatta yüz binlerce dolara çıkabilir. Ama bu hesabı sadece donanım faturasıyla yapmak yanıltıcıdır.
TCO (Total Cost of Ownership) hesabında dikkate almanız gerekenler:
Donanım firewall için:
- İlk satın alma maliyeti: Cihaz + kurulum
- Lisans ücretleri: Yıllık bakım, IPS signature güncellemeleri, URL filtering lisansları
- Donanım refresh: 5-7 yılda bir cihaz yenileme
- Uzman ihtiyacı: Vendor sertifikalı personel maliyeti
Yazılım firewall için:
- Donanım maliyeti: Eğer bare-metal’sa sunucu, sanalsa VM kaynakları
- Lisans maliyeti: Çoğu açık kaynak çözümde sıfır, ticari sürümlerde düşük
- İşletme maliyeti: Daha fazla iç kaynak gerektirebilir
- Esneklik: Bulut ortamlarında scale-out kolaylığı
Küçük bir ofis için pfSense kurulu eski bir mini PC, yıllık lisans maliyeti olmadan mükemmel koruma sağlayabilir.
# pfSense/OPNsense üzerinden komut satırıyla temel durum kontrolü
# (SSH ile bağlandıktan sonra)
pfctl -s info # PF durum bilgisi
pfctl -s rules # Aktif kurallar
pfctl -s nat # NAT kuralları
netstat -rn # Routing tablosu
systat -ifstat 1 # Interface istatistikleri
Katmanlı Güvenlik: İkisini Birlikte Kullanmak
Pratikte “birini seç” yaklaşımı nadiren doğru cevaptır. Kurumsal ortamlarda defence-in-depth (derinlemesine savunma) mimarisi her iki yaklaşımı birleştirir.
Tipik bir mimari şöyle görünebilir:
- İnternet -> Donanım Firewall (Perimeter) -> DMZ -> Yazılım Firewall (Host-based) -> İç Ağ
Bu mimaride donanım firewall dış tehditlere karşı ilk barikatı oluştururken, her sunucudaki host-based yazılım firewall lateral movement’i (ağ içi yayılma) engeller.
# Sunucu seviyesinde nftables ile host-based firewall
# /etc/nftables.conf
cat > /etc/nftables.conf << 'EOF'
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Loopback trafiğe izin ver
iif lo accept
# Kurulu bağlantılara izin ver
ct state established,related accept
# ICMP ping'e izin ver
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# Sadece belirli subnet'ten SSH
ip saddr 10.10.0.0/24 tcp dport 22 accept
# Web trafiği
tcp dport { 80, 443 } accept
# Log ve drop
log prefix "nftables-drop: " drop
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
EOF
# Yapılandırmayı test et
nft -c -f /etc/nftables.conf
# Uygula ve servis olarak başlat
systemctl enable --now nftables
Bu yaklaşımın değeri şuradan geliyor: Saldırgan perimeter firewall’ı bir şekilde aşsa bile, her sunucunun kendi savunma mekanizması devreye girer. Zero-trust mimarisinin temeli de budur zaten.
Sanallaştırma ve Bulut Ortamları: Oyunun Kuralları Değişti
Konteyner ve bulut teknolojilerinin yaygınlaşmasıyla donanım firewall konsepti yeniden sorgulanmaya başlandı. AWS Security Groups, Azure Network Security Groups, Kubernetes Network Policies bunların hepsi yazılım tabanlı güvenlik kontrolleridir ve çoğu kurumun iş yükü artık bu ortamlarda.
# Kubernetes'te NetworkPolicy ile pod seviyesinde firewall
cat << 'EOF' | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: api-network-policy
namespace: production
spec:
podSelector:
matchLabels:
app: backend-api
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
egress:
- to:
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 5432
EOF
# Policy'i kontrol et
kubectl get networkpolicy -n production
kubectl describe networkpolicy api-network-policy -n production
Bulut ortamlarında donanım firewall kurmanın fiziksel bir anlamı yoktur. Ama birçok vendor bu boşluğu virtual firewall appliance‘larla (sanal donanım firewall) doldurmaya çalışıyor. Palo Alto VM-Series, Fortinet FortiGate-VM bunların örnekleri.
# AWS CLI ile Security Group yönetimi
# Yeni security group oluştur
aws ec2 create-security-group
--group-name "WebServer-SG"
--description "Web sunucusu guvenlik grubu"
--vpc-id vpc-12345678
# HTTP ve HTTPS'e izin ver
aws ec2 authorize-security-group-ingress
--group-id sg-12345678
--protocol tcp
--port 80
--cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress
--group-id sg-12345678
--protocol tcp
--port 443
--cidr 0.0.0.0/0
# SSH'yi sadece belirli IP'den al
aws ec2 authorize-security-group-ingress
--group-id sg-12345678
--protocol tcp
--port 22
--cidr 203.0.113.10/32
# Mevcut kuralları listele
aws ec2 describe-security-groups --group-ids sg-12345678
Hangi Durumda Ne Tercih Edilmeli?
Bu soruya “duruma göre değişir” demek kolay ama fazla muğlak. Daha net bir çerçeve çizeyim.
Donanım firewall tercih edin eğer:
- Fiziksel veri merkeziniz varsa ve tüm trafiğin tek bir geçitten akması gerekiyorsa
- 10 Gbps üzeri trafik hacimleriniz varsa
- Compliance gereksinimleriniz (PCI-DSS, HIPAA vb.) belirli vendor sertifikasyonlarını zorunlu kılıyorsa
- Network ekibiniz vendor’a özgü sertifikasyonlara sahipse
- Yönetim kolaylığı ve GUI önceliğinizse
Yazılım firewall tercih edin eğer:
- Bulut veya sanallaştırılmış ortamlarda çalışıyorsanız
- Otomasyon ve IaC (Infrastructure as Code) odaklı bir yaklaşımınız varsa
- Bütçe kısıtlarınız varsa ve açık kaynak çözümleri değerlendiriyorsanız
- Host-based koruma katmanı oluşturmak istiyorsanız
- Hızlı kural değişikliği ve CI/CD entegrasyonu ihtiyacınız varsa
# Sistemdeki aktif firewall durumunu kontrol et
# UFW (Ubuntu/Debian)
ufw status verbose
# firewalld (RHEL/CentOS/Fedora)
systemctl status firewalld
firewall-cmd --state
# nftables
nft list ruleset
# iptables (legacy)
iptables -L -n -v
iptables -t nat -L -n -v
# Hangi firewall servisinin aktif olduğunu öğren
systemctl is-active ufw firewalld nftables iptables 2>/dev/null |
paste - - - - |
awk 'BEGIN{services="ufw firewalld nftables iptables"; n=split(services,a," ")}
{for(i=1;i<=n;i++) if($i=="active") print a[i] " aktif"}'
Sonuç
Donanım ve yazılım firewall arasındaki tartışmayı “hangisi daha iyi” ekseninde sürdürmek verimli değil. Daha doğru soru şu: “Bu ortam için hangi kombinasyon en anlamlı güvenlik mimarisini oluşturur?”
Büyük ölçekli fiziksel altyapılarda donanım firewall hala tartışmasız bir yere sahip. Yüksek trafik hacimleri, donanım hızlandırması ve merkezi yönetim avantajları göz ardı edilemez. Ancak modern DevOps ortamlarında, bulut altyapılarında ve maliyet bilinçli küçük-orta ölçekli işletmelerde yazılım çözümleri hem yeterli hem de çoğu zaman daha esnek bir alternatif sunuyor.
Pratik öneri: Perimeter’da ne kullanırsanız kullanın, host-based yazılım firewall’ı ihmal etmeyin. Saldırganlar perimeter’ı geçtiğinde son savunma hattınız sunucuların kendisidir. nftables veya iptables ile düzgün yapılandırılmış bir host firewall, on binlerce dolara mal olan bir cihazın önüne geçemese de onun ardından gelen katmanı sağlamlaştırır.
Güvenlik mimarisini tek bir cihaza bağlamak, tek nokta başarısızlığı (single point of failure) yaratmakla kalmaz, aynı zamanda saldırganın işini de kolaylaştırır. Katmanlı düşünün, bütçenize göre en iyi kombinasyonu bulun ve her iki yaklaşımın güçlü yönlerinden yararlanın.
