1. iptables Nedir?
iptables, Linux sistemlerinde ağ paketlerini filtrelemek, yönlendirmek ve engellemek için kullanılan güçlü bir güvenlik duvarı aracıdır.
Linux çekirdeğindeki netfilter modülünü kullanarak çalışır ve gelen/giden ağ trafiğini belirli kurallara göre yönetir.
Başlıca işlevleri:
- IP adresi, port, protokol bazlı filtreleme
- NAT (Network Address Translation) işlemleri
- Paket yönlendirme ve engelleme
- Trafik kaydı (logging)
2. Temel Kullanım Söz Dizimi
iptables [tablo] [seçenekler] [zincir] [koşullar] [eylem]
Örnek
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Bu komut 22 numaralı porttan gelen TCP trafiğini kabul eder.
3. Sık Kullanılan Tablo ve Zincirler
Tablolar
Tablo | Açıklama |
---|---|
filter | Varsayılan tablo, paket filtreleme işlemleri |
nat | NAT işlemleri (IP yönlendirme, maskeleme) |
mangle | Paket başlıklarını değiştirme |
raw | Bağlantı izleme (connection tracking) öncesi işlemler |
Zincirler
Zincir | Açıklama |
---|---|
INPUT | Sisteme gelen paketler |
OUTPUT | Sistemden çıkan paketler |
FORWARD | Sistem üzerinden yönlendirilen paketler |
PREROUTING | Paket yönlendirilmeden önce |
POSTROUTING | Paket yönlendirildikten sonra |
3. Önemli Argümanlar
Argüman | Açıklama |
---|---|
-A | Zincire kural ekler |
-D | Zincirden kural siler |
-I | Zincire başa kural ekler |
-L | Zincirdeki kuralları listeler |
-F | Zinciri temizler |
-p | Protokol belirtir (tcp, udp, icmp) |
–dport | Hedef portu belirtir |
–sport | Kaynak portu belirtir |
-s | Kaynak IP adresi |
-d | Hedef IP adresi |
-j | Yapılacak eylemi belirtir (ACCEPT, DROP, REJECT, LOG) |
5. Örnek Kullanımlar
5.1. Tüm Kuralları Listeleme
sudo iptables -L -n -v
Açıklama: Kuralları detaylı ve sayısal formatta gösterir.
5.2. SSH Bağlantısına İzin Vermek
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Açıklama: TCP 22 portundan gelen bağlantılara izin verir.
5.3. Belirli Bir IP’yi Engellemek
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
Açıklama: 192.168.1.100 IP adresinden gelen tüm paketleri düşürür.
5.4. HTTP ve HTTPS Trafiğine İzin Vermek
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Açıklama: Web sunucusuna gelen HTTP (80) ve HTTPS (443) trafiğine izin verir.
5.5. NAT ile Port Yönlendirme
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
Açıklama: Gelen 8080 portu trafiğini 80 portuna yönlendirir.
5.6. Tüm Trafiği Engellemek
sudo iptables -P INPUT DROP
Açıklama: Varsayılan politikayı DROP yaparak tüm gelen trafiği engeller.
6. Kuralları Kaydetme ve Yükleme
iptables ile eklenen kurallar sistem yeniden başlatıldığında kaybolur. Kalıcı yapmak için:
sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v4
7. Güvenlik Tavsiyeleri
- Her zaman kendinizi kilitlememek için SSH portuna izin kuralı ekleyin.
- İzin verilen portları minimumda tutun.
- Gereksiz tüm protokolleri kapatın.
- Düzenli olarak kuralları gözden geçirin.