Linux Sunucularda iptables Nedir, Nasıl Kullanılır?
Sanal sunucular üzerinde gerçekleştirilen saldırılar her geçen gün daha karmaşık hâle gelse de, bunlara karşı korunmak için yüksek maliyetli cihazlar veya harici yazılımlar şart değildir. Çoğu zaman, işletim sisteminin kendi araçlarını etkin şekilde kullanmak güvenliğin en kritik basamağıdır.
Linux dünyasında bu işlevi gören en temel araçlardan biri iptables’tır. Paket filtreleme yöntemiyle çalışan iptables, ağ trafiği üzerinde yöneticilere tam kontrol imkânı sunar.
Ancak güvenlik yalnızca ağ ile sınırlı değildir; disk yapısının korunması da önemlidir. Bu noktada fsck komutu devreye girerek dosya sistemi üzerinde meydana gelen hataları tespit eder ve onarır. Böylece iptables ile ağ güvenliği sağlanırken, fsck ile veri bütünlüğü korunmuş olur.
iptables Nedir?
Linux çekirdeğinde yer alan Netfilter altyapısının üzerinde çalışan Iptables, paket filtreleme görevini üstlenir. Ağa giriş yapan veya ağdan çıkan tüm veri paketleri, tanımlanmış kurallar çerçevesinde denetlenir ve yönlendirilir.

Neden Iptables’ı Kullanmalısınız?
Paket düzeyinde kontrol imkânı sunması sayesinde iptables, UFW veya Firewalld gibi üst seviye çözümlerden ayrılır ve trafiği en temel seviyede denetlemenize imkân verir.
Tüm ağ senaryolarına uyarlanabilecek esneklikle özelleştirilebilir.
Bununla birlikte, bağlantı hızlarını sınırlayarak basit DoS saldırılarına karşı önleyici bir savunma hattı kurar.
iptables Yapısı: 3 Katman
iptables’ın nasıl çalıştığını anlamak için üç ana katmana odaklanmak gerekir: tablolar, zincirler ve hedefler.
Tablolar (Tables)
Kuralların kategorize edildiği yapılardır.

Filter → Paketin geçişine izin verip vermeyeceğine karar verir. Güvenlik duvarı kurallarının çoğunluğu bu tabloda yer alır.
NAT → Paketin kaynak veya hedef adresini/portunu değiştirir. Port Yönlendirme, Masquerading ve internet paylaşımı için kritiktir.
Mangle → Paketin başlık bilgilerini TTL, TOS, vb. değiştirme ve özel işaretleme işlemleri için kullanılır.
Raw → Paketin, bağlantı izleme sisteminden önce işlenmesi için kullanılır.
Zincirler (Chains)
Zincirler, paketlerin ağ yolculuğunun belirli bir aşamasında, ağ kartına ulaştığında, dışarı çıkarken veya üzerinden geçerken uygulanan sıralı kural setleridir.

INPUT → Sunucunun SSH, HTTP gibi servisleri için ana kontrol noktası.
OUTPUT → Sunucudan dışarı giden trafiği kontrol eder.
FORWARD → Sunucunun bir router/yönlendirici gibi çalıştığı durumlarda kullanılır.
Hedefler (Targets)
iptables’da hedefler, paketin izleyeceği yolu belirler. ACCEPT, güvenli trafiği geçirir. DROP, paketi sessizce düşürerek görünmez kılar. REJECT, paketi reddeder ve istemciye hata mesajı gönderir. LOG, paketi kayıt altına alır fakat işlemi durdurmaz. RETURN ise özel zincirlerde kural bitişini işaret edip paketi bir üst zincire geri yollar.

Linux’ta iptables Kurulumu Nasıl Yapılır?
Linux sistemlerinde güvenliği sağlamak için kullanılan iptables genellikle hazır kurulu gelir. Ancak bazı durumlarda manuel kurulum yapmak gerekir. Bu işlem, kullanılan dağıtıma göre değişiklik gösterir.
Debian ve Ubuntu Tabanlı Sistemler
Bu sistemlerde iptables genellikle yüklü gelir. Kurulu değilse şu adımları izleyebiliriz.
# Paket listelerini güncelleyin
sudo apt update
# iptables paketini kurun
sudo apt install iptables
Red Hat, CentOS, Fedora ve AlmaLinux
Bu dağıtımlar iptables-services paketini kullanır.
# Fedora / RHEL 8+ için
sudo dnf install iptables-services
# CentOS 7 / RHEL 7 için
sudo yum install iptables-services
Arch Linux ve Türevleri
sudo pacman -S iptables
Kritik Komutlar ve Kullanım
iptables’ı kullanırken sadece temel seviyede kalmak gerekmez. Sanal sunucularda sistem yöneticilerinin sık sık kullandığı birçok pratik komut vardır. Bu komutlar, mevcut kuralları görme, yeni kurallar yazma, port açma ya da tüm trafiği durdurma gibi işlemleri kapsar. Aşağıda en çok kullanılan komutlara dair kısa bir özet bulabilirsiniz.
| Kuralları Listeleme | sudo iptables -L | Mevcut kuralları gösterir. |
| SSH Portunu Açma | sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT | 22. porta gelen TCP trafiğine izin verir. |
| Tüm Gelen Trafiği Engelleme | sudo iptables -P INPUT DROP | Varsayılan politikayı DROP olarak ayarlar (Yüksek güvenlik). |
| Tüm Kuralları Sıfırlama | sudo iptables -F | Tüm kuralları temizler. |
iptables İle Savunma Kuralları Oluşturma
Belirli Bir IP Adresini Engelleme
Zararlı olduğu bilinen bir IP adresini tamamen aşağıdaki temel komutla engelleyebilirsiniz.
$ sudo iptables -A INPUT -s 192.168.1.10 -j DROP
Bazen de birden fazla IP adresi, sanal sunucuza tehdit olarak gösterilir. Bunun için aşağıdaki komutu kullanalım.
iptables -A INPUT -m iprange --src-range [START]-[END] -j DROP
Bu komutta [START] ve [END] değerlerini IP kodlarıyla değiştirelim.
ICMP (Ping) İsteklerini Engelleme
Ağ keşfi ve tarama saldırılarını önlemek için ping isteklerini engelleyebilirsiniz.
# Gelen ping (echo-request) paketlerini engelle
$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Basit DoS Koruması
HTTP portuna (80) gelen bağlantıları hız sınırlamasıyla kontrol edebilirsiniz. Bu kural, aşırı istek gönderilmesini engelleyerek basit DoS saldırılarına karşı koruma sağlar.
$ sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst
iptables Kuralları Nasıl Kaydedilir?
iptables ile yazılan kurallar varsayılan olarak geçicidir. Yani sistem yeniden başlatıldığında tüm kurallar silinir. Bu nedenle, oluşturduğunuz kuralları kalıcı hale getirmeniz gerekir.

Kuralları Kaydetme
Mevcut kurallarınızı bir dosyaya kaydedebilirsiniz:
sudo iptables-save > /etc/iptables/rules.v4
Otomatik Yükleme
Kuralların her yeniden başlatmadan sonra otomatik olarak yüklenmesi için paketi kuralım.
sudo apt-get install iptables-persistent
*Her kural değişikliğinden sonra iptables-save komutunu çalıştırmayı unutmayın.
