Sanal sunucularımıza olan saldırılar giderek karmaşık hale gelse de, bunlara karşı korunmak için her zaman pahalı donanımlara veya üçüncü taraf yazılımlara ihtiyaç yoktur. Çoğu zaman, işletim sisteminin bize sunduğu araçları doğru şekilde kullanmak güvenliğin ilk ve en önemli adımıdır.
Linux’ta bu görevi üstlenen araçlardan biri de iptables’tır. Paket filtreleme mantığıyla çalışan bu güvenlik duvarı, sistem yöneticilerine ağ trafiği üzerinde tam kontrol sağlar.
Bununla birlikte, yalnızca ağ trafiğini değil aynı zamanda sistemin disk yapısını da korumak önemlidir. Burada da fsck komutu devreye girerek, dosya sisteminde oluşabilecek hataları tarar ve onarır. Böylece iptables ağ güvenliğini sağlarken, fsck komutu da verilerin bütünlüğünü koruyarak güvenliği tamamlayıcı bir rol üstlenir.
iptables Nedir?
Iptables, Linux çekirdeğinin bir parçası olan Netfilter çatısının üzerinde çalışan bir arayüzdür. Görevi, ağa gelen ve giden tüm veri paketlerini, önceden tanımlanmış kurallara göre filtrelemek ve yönlendirmektir.

Neden Iptables’ı Kullanmalısınız?
- Paket düzeyinde kontrol özelliği ile UFW veya Firewalld gibi daha üst düzey araçların aksine, trafiği en temel seviyede, paket paket yönetme imkanı sunar.
- Her türlü ağ senaryosu için özelleştirilebilir.
- Gelen bağlantı hızlarını sınırlayarak basit hizmet reddi (DoS) saldırılarına karşı ilk savunma katmanını oluşturur.
Iptables’ın 3 Temel Katmanı Nedir?
Iptables’ın mantığını kavramak için üç temel bileşeni bilmek 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 hedefleri paketlerin nasıl işleneceğini belirler. ACCEPT güvenilir trafiğe izin verirken, DROP paketi sessizce yok sayarak saldırganın sistemi görmesini engeller. REJECT, paketi reddedip hata mesajı döner. LOG, paketi kayda alır ama işleme devam eder. RETURN ise özel zincirlerde kural bitimini gösterip paketi bir önceki zincire geri gönderir.

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 yalnızca temel komutlarla sınırlı kalmak gerekmez. Sanal sunucuların kullanımda sistem yöneticilerinin sıkça başvurduğu birçok yardımcı komut da vardır. Bu komutlar, mevcut kuralları görüntülemekten yeni kurallar eklemeye, portları açmaktan tüm trafiği engellemeye kadar geniş bir yelpazeyi kapsar. Aşağıda en sık kullanılan komutların kısa bir özetini 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.

