Bloğa geri dön

Iptables Güvenlik Duvarı Kurallarını Listeleme ve Silme

Iptables Güvenlik Duvarı Kurallarını Listeleme ve Silme

Iptables, çoğu Linux dağıtımıyla varsayılan olarak gelen birincil güvenlik duvarıdır. Ağ güvenliğini yönetmekten sorumludur. Veri paketlerini bir dizi kuralla karşılaştırarak çalışır ve sisteme kurallara göre bir bağlantıyı kabul etmesini, reddetmesini veya yönlendirmesini söyler. Bu eğitimde, kuralları nasıl listeleyeceğinizi ve sileceğinizi, paket ve bayt sayaçlarını nasıl kontrol edip temizleyeceğinizi ve zincirleri nasıl boşaltacağınızı (flush) göstereceğiz. Hazır mısınız? Başlayalım!

Önkoşullar

Eğitime geçmeden önce bir konuyu netleştirelim. Bu kılavuzda gösterilen tüm ipuçları ve püf noktaları ayrı bir sanal makine üzerinde gerçekleştirilmiştir. Sizin de bunu yapmanız iyi bir fikirdir, çünkü sisteminizin tamamen karışması ihtimalini ortadan kaldırır. Ancak bu süreçlerde uzmanlaştıktan sonra bunları gerçek hayattaki durumlarda uygulamayı denemelisiniz.

Bu eğitimde, tüm adımları göstermek için Ubuntu kullanacağız. Ancak, dağıtımdan bağımsız olarak benzer şekilde çalışmalıdırlar.

Kuralları listele

Kuralları özelliğe göre listele

İlk olarak, özelliğe göre tüm aktif kuralları kontrol edelim. Aşağıdaki komutu çalıştırın:

iptables list

Daha önce iptables kuralı oluşturma ile çalıştıysanız, benzerliği fark etmiş olabilirsiniz. Çıktılar, “iptables” kısmı hariç, onları oluşturmak için kullanılan komutlara benzer. Ayrıca iptables kuralları yapılandırma dosyalarıyla benzer bir yapıyı paylaşırlar.

Belirli bir zinciri listele

Daha kesin bir şey deneyelim. Tüm iptables kurallarını raporlamak yerine, iptables'a belirli bir zincirin kurallarını raporlamasını söyleyin. Örneğin, TCP, INPUT, OUTPUT vb. Bunu yapmak için, “-S” bayrağından sonra zincir adını belirtin:

list specific chain

Kuralları tablo olarak listele

Tablo görünümü, farklı kuralları karşılaştırırken kullanışlıdır. Iptables'a tüm aktif kuralları bir tablo biçiminde raporlamasını söylemek için “-L” bayrağını kullanın:

list rules as table iptables

Çıktı, zincire göre sıralanmış tüm mevcut kuralları içerir. Önceki bölüme benzer şekilde, liste çıktısını INPUT, TCP ve OUTPUT vb. gibi belirli bir zincire göre filtrelemek de mümkündür. Bunu yapmak için, “-L” bayrağından sonra zinciri belirtin:

filter by chain

Çıktıyı biraz inceleyelim. Bizim durumumuzda, kurallar nedeniyle çıktı biraz karmaşık görünecektir. Çıktının ilk satırı, varsayılan politikası (DROP) ile birlikte zincir adını (INPUT) bildirir. Bir sonraki satır, tablo sütunlarının başlıklarını belirtir. Geri kalanı ise zincirin kurallarıdır. Başlıkların neyi belirttiğine bir göz atalım:

  • target: Bir paket kuralla eşleşirse, bu bölüm hangi işlemin gerçekleştirilmesi gerektiğini tanımlar. Paketi kabul etmek, düşürmek (drop), günlüğe kaydetmek (log) veya başka bir zincire göndermek olabilir.
  • prot: Protokolü tanımlar, örneğin udp, tcp, icmp veya hepsi (all).
  • opt: Bu sütun IP seçeneklerini belirtir. Nadiren kullanılır.
  • source: Paketin kaynağı (IP adresi veya alt ağ). Değer belirli bir adres veya herhangi bir yer (anywhere) olabilir.
  • destination: Paketin hedefi (IP adresi veya alt ağ). Değer belirli bir adres veya herhangi bir yer (anywhere) olabilir.

Fark ettiyseniz, son sütun etiketlenmemiştir. Bunun nedeni, bir kuralın seçeneklerini belirtmek için kullanılmasıdır. Önceki alanlara sığmayan kuralın tüm kısımlarını içerecektir. Kaynak/hedef bağlantı noktalarından (port) paket bağlantı durumuna vb. kadar her şeyi içerebilir.

Paket sayıları ve toplam boyut

Paket ve bayt sayaçlarını temizle

Iptables kurallarını listelerken, her bir kurala eşleşen paketlerin sayısını ve paketlerin bayt cinsinden toplam boyutunu da kontrol edebiliriz. Hangi kuralların paketlerle eşleştiğine dair kaba bir resme sahip olmanız gerektiğinde yararlı bir metriktir.

Bu örnekte INPUT zincirini kullanacağız. Bu kez, ayrıntılı mod (verbose) anlamına gelen “-v” bayrağını ekleyin:

package and byte counters iptables

Tablo çıktısının artık iki ek alan içerdiğini fark edeceksiniz: pkts ve bytes.

Paket sayılarını ve toplam boyutu sıfırla

Bazı durumlarda, daha önce gösterdiğimiz sayaçları sıfırlamak isteyebilirsiniz. Sistem yeniden başlatılırsa sayaçlar otomatik olarak temizlenecektir. Ayrıca manuel olarak da sıfırlamaya zorlayabilirsiniz. Paket sayılarını ve toplam boyutu sıfırlamak için “-Z” bayrağını kullanacağız:

Reset packet counts and aggregate size

Bu komutun tüm zincirlerin sayaçlarını sıfırlayacağını unutmayın. Diğer komutlarda olduğu gibi, belirli zincirler için de sayacı sıfırlamak mümkündür. Örneğin, sıradaki komut INPUT zincirinin sayaçlarını sıfırlayacaktır:

reset particular counter

Sayaç sıfırlama işlemini daha kesin hale getirmek mümkündür. Belirli bir zincir altındaki belirli bir kuralın sayacını sıfırlayabilirsiniz. Bunu yapmak için zincir adının altına kural numarasını ekleyin:

reset specific rule

Kuralları sil

Kuralları özelliğe göre sil

iptables kurallarını silmenin birden fazla yolu vardır. Kuralları silmenin ilk yöntemi kural özelliğine göredir. Silme işlemi için “-D” bayrağını ve ardından kural özelliğini kullanacağız:

Delete rules by specification

Daha önce herhangi bir iptables kuralı eklediyseniz, benzerliği fark edeceksiniz. Burada değişen tek şey, “-A” bayrağı yerine “-D” bayrağının kullanılmasıdır.

Kuralları zincir ve numaraya göre sil

Kuralları özelliklerine göre silmek biraz daha fazla çaba gerektirir, değil mi? Kural özelliğini hatırlamak zorunda kalmadan bunları silebilseydik nasıl olurdu? Kuralları zincirine ve numarasına göre silelim! İlk yönteme (özelliğe göre silme) kıyasla bu yöntem, tüm özelliğin elinizde olması gerekmediği için nispeten daha kolaydır.

Bu yöntem, hedef kuralın zincirini ve satır numarasını gerektirir. Satır numarasını nereden alacağız? Bunu belirlemek için aşağıdaki komutu çalıştırın:

Delete rules by chain and number - get line number

Tüm kuralları ve satır numaralarını içeren büyük bir çıktı alacaksınız. Çıktıyı daraltmak için “-L” bayrağından sonra zincir adını kullanın:

Delete rules by chain and number - filter

Çıktıda, fazladan bir num sütunu fark edeceksiniz. Bu, her kural için satır numarasını gösterir. Hedef numarayı belirledikten sonra silme işlemini gerçekleştirin:

delete iptables rule

Zincirleri temizle

iptables söz konusu olduğunda, bir zinciri temizlemek (flushing) nedir? Belirli bir zincir altındaki tüm kuralları silme işlemidir. Toplu kural silmeye ihtiyacınız varsa bu yöntemi kullanabilirsiniz. Zincir temizleme işlemini gerçekleştirmeden önce, iptables-save kullanarak mevcut kuralların bir yedeğini almanızı şiddetle tavsiye ederiz. Bu, mevcut tüm zincirleri ve kuralları çıktı olarak verecek yerleşik bir iptables aracıdır. Çıktı bir metin dosyasına aktarılabilir:

iptables rules export

Tek bir zinciri temizle

Bir zincirin nasıl temizleneceğine göz atalım. “-F” bayrağını ve ardından hedef zinciri kullanın:

flush a single chain

Tüm zincirleri temizle

Tüm zincirleri temizlemeden önce ne yaptığınızı anladığınızdan emin olun. Bu işlem, iptables güvenlik duvarının tüm kurallarını silecektir. Öncesinde bir iptables kural yedeği oluşturduğunuzdan emin olmalısınız.

Hazır mısınız? Aşağıdaki komutu çalıştırarak tüm iptables zincirlerini temizleyin:

flush all changes

Kuralları temizle, zincirleri sil ve tümünü kabul et

Bu bölüm altında açıklanan adımların gerçekleştirilmesi, güvenlik duvarını etkili bir şekilde devre dışı bırakarak kısıtlamasız ağ trafiğine izin verecektir. Önceki bölüme benzer şekilde, devam etmeden önce bir iptables yedeğinizin olmasını öneririz. İlk olarak, yerleşik zincirlerin her birinin varsayılan politikasını ACCEPT olarak değiştireceğiz. Bu, iptables'ın SSH üzerinden sunucunuzun dışında kalmanıza neden olmamasını sağlamak içindir:

Flush rules, delete chains and accept all

Şimdi, nat ve mangle tablolarını temizleyin:

 flush nat and mangle tables

 mangle tables

Tüm zincirleri temizleyin ve varsayılan olmayan tüm zincirleri silin:

Flush all the chains

 delete all the non-default chains

Ardından, sonuca göz atalım:

iptables result

Son düşünceler

Iptables güçlü bir güvenlik duvarıdır. Umarız bu kılavuz, iptables güvenlik duvarı kurallarını nasıl listeleyeceğinizi ve sileceğinizi öğretmede faydalı olmuştur. Ve bunları gerçek dünyada uygulamadan önce pratik yapmayı unutmayın.

Keyifli bilişimler!

author

Akshay Nagpal

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.