Sanal sunuculara yönelik saldırılar gittikçe daha karmaşık hâle geliyor olsa da, bu tehditlere karşı koymak için her zaman pahalı donanımlar veya üçüncü taraf yazılımlar gerekmez. Çoğu zaman işletim sisteminin kendi sunduğu araçları kullanmak, güvenliğin en temel adımıdır.
Linux ortamında bu rolü üstlenen en önemli araçlardan biri iptables’tır. Paket filtreleme sistemiyle çalışan iptables, yöneticilerin ağ trafiğini doğrudan kontrol etmesine imkân verir.
Bununla birlikte, yalnızca ağ trafiği güvenliği yeterli olmayabilir; sistemin disk yapısının da korunması gerekir. Burada fsck komutu devreye girer ve dosya sistemi hatalarını tarayıp onararak güvenliği destekler. Böylece iptables ağ seviyesinde, fsck ise veri bütünlüğünde koruma sağlar.
iptables Nedir?
Iptables, Linux çekirdeğinin Netfilter modülü üzerinde çalışan bir güvenlik aracı olarak bilinir. Görevi, ağ üzerinden gelen ya da ağdan çıkan veri paketlerini belirlenmiş kurallara göre filtrelemek ve gerektiğinde 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 Ana Bileşeni
iptables’ın mantığını kavramak için üç temel yapı bilinmelidir: tablolar, zincirler ve hedefler.
Tablolar (Tables)
Kuralların kategorize edildiği yapılardır.

Filter → Bir paketin kabul edilip edilmeyeceğine karar verilen tablodur. Güvenlik duvarı politikalarının çoğu burada uygulanır.
NAT → Paketin port veya IP adresini değiştirerek yönlendirme ve internet paylaşımı sağlar. Özellikle masquerading için kritik bir tablodur.
Mangle → Paketlere işaret eklemek veya başlık değerlerini (TTL, TOS vb.) değiştirmek için kullanılır.
Raw → Paketler, bağlantı izleme modülüne girmeden önce bu tablo üzerinden işlenir.
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, bir pakete uygulanacak işlemi gösterir. ACCEPT, paketi kabul eder; DROP, paketi sessizce düşürerek saldırganı yanıltır; REJECT, paketi reddeder ve hata mesajı verir. LOG, paketi yalnızca kaydeder ve işleme devam eder. RETURN ise özel zincirlerde sürecin sona erdiğini işaret ederek paketi geri yönlendirir.

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 yalnızca basit kurallarla kullanılmaz. Sanal sunucuların yönetimi sırasında yöneticilerin sıkça ihtiyaç duyduğu birçok ek komut da bulunur. Bu komutlar, kuralları listelemekten yeni kural tanımlamaya, portları yönetmekten tüm ağı engellemeye kadar uzanır. Aşağıda en yaygın kullanılan komutların özetine yer verilmiştir.
| 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.