MeoHost Logo
Menü
BilgiMerkezi
Bilgi Merkezi/Güvenlik ve Firewall/iptables ile Sunucu Güvenliğini Sağlama Rehberi

iptables ile Sunucu Güvenliğini Sağlama Rehberi

Güvenlik ve Firewall28.01.2026Salih Demir10 dk okuma

iptables, Linux çekirdeğinde yer alan Netfilter çerçevesinin kullanıcı alanı arayüzü olup, paket filtreleme ve ağ adresi çevirisi (NAT) gibi gelişmiş ağ işlevlerini yapılandırmak için kullanılan güçlü bir araçtır. Bu araç, sunuculara gelen ve giden ağ trafiğini kontrol ederek yetkisiz erişimi engellemek, zararlı paketleri düşürmek ve belirli trafiğe izin vermek gibi kritik güvenlik önlemlerini uygulamaya olanak tanır.

iptables ile Sunucu Güvenliğini Sağlama Rehberi
iptables ile sunucu güvenliğini sağlayın! Linux firewall, paket filtreleme ve NAT ayarlarıyla sunucunuzu koruyun. Adım adım rehberimizle öğrenin.

iptables ile Sunucu Güvenliğini Sağlama Rehberi

  • iptables ile Sunucu Güvenliğini Sağlama Rehberi
  • iptables Nasıl Çalışır?
  • iptables Türleri ve Yapılandırmaları
  • iptables Uygulama Rehberi
  • Sık Yapılan Hatalar ve Çözümleri
  • Teknik Özellikler ve Standartlar
iptables, Linux'ta paket filtreleme yapan güçlü bir güvenlik aracıdır. Çekirdekteki Netfilter çerçevesinin kullanıcı alanı arayüzüdür. Sunucuya gelen ve giden ağ trafiğini kontrol eder. Yetkisiz erişimi engeller, zararlı paketleri düşürür ve belirli trafiğe izin verir. NAT gibi gelişmiş ağ işlevlerini de yapılandırır.

iptables, Linux işletim sistemlerinde uzun yıllardır standart güvenlik duvarı çözümü olarak kabul görmektedir. Temelinde, paketlerin ağ yığınından geçerken belirli kurallara göre işlenmesini sağlayan bir mekanizma bulunur. Bu kurallar, paketlerin kaynak ve hedef IP adresleri, port numaraları, protokoller ve hatta paket içeriği gibi çeşitli kriterlere göre incelenmesini sağlar. iptables'ın esnek yapısı, basit port engelleme kurallarından, karmaşık VPN tünelleme yapılandırmalarına kadar geniş bir kullanım alanına sahiptir. Tarihsel olarak, Linux'un ağ güvenliği konusundaki gelişimiyle paralel olarak evrimleşmiş ve günümüzdeki gelişmiş güvenlik gereksinimlerini karşılayacak şekilde şekillenmiştir.

Sunucu güvenliği, web sitelerini ve verileri siber tehditlere karşı koruyan önlemler bütünüdür. Firewall, DDoS koruması ve güvenlik taramaları temel bileşenlerdir. Bu bağlamda iptables, sunucu güvenliğinin temel taşlarından biri olarak öne çıkar. Özellikle, gelen ve giden bağlantıları yöneterek yalnızca gerekli olanların sunucuya ulaşmasını sağlamak, potansiyel saldırı yüzeyini önemli ölçüde azaltır. iptables, sunulan servislerin (örneğin web sunucusu, veritabanı sunucusu) güvenliğini sağlamada kritik rol oynar. Örneğin, yalnızca belirli IP adreslerinden veya belirli portlardan gelen bağlantılara izin vererek, saldırıların hedefe ulaşmasını engelleyebilir. Ayrıca, DNS spoofing gibi saldırılara karşı koruma sağlamak, veri bütünlüğünü korumak ve bant genişliği kullanımını optimize etmek gibi amaçlarla da kullanılabilir. Firewall Türleri ve Seçimi Nasıl Yapılır? hakkında daha fazla bilgi edinebilirsiniz.

iptables Nasıl Çalışır?

iptables, Linux çekirdeğindeki Netfilter kancalarına takılarak çalışan bir paket filtreleme sistemidir. Ağ trafiği sunucuya ulaştığında veya sunucudan ayrıldığında, iptables tarafından tanımlanan kurallara tabi tutulur. Bu kurallar, belirli kriterlere uyan paketlerin ne yapılacağını belirler: kabul edilir, düşürülür, reddedilir veya başka bir yere yönlendirilir.

  1. Paket Akışı ve Zincirler (Chains): iptables, paketlerin işlendiği farklı "zincirler" (chains) tanımlar. En yaygın zincirler şunlardır:
    • INPUT: Sunucuya gelen paketler için.
    • OUTPUT: Sunucudan çıkan paketler için.
    • FORWARD: Sunucunun bir yönlendirici olarak davrandığı durumlarda, sunucu üzerinden geçen paketler için.
  2. Tablolar (Tables): iptables, farklı işlevlere sahip çeşitli tablolar kullanır. En yaygın olanları:
    • filter: Paketleri filtrelemek için kullanılır (varsayılan tablo).
    • nat: Ağ Adresi Çevirisi (NAT) işlemleri için.
    • mangle: Paketlerin IP başlıklarını değiştirmek için.
    • raw: Paketlerin izlenmesini devre dışı bırakmak için.
  3. Kurallar (Rules): Her zincir, bir dizi kuraldan oluşur. Kurallar, paketlerin hangi kriterlere (kaynak/hedef IP, port, protokol vb.) uyduğunu kontrol eder.
  4. Hedefler (Targets): Bir kural, belirtilen kriterlere uyan bir paketle eşleştiğinde, bu pakete uygulanacak bir "hedef" (target) belirtir. Yaygın hedefler şunlardır:
    • ACCEPT: Paketi kabul et.
    • DROP: Paketi sessizce düşür (göndericiye herhangi bir yanıt gönderilmez).
    • REJECT: Paketi reddet ve göndericiye bir hata mesajı gönder.
    • LOG: Paketi günlüğe kaydet ve işleme devam et.
    • SNAT/DNAT: Kaynak veya hedef IP adresini değiştir.
  5. Politika (Policy): Her zincirin bir varsayılan politikası (policy) vardır. Eğer bir paket, zincirdeki hiçbir kuralıyla eşleşmezse, varsayılan politika uygulanır.

Örneğin, SSH (port 22) trafiğine izin vermek için, INPUT zincirinde TCP protokolü için port 22'yi hedefleyen ve ACCEPT hedefine sahip bir kural oluşturulur. Ardından, varsayılan politika DROP olarak ayarlanabilir, böylece açıkça izin verilmeyen tüm trafik engellenmiş olur. Bu mekanizma, sunucunun güvenlik duruşunu granüler bir şekilde kontrol etmeyi sağlar.

"Bir sistemi güvenli hale getirmek için onu basit tutmanız gerekir."

—, Kriptografi Öncüsü
iptables ile Sunucu Güvenliğini Sağlama Rehberi - iptables Nasıl Çalışır? | Güvenlik ve Firewall
iptables Nasıl Çalışır? hakkında görsel bilgi - iptables ile Sunucu Güvenliğini Sağlama Rehberi

iptables Türleri ve Yapılandırmaları

iptables'ın kendisi bir yazılım aracıdır ve doğrudan "türü" bulunmaz. Ancak, kullanım amacına ve yapılandırma karmaşıklığına göre farklı yaklaşımlar ve yönetim araçları geliştirilmiştir. Temel olarak iptables, Linux çekirdeği içindeki Netfilter çerçevesinin bir parçasıdır ve farklı tablolar (filter, nat, mangle vb.) ile zincirler (INPUT, OUTPUT, FORWARD) aracılığıyla paketleri işler.

iptables ile yapılandırılabilecek yaygın senaryolar şunlardır:

Yapılandırma Türü Açıklama Kullanım Alanı Anahtar Konseptler
Temel Paket Filtreleme (Filter Table) Sunucuya gelen ve giden paketleri belirli kurallara göre kabul etmek, düşürmek veya reddetmek. Yetkisiz erişimi engelleme, belirli portları açma/kapama, IP bazlı erişim kontrolü. INPUT, OUTPUT, FORWARD zincirleri; ACCEPT, DROP, REJECT hedefleri; IP adresi, port, protokol filtreleme.
Ağ Adresi Çevirisi (NAT - nat Table) Paketlerin kaynak (SNAT) veya hedef (DNAT) IP adreslerini değiştirmek. Bu, özel ağlardaki cihazların internete çıkmasını sağlamak veya belirli portlara gelen trafiği farklı sunuculara yönlendirmek için kullanılır. NAT, port yönlendirme, yük dengeleme (temel düzeyde). SNAT, MASQUERADE, DNAT hedefleri; preretouting, postrouting zincirleri.
Paket Başlığı Manipülasyonu (mangle Table) Paketlerin IP başlıklarındaki çeşitli alanları değiştirmek. Bu, QoS (Quality of Service) uygulamaları veya karmaşık yönlendirme senaryoları için kullanılabilir. Trafik önceliklendirme, VPN tünelleme, özel yönlendirme politikaları. PREROUTING, POSTROUTING, INPUT, OUTPUT, FORWARD zincirleri; TTL (Time To Live) değiştirme, TOS (Type Of Service) bitlerini ayarlama.
Bağlantı Takibi (Connection Tracking) iptables, Netfilter'ın bağlantı takip modülü (conntrack) ile entegre çalışarak paketleri bağlantı bazında değerlendirebilir. Bu, yalnızca önceden kurulmuş bağlantılara ait paketlere izin vermek gibi daha akıllı kurallar oluşturmayı sağlar. Durum bilgisi olan güvenlik duvarı (stateful firewall) oluşturma, UDP gibi bağlantısız protokollerde bile bağlantı takibi. -m state modülü; NEW, ESTABLISHED, RELATED durumları.
Yönetim Araçları iptables komut satırında doğrudan kullanılabilirken, karmaşık yapılandırmaları yönetmek için ufw (Uncomplicated Firewall), firewalld gibi daha kullanıcı dostu arayüzler de mevcuttur. Bu araçlar arka planda iptables komutlarını çalıştırır. Kolaylaştırılmış firewall yönetimi, otomasyon. ufw, firewalld.

Bu nedenle, iptables'ın temel prensiplerini anlamak, sunucu güvenliğini sağlamak ve optimize etmek için kritik öneme sahiptir.

iptables Uygulama Rehberi

Bu bölüm, temel iptables kurallarını uygulayarak sunucu güvenliğini artırmaya yönelik adım adım bir rehber sunmaktadır. Bu örnekler, yaygın senaryoları kapsamakta ve pratik uygulamalara odaklanmaktadır.

  1. iptables Kurallarını Görüntüleme: Mevcut kuralları görmek için aşağıdaki komut kullanılır:
    sudo iptables -L -v -n
    • -L: Kuralları listeler.
    • -v: Detaylı bilgi gösterir (paket ve bayt sayıları gibi).
    • -n: IP adreslerini ve port numaralarını sayısal olarak gösterir (DNS çözümlemesi yapmaz).
  2. Varsayılan Politikaları Ayarlama (Güvenli Başlangıç): Başlangıç olarak, tüm zincirler için varsayılan politikayı DROP olarak ayarlamak iyi bir pratiktir. Bu, yalnızca açıkça izin verilen trafiğin geçmesine olanak tanır.
    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
    (OUTPUT politikasını ACCEPT olarak ayarlamak, sunucunun dışarıya doğru iletişim kurmasına izin verir. Gerekirse bu da kısıtlanabilir.)
  3. Gerekli Bağlantılara İzin Verme:
    • SSH Erişimi (Port 22): Belirli bir IP adresinden SSH erişimine izin vermek için:
      sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
      (Tüm IP'lerden izin vermek için -s 192.168.1.100 kısmını kaldırın.)
    • HTTP/HTTPS Erişimi (Port 80, 443): Web sunucusu için:
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    • ICMP (Ping) Erişimi: Ping isteklerine izin vermek için:
      sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  4. Bağlantı Takibini Etkinleştirme (Stateful Firewall): Mevcut ve yeni kurulan bağlantılara izin vermek için:
    sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    Bu kural, sunucunun başlattığı veya izin verdiği bağlantılarla ilgili gelen paketlerin kabul edilmesini sağlar.
  5. Belirli Portlara Gelen Trafiği Engelleme: Örneğin, FTP (Port 21) trafiğini engellemek için:
    sudo iptables -A INPUT -p tcp --dport 21 -j DROP
  6. Tüm Trafiği Engelleme: Belirli bir IP adresinden gelen tüm trafiği engellemek için:
    sudo iptables -A INPUT -s 203.0.113.0/24 -j DROP
  7. iptables Kurallarını Kaydetme: iptables kuralları genellikle sistem yeniden başlatıldığında kaybolur. Bu kuralları kalıcı hale getirmek için dağıtıma özel araçlar kullanılır:
    • Debian/Ubuntu:
      sudo apt-get install iptables-persistent
      Ardından
      sudo netfilter-persistent save
    • CentOS/RHEL:
      sudo yum install iptables-services
      Ardından
      sudo systemctl enable iptables
      ve
      sudo service iptables save
  8. iptables Kurallarını Silme: Belirli bir kuralı silmek için kural numarasını veya tam kural tanımını kullanabilirsiniz. Kural numaralarını görmek için sudo iptables -L INPUT --line-numbers komutunu kullanın.
    sudo iptables -D INPUT 1
    (INPUT zincirindeki 1 numaralı kuralı siler)
    sudo iptables -F
    (Tüm kuralları siler - DİKKAT!)

Bu nedenle, iptables kurallarının dikkatli bir şekilde yapılandırılması ve test edilmesi büyük önem taşır.

"SSL sertifikası olmayan bir site, kilitsiz bir mağaza gibidir."

—, Güvenlik Araştırmacısı
iptables ile Sunucu Güvenliğini Sağlama Rehberi - iptables Uygulama Rehberi | Güvenlik ve Firewall
iptables Uygulama Rehberi hakkında görsel bilgi - iptables ile Sunucu Güvenliğini Sağlama Rehberi

Sık Yapılan Hatalar ve Çözümleri

iptables kullanımı sırasında karşılaşılan bazı yaygın hatalar ve bunların çözüm önerileri aşağıda listelenmiştir:

  • Hata: 'iptables -P INPUT DROP' komutundan sonra sunucuya erişim kaybı.

    Çözüm: Bu hata, SSH gibi gerekli hizmetlere izin verilmeden varsayılan politika DROP olarak ayarlandığında oluşur. Çözüm, önce gerekli hizmetlere izin veren kuralları eklemek ve ardından varsayılan politikayı değiştirmektir. Eğer erişim kaybı yaşanırsa, sunucuya fiziksel veya konsol erişimi ile bağlanıp kuralları geri almanız gerekebilir.

  • Hata: Kurallar kaydedilmedi ve sistem yeniden başlatıldığında kayboldu.

    Çözüm: iptables kuralları varsayılan olarak kalıcı değildir. Kuralları kalıcı hale getirmek için dağıtıma özel araçlar (iptables-persistent, iptables-services vb.) kullanılmalıdır. Bu araçlar, kuralları bir dosyaya kaydeder ve sistem başlangıcında otomatik olarak yükler.

  • Hata: Belirli bir IP adresinden erişim hala mümkün.

    Çözüm: Bu durum, IP tabanlı engelleme kuralının yanlış zincire eklenmiş olmasından, kuralın öncesinde başka bir kabul kuralının bulunmasından veya kuralın tam olarak doğru IP adresini hedeflememesinden kaynaklanabilir. sudo iptables -L -v -n komutu ile kuralları dikkatlice inceleyerek doğru zincirde ve doğru hedef IP ile kuralın uygulandığından emin olun.

  • Hata: 'connection tracking' modülü çalışmıyor veya yanlış yapılandırılmış.

    Çözüm: Durum bilgisi olan firewall (stateful firewall) için bağlantı takibi kritiktir. sudo iptables -m state --state ESTABLISHED,RELATED -j ACCEPT gibi kuralların doğru sırada ve doğru zincirde olduğundan emin olun. Kernel'in nf_conntrack modülünün yüklü ve aktif olduğunu kontrol edin.

  • Hata: Çok sayıda kural nedeniyle performans düşüşü.

    Çözüm: iptables, kural listesi uzadıkça performansını kaybedebilir. Kuralları mantıksal olarak gruplandırmak, gereksiz kuralları kaldırmak ve mümkünse daha verimli hedefler (örn. REJECT yerine DROP daha hızlı olabilir) kullanmak performansı artırabilir. Ayrıca, kuralların sırası önemlidir; sık eşleşen kuralları listenin başına taşımak faydalı olabilir.

Teknik Özellikler ve Standartlar

iptables, Linux çekirdeğinin bir parçası olarak Netfilter çerçevesi üzerinde çalışır. Bu çerçeve, ağ paketlerinin işlenmesi için belirli API'ler ve kancalar sağlar. iptables, bu kancalara entegre olarak paketleri filtreleme, NAT ve paket başlığı manipülasyonu gibi işlemleri gerçekleştirir.

Temel teknik özellikler şunlardır:

  • Modüler Yapı: iptables, farklı işlevler için farklı tablolar (filter, nat, mangle, raw) ve her tablo içinde farklı zincirler (INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING) kullanır.
  • Kural Tabanlı İşlem: Her zincir, belirli kriterlere (kaynak/hedef IP, port, protokol, durum vb.) uyan paketleri işleyen kurallardan oluşur.
  • Hedefler (Targets): Kurallar, eşleşen paketler için ACCEPT, DROP, REJECT, LOG, SNAT, DNAT gibi çeşitli hedeflere yönlendirilir.
  • Bağlantı Takibi (Connection Tracking): Netfilter'ın nf_conntrack modülü ile entegrasyonu sayesinde, paketleri bağlantı bazında yönetebilir (stateful firewall).
  • Protokol Desteği: TCP, UDP, ICMP gibi yaygın IP protokollerini destekler.
  • IPv4 ve IPv6 Desteği: iptables komutu IPv4 için kullanılırken, IPv6 için ip6tables komutu kullanılır. (Not: nftables, her ikisini de tek bir araç altında birleştirir.)

Endüstri standartları açısından iptables'ın kendisi doğrudan bir standart değildir, ancak ağ güvenliği ve paket filtreleme alanındaki birçok uygulamanın temelini oluşturur. RFC (Request for Comments) dokümanları, IP paketlerinin nasıl işlenmesi gerektiğine dair standartları belirler ve iptables bu standartlara uygun olarak paketleri yönetir. Güvenlik duvarı yönetimi konusunda ise CIS (Center for Internet Security) Benchmarks gibi kılavuzlar, iptables gibi araçların güvenli yapılandırması için öneriler sunar.

DDoS Saldırılarına Karşı Etkili Korunma Yöntemleri hakkında daha fazla bilgi edinebilirsiniz.

Sıkça Sorulan Sorular

En uygun hosting paketi nasıl seçilir?

İhtiyacınıza göre trafik hacmi, disk alanı ve RAM gereksinimlerini değerlendirerek en uygun hosting paketini seçebilirsiniz. Başlangıç düzeyinde paylaşımlı hosting, yüksek trafik için VDS veya dedicated sunucu tercih edilmelidir.

Hosting taşıma işlemi ne kadar sürer?

Hosting taşıma işlemi genellikle 24-48 saat içinde tamamlanır. DNS propagasyonu dünya genelinde 72 saate kadar sürebilir ancak çoğu durumda birkaç saat içerisinde gerçekleşir.

Uptime garantisi neden önemlidir?

Yüksek uptime garantisi sitenizin sürekli erişilebilir olmasını sağlar. %99.9 uptime garantisi yılda maksimum 8.76 saat kesinti anlamına gelir ve profesyonel hosting sağlayıcılarının standart teklifidir.

iptables tablo ve zincirleri ne ise yarar?

Oz cevap: iptables, Linux cekirdegindeki netfilter uzerinde paket filtreleme yapar. Kurallar tablolar (filter, nat, mangle) ve zincirler (INPUT, OUTPUT, FORWARD) halinde organize edilir. Gelen trafigi denetlemek icin cogunlukla 'filter' tablosunun INPUT zinciri kullanilir.

iptables temel zincirler ve kullanimi
ZincirNe zaman devreye girerTipik kullanim
INPUTSunucuya gelen paketlerGelen baglantilari kisitlama
OUTPUTSunucudan cikan paketlerGiden trafigi kontrol
FORWARDSunucu uzerinden gecen paketlerYonlendirme / gateway senaryolari

Yanitlanmamis soru: iptables kurallari yeniden baslatinca kayboluyor, kalici nasil yapilir?

iptables kurallari bellekte tutulur ve sistem yeniden baslatildiginda sifirlanir. Kalici hale getirmek icin 'iptables-save' ile kurallar bir dosyaya yazilir ve acilista 'iptables-restore' ile (veya iptables-persistent / netfilter-persistent paketi ile) geri yuklenir. Onerilen yaklasim: varsayilan politika DROP, izin verilenler ACCEPT.

Sık Sorulan Sorular

iptables ile Sunucu Güvenliğini Sağlama Rehberi hakkında merak edilenler

iptables, Linux çekirdeğinde yer alan ve ağ trafiğini filtrelemek, paketleri işlemek ve ağ adresi çevirisi (NAT) yapmak için kullanılan bir komut satırı aracıdır. Temel amacı, sunuculara gelen ve giden ağ paketlerini belirli kurallara göre yöneterek güvenlik sağlamaktır.
iptables kuralları varsayılan olarak kalıcı değildir ve sistem yeniden başlatıldığında kaybolur. Kuralları kalıcı hale getirmek için dağıtıma özel araçlar (örneğin, Debian/Ubuntu için <code>iptables-persistent</code>, CentOS/RHEL için <code>iptables-services</code>) kullanılmalıdır.
Belirli bir portu kapatmak için, o porta gelen trafiği engelleyen bir kural eklemeniz gerekir. Örneğin, TCP port 80'i kapatmak için <code>sudo iptables -A INPUT -p tcp --dport 80 -j DROP</code> komutu kullanılabilir.
iptables, Linux çekirdeğindeki Netfilter çerçevesi ile doğrudan etkileşim kuran temel araçtır. firewalld ise iptables'ın üzerine kurulu, daha kullanıcı dostu ve dinamik bir güvenlik duvarı yönetim arayüzüdür; bölgeler ve servisler gibi soyutlamalar sunar.
Belirli bir port üzerinden yalnızca belirli bir IP adresinden erişime izin vermek için, kaynak IP adresini belirten bir <code>ACCEPT</code> kuralı eklemeniz gerekir. Örneğin, SSH (port 22) için <code>sudo iptables -A INPUT -p tcp --dport 22 -s BELIRLI_IP_ADRESI -j ACCEPT</code> komutu kullanılır.

Sorunuz burada yok mu?

Canlı destek ekibimiz size yardımcı olmaya hazır.

İletişime Geç
S

Salih Demir

Siber Güvenlik Uzmanı & DevOps Mühendisi

10 yıllık deneyime sahip, ODTÜ Bilişim Sistemleri mezunu. Ağ güvenliği, SSL/TLS, kontrol paneli yönetimi ve sunucu sanallaştırma uzmanı. CEH, CISSP ve VMware VCP sertifikalı.

Siber GüvenlikSSL/TLSKontrol PanelleriSanallaştırmaDevOps
10 yıl deneyim
Yayın: 28 Ocak 2026
Güncelleme: 20 Haziran 2026
Uzman İçerik
Doğrulanmış Bilgi
Güncel Bilgi