Ana içeriğe geç

iptables Mimarisi: Netfilter Yapısına Derinlemesine Bakış

Bu rehberde ne öğreneceksiniz?

Bu rehberde Linux güvenlik duvarının temelini oluşturan netfilter yapısını, iptables’ın bu çekirdek kancalarıyla nasıl etkileşime girdiğini, tablolar ve zincirlerin paket akışında nerede devreye girdiğini ve bağlantı takibi mantığını sağlam temellerle öğreneceksiniz. Amaç, iptables’ın kafa karıştırıcı yapısını sadeleştirmek ve güvenlik kurallarınızı daha bilinçli oluşturmanızı sağlamaktır.


1. IPTables ve Netfilter Nedir?

Linux'ta uzun yıllardır kullanılan firewall sistemi iptables, çekirdekteki netfilter mekanizması üzerinden çalışır.

Netfilter, paketlerin çekirdeğe girerken ve çıkarken geçtiği kanca noktalarını (hooks) sağlar.

iptables ise bu kancalara kurallar bağlayarak paketlere izin verme, engelleme, yönlendirme, loglama gibi işlemler uygular.

Her paket bu işlem sürecinde bir veya birden fazla kancayı tetikler. Bu sayede trafik çok detaylı bir şekilde kontrol edilebilir.


2. Netfilter Kanca (Hook) Noktaları

Netfilter’ın paket işleme sırasında devreye girdiği 5 temel nokta vardır:

PREROUTING: Paket sisteme girişte işlenir, routing kararı verilmemiştir.

LOCAL_IN: Paket yerel makineye adreslenmişse tetiklenir.

FORWARD: Paket başka bir makineye iletilecekse devreye girer.

LOCAL_OUT: Sistemin kendisinin oluşturduğu paketler burada işlenir.

POSTROUTING: Paket kabloya çıkmadan hemen önce son kontroller yapılır.

Bu aşamalar, iptables zincirlerinin nerede tetikleneceğini belirler.


3. IPTables Tabloları ve Zincirler

i iptables kuralları tablolar (tables) içinde organize edilir. Her tablo kendi amacına göre trafik üzerinde farklı işlemler yapar.

Filter tablosu

Klasik güvenlik duvarı işlevlerini içerir: Paketin geçip geçmeyeceğine burada karar verilir. Zincirleri: INPUT, FORWARD, OUTPUT.

NAT tablosu

Adres çevirme kuralları içerir (DNAT, SNAT). Zincirleri: PREROUTING, OUTPUT, POSTROUTING.

Mangle tablosu

TTL değiştirme, paket işaretleme (mark) gibi manipülasyonlar için kullanılır. Tüm zincirleri destekler.

Raw tablosu

Paketleri connection tracking dışında tutmak için kullanılır.

Security tablosu

SELinux bağlamı ekler.


4. Tablolar ve Zincirlerin Birlikte Çalışma Sırası

Bir kanca tetiklendiğinde, o kancaya bağlı tüm tablolar üstten aşağı doğru sıralı çalışır.

Aşağıdaki tablo, hangi tablonun hangi zinciri desteklediğini ve işlenme sırasını sade şekilde gösterir:

Tablo ↓PREROUTINGINPUTFORWARDOUTPUTPOSTROUTING
raw
mangle
nat (DNAT)
filter
security
nat (SNAT)

Bu tablo, paket işleme sırasında zincirlerin hangi sırada çalıştığını anlamayı kolaylaştırır. Örneğin PREROUTING aşamasında sıralama: raw → mangle → nat şeklindedir.


5. Paketlerin İzlediği Akış Yolları

Paketlerin izleyeceği yol trafik türüne göre değişir:

Yerel sisteme gelen paket


PREROUTING → INPUT

Sunucu üzerinden yönlendirilecek paket


PREROUTING → FORWARD → POSTROUTING

Sistemden çıkan paket


OUTPUT → POSTROUTING

Bu akış, güvenlik kurallarının hangi aşamada uygulanacağını belirlediği için kritik önem taşır.


6. Iptables Kurallarının Yapısı

Her iptables kuralı iki bölümden oluşur:

Matching (eşleşme şartları)

Bir paketin kuralla eşleşmesi için taşıdığı özellikler:

  • Protokol (-p tcp, -p udp)

  • Kaynak / Hedef IP (-s, -d)

  • Port (--dport, --sport)

  • Bağlantı durumu (-m state --state ...)

  • Arayüz (-i, -o)

  • Başlık bilgileri (TTL, flag, vs.)

Target (hedef işlem)

Eşleşme gerçekleştiğinde uygulanacak işlemdir.

Temel hedefler:

  • ACCEPT – paketi geçirir

  • DROP – sessizce atar

  • REJECT – reddeder

  • LOG – loglama yapar

  • DNAT / SNAT – adres çevirir

  • RETURN – çağıran zincire geri döner


7. Kullanıcı Tanımlı Zincirler

Karmaşık yapılarda daha düzenli firewall politikaları için özel zincirler kullanılabilir.

Zincir oluşturma:


sudo iptables -N LOG_KURAL

Yeni bir zincir oluşturur.

Ana zincire bağlama:


sudo iptables -A INPUT -p tcp -j LOG_KURAL

INPUT zincirinden özel zincire atlar.

Bu yöntem hem okunabilirliği hem de yönetilebilirliği artırır.


8. Connection Tracking (Bağlantı Takibi)

Netfilter, paketleri yalnızca tek tek değil, bağlantı düzeyinde değerlendiren bir takip sistemi içerir. iptables bu sayede “stateful” (durumlu) kararlar verebilir.

DurumAçıklama
NEWYeni bağlantı başlatan paket.
ESTABLISHEDDaha önce izin verilmiş bağlantının devamı.
RELATEDVar olan bir bağlantıyla ilişkili yardımcı paket (örn: FTP data).
INVALIDBağlantıya uygun olmayan, tanımsız paket.
UNTRACKEDTakipten çıkarılmış paket (raw + NOTRACK).
DNAT/SNATNAT uygulanmış paketlerin bağlantı takibindeki sanal durumları.

Örnek:


sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Geçerli bağlantıların dönüş paketlerine izin verir.

Bu sistem sayesinde güvenlik kuralları çok daha akıllı ve doğru çalışır.


Sıkça Sorulan Sorular (SSS)

1. nftables iptables’ın yerine geçiyor mu?

Yeni sistemlerde nftables öne çıkıyor, ancak iptables hâlâ çok yaygın ve güçlüdür.

2. NAT neden giriş ve çıkış zincirlerinde yer alıyor?

Adres çevirme yalnızca paket yönlendirilirken veya çıkarken anlamlıdır.

3. raw tablosu ne zaman kullanılmalı?

Paketleri bağlantı takibine sokmak istemediğiniz durumlarda.

4. mangle tablosu ne işe yarar?

TTL değişikliği, QoS işaretleme gibi detaylı manipülasyon işlemlerinde kullanılır.

5. Zincir sırasını yanlış belirlemek hangi soruna yol açar?

Kural yanlış aşamada çalışır ve güvenlik açığı oluşabilir.


Sonuç

iptables ve netfilter, Linux güvenlik mimarisinin omurgasını oluşturur. Bu mimariyi doğru anlamak, etkili firewall kuralları yazmanızı ve sunucularınızı daha doğru şekilde korumanızı sağlar.

Rabisu Bulut platformunda bu güvenlik yapılarını yüksek performanslı sunucularla hemen deneyebilirsiniz. 🚀