Yeni yazı: Kümeyi Kurmak: Ready Yazması Kümenin Çalıştığı Anlamına Gelmez
İptables ile Ağ Güvenliği: Temel Kurulum ve Yapılandırma Rehberi

İptables ile Ağ Güvenliği: Temel Kurulum ve Yapılandırma Rehberi

İçindekiler

Uzaktaki bir sunucuda iptables ile ilk kuralınızı yazdığınız an, aynı zamanda kendinizi o sunucudan kilitleyebileceğiniz andır. Kural yanlış sırada eklendiğinde ya da SSH portu farkında olmadan kapatıldığında hata mesajı almazsınız — oturumunuz donar ve bir daha bağlanamazsınız.

Bu yazıda iptables’ın nasıl çalıştığını, kuralların sırasının neden her şeyden önemli olduğunu ve temel komutları kendinizi dışarıda bırakmadan nasıl kullanacağınızı göreceğiz.

Aşağıdaki komutları uzaktan bağlandığınız bir sunucuda denemeyin. Önce bir sanal makinede veya konsol erişiminiz olan bir sistemde çalışın.

iptables Ne Yapar: Zincir, Kural, Hedef

iptables, Linux çekirdeğindeki paket filtreleme ve NAT mekanizmasının komut satırı arayüzüdür. Çalışma mantığı üç kavrama dayanır:

  • Zincir (chain) — paketin nerede yakalandığı. INPUT sunucuya gelen, OUTPUT sunucudan çıkan, FORWARD sunucu üzerinden geçen trafiktir. Bir yönlendirici kurmuyorsanız işiniz neredeyse tamamen INPUT iledir.
  • Kural (rule) — hangi paketin eşleşeceğini tarif eden koşullar: protokol, kaynak adres, hedef port.
  • Hedef (target) — eşleşen pakete ne yapılacağı: ACCEPT geçirir, DROP sessizce yutar, REJECT ise karşı tarafa “kapalı” cevabı döner. Aradaki fark önemlidir: DROP bağlantıyı zaman aşımına düşürür, REJECT anında hata verir.

Bir kural şu yapıyı izler:

iptables [SEÇENEK] [ZİNCİR] [KOŞULLAR] -j [HEDEF]

# örnek: 80 portuna gelen TCP paketlerini kabul et
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Paket işaretleme (-j MARK) ile trafik şekillendirmeye de girdi hazırlanabilir, ama şekillendirmenin kendisini tc yapar; iptables burada bant genişliğini sınırlamaz, yalnızca hangi paketin hangi sınıfa gireceğini belirler.

Kuralların Sırası Her Şeyi Belirler

iptables bir zincirdeki kuralları yukarıdan aşağıya, tek tek dener ve eşleşen ilk kuralda durur. Altındaki kurallar o paket için hiç çalışmaz. Bu yüzden aynı iki kural, sırası değiştiğinde tamamen zıt sonuç verir:

# Bu sırayla: 192.168.1.100 SSH'a bağlanabilir.
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

# Bu sırayla: kimse bağlanamaz — ACCEPT kuralına sıra hiç gelmez.
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

-A kuralı listenin sonuna ekler. Bu yüzden zaten geniş bir DROP kuralınız varsa, sonradan -A ile eklediğiniz izin kuralı hiçbir işe yaramaz; o kuralın yukarıya girmesi gerekir ve bunun yolu -I‘dır.

Kurulum: Zaten Kurulu — Asıl Sorun firewalld ve nftables

iptables neredeyse tüm dağıtımlarda kurulu gelir; ayrıca kurmanız gerekmez. Yoksa:

sudo apt install iptables   # Debian/Ubuntu
sudo dnf install iptables   # RHEL 8+/Rocky/AlmaLinux/Fedora (eski sürümlerde: yum)

İki noktayı bilmekte fayda var:

  • RHEL 7 ve sonrasında varsayılan güvenlik duvarı firewalld‘dir. iptables kurallarını doğrudan yazacaksanız firewalld‘yi durdurup devre dışı bırakmanız gerekir; ikisi aynı anda aynı tabloyu yönetirse kurallarınız beklenmedik anlarda silinir.
  • Modern dağıtımlarda iptables komutu aslında nftables’a yazar. Debian 11+, RHEL 8+ ve Ubuntu 20.04+ sürümlerinde iptables bir uyumluluk katmanıdır (iptables-nft); iptables -V çıktısındaki (nf_tables) ibaresi bunu gösterir. Komutlar aynı çalışır, ama nft list ruleset çıktısında kurallarınızı farklı biçimde görürsünüz.

Temel Komutlar: Listele, Ekle, Sil

Kurallar Listeleme: Mevcut iptables kurallarını görmek için aşağıdaki komutu kullanabilirsiniz:

sudo iptables -L

Kurallar Ayrıntılı Listeleme: Kuralları numaralarıyla, isim çözümlemesi yapmadan ve eşleşme sayaçlarıyla birlikte listeler:

sudo iptables -n -L -v --line-numbers

-n DNS çözümlemesini kapatır (komut anında döner), -v her kurala kaç paketin takıldığını gösterir, --line-numbers ise silmek için gereken numarayı verir. Sayaçlar sorun giderirken en değerli bilgidir: bir kuralın sayacı sıfırsa o kurala hiç sıra gelmiyor demektir — büyük ihtimalle üstünde eşleşen başka bir kural vardır.

Tüm Kuralları Silme: Tüm kuralları veya belirtilen zincirdeki kuralları temizler.

sudo iptables -F

Dikkat: -F yalnızca kuralları siler, zincir politikalarını (-P) sıfırlamaz. Politikanız DROP ise kuralları temizlemek sistemi güvenli hâle getirmez; aksine tüm izin kurallarını silip her şeyi engeller ve uzaktaki bağlantınız o anda kopar. Politikayı da açmak için: sudo iptables -P INPUT ACCEPT

Kural Silme: Mevcut bir kuralı silmek için kural numarasını belirleyip aşağıdaki komutu kullanabilirsiniz:

sudo iptables -D INPUT 1

Örnek: 22 portundan gelen istekleri engellerken 80 portuna gelen istekleri kabul eder.

sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Bu iki satırı uzaktaki bir sunucuda çalıştırmayın. İlk satır SSH portunu kapatır ve komutu yazdığınız oturum dahil hiç kimse bir daha bağlanamaz. Uzaktan çalışıyorsanız SSH’ı önce açıkça izinli hâle getirin ve yalnızca kendi IP’nize açın:

sudo iptables -I INPUT 1 -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

Parametre Özeti

Yukarıdaki komutlarda geçen seçenekler bir arada:

Seçenek Anlamı Not
-A Kuralı zincirin sonuna ekler Üstte eşleşen bir DROP varsa bu satır hiç çalışmaz
-I Kuralı belirtilen konuma ekler (-I INPUT 1 → en üste) Konum yazılmazsa başa gider. Mevcut kuralları silmez, aşağı kaydırır
-R Belirtilen numaradaki kuralı değiştirir -I araya girer, -R üzerine yazar — karıştırılır
-D Kuralı siler (-D INPUT 1) Silince alttaki numaralar kayar; art arda silerken büyükten küçüğe gidin
-P Zincirin varsayılan politikası (-P INPUT DROP) Hiçbir kural eşleşmezse bu uygulanır. -F bunu sıfırlamaz
-p Protokol (tcp, udp, icmp) --dport/--sport yalnızca -p tcp/-p udp ile birlikte kullanılabilir
-s / -d Kaynak / hedef adres Tek adres ya da ağ: -s 192.168.1.0/24
-j Hedef (ACCEPT, DROP, REJECT, MARK) Verilmezse kural yalnız sayaç tutar, pakete bir şey yapmaz

Kurallar Yeniden Başlatmada Kaybolur

Yazdığınız kurallar çekirdeğin belleğinde durur; sunucu yeniden başladığında hepsi silinir. Bu, ilk bakışta eksiklik gibi görünse de yeni başlayanlar için bir güvenlik ağıdır: kendinizi kilitlerseniz sunucuyu yeniden başlatmak kuralları sıfırlar.

Kuralları kalıcı hâle getirmek Debian/Ubuntu’da şöyle yapılır:

sudo apt install iptables-persistent
sudo netfilter-persistent save        # /etc/iptables/rules.v4 dosyasına yazar

RHEL ailesinde iptables-services paketi aynı işi görür. Elle almak isterseniz:

sudo iptables-save > /etc/iptables/rules.v4     # kaydet
sudo iptables-restore < /etc/iptables/rules.v4  # geri yükle

Kalıcı hâle getirmeden önce mutlaka test edin. Yanlış bir kuralı kalıcı yaparsanız yeniden başlatmak artık sizi kurtarmaz.

Sonuç

  • Sıra, kuralın kendisinden önemlidir. iptables eşleşen ilk kuralda durur; -A sona, -I başa ekler. Bir kural beklediğiniz gibi çalışmıyorsa önce iptables -n -L -v --line-numbers ile sayaçlara bakın — sayacı sıfır olan kurala hiç sıra gelmiyordur.
  • Kendinizi kilitlememenin yolu, SSH’ı önce açıkça izinli yapmaktır. Uzaktaki bir sunucuda ilk komut -I INPUT 1 ile SSH iznini en üste koymak olmalı; kısıtlayıcı kurallar ondan sonra gelir.
  • Kurallar yeniden başlatmada uçar, kalıcılık ayrı bir adımdır. Bu aynı zamanda güvenlik ağınızdır: kalıcı hâle getirmeden önce yeni kural setiyle bağlantı kurabildiğinizi doğrulayın.

Ağ tarafında devam etmek için: Veri merkezinde BT yedekliliği — ağ, depolama, küme.

Paylaş :

İlgili Yazılar

Linux'da Kullanıcı Bilgilerini Değiştirme ve Parola Yönetimi

Linux'da Kullanıcı Bilgilerini Değiştirme ve Parola Yönetimi

Bir çalışan işten ayrıldı, siz de hesabını kapatmak için usermod -L çalıştırdınız. Komut hata vermedi, /etc/shadow satırının başına ! düştü, iş bitti gibi görünüyor. Ama o kullanıcı SSH anahtarıyla sunucuya hâlâ girebiliyor — çünkü -L hesabı değil, parolayı kilitler.

Active Directory Nedir ve Neden Gereklidir?

Active Directory Nedir ve Neden Gereklidir?

Günümüzün teknoloji odaklı dünyasında, işletmeler ve organizasyonlar karmaşık bilgi teknolojisi altyapılarına sahiptir. Bu altyapıların yönetimi ve verimliliği, Active Directory gibi kritik bir bileşenle kolaylaştırılır. Active Directory (AD), Microsoft tarafından geliştirilen ve büyük ve küçük organizasyonların kullanımına sunulan bir dizin hizmetidir. Bu yazıda, Active Directory’nin ne olduğunu ve neden gerekliliklerini ele alacağız.

Monitoring Nedir ve Neden Önemlidir?

Monitoring Nedir ve Neden Önemlidir?

Bir sunucunun diski dolduğunda bunu iki şekilde öğrenirsiniz: ya sistem size söyler, ya da müşteri arar. Aradaki fark teknik bir yetenek değil, bir tercihtir — o sunucuyu izliyor muydunuz, izlemiyor muydunuz?