iptables

iptables

Iptablesfb.png görüntüsünün açıklaması. Bilgi
yaratıcı Paslı Russell ( içinde )
tarafından geliştirildi Netfiltre projesi
İlk versiyon 1998
Son sürüm 1.8.7 (15 Ocak 2021)
Depozito git: //git.netfilter.org/iptables , git.netfilter.org/iptables ve git.netfilter.org/iptables
Yazılmış VS
İşletim sistemi Linux
Çevre Linux
Tür Paket filtreleme
Lisans GNU GPL'si
İnternet sitesi www.netfilter.org

iptables bir olan özgür yazılım ait kullanıcı alanı Linux geçtiği sistem yöneticisi içinde zincirleri ve kuralları yapılandırabilirsiniz duvarı içinde çekirdek alanı (modülden oluşmaktadır Netfilter ).

Farklı programlar kullanılan protokole bağlı olarak kullanılır: iptables için kullanılan IPv4 protokolü , ip6tables için IPv6 , arp tablosu ARP için ( Adres Çözümleme Protokolü ) ya da hatta ebtables için, spesifik Ethernet çerçeveleri .

Bu tür bir değişiklik bir sistem yöneticisi için ayrılmalıdır. Bu nedenle, kullanımı kök hesabın kullanılmasını gerektirir . Programın kullanımı diğer kullanıcılar tarafından reddedilir.

Çoğu Linux dağıtımında , iptables komutla başlatılır /usr/sbin/iptablesve " man iptables " komutu kullanılarak görüntülenebilen iptables ve ip6tables kılavuz sayfası tarafından belgelenir  .

iptables ayrıca düşük seviyeli (çekirdek seviyesi) bileşenlere atıfta bulunmak için sıklıkla kullanılır. x_tables , dört protokol için paylaşılan kodu içeren daha genel çekirdek modülünün adıdır. Aynı zamanda eklentiler API'sini sağlayan modüldür . Bu nedenle, Xtables genellikle tam güvenlik duvarına atıfta bulunur (IPv4, IPv6, arp, eb).

Tarih

Netfilter ve iptables başlangıçta birlikte tasarlandı, bu nedenle hikayeleri başlangıçta karıştı.

İptables önce Linux üzerinde ana duvarı oluşturma yazılımı olan IPChains (linux 2.2 kernel) ve IPFWADM dayalı (Linux 2.0 çekirdeği) ipfw , aslen altında tasarlanmış bir program BSD .

iptables, Ipfwadm tarafından Linux'ta tanıtılan temel ilkeleri korur: her pakette neyin test edileceğini ve böyle bir paketle ne yapılacağını belirten kural listeleri .

Ipchains daha sonra bir kural zinciri kavramını tanıttı ve sonunda iptables bu konsepti dizilere genişletti  : NAT kullanılıp kullanılmayacağına karar verilirken bir diziye, bir paketin nasıl filtreleneceğine karar verilirken diğerine başvurulur.

Ayrıca, bir paketin aktarımı sırasında filtrelemenin gerçekleştirildiği üç kez, bir paket tam olarak bir filtre noktasından geçecek şekilde değiştirilmiştir.

Bu ayırma işlemi, iptables da, bağlantı izleme tabaka her biri için tanımlanmış bilgiyi kullanmak için izin verir paket (bu bilgi, daha önce bağlanmış olan NAT ). Bu özellik iptables'ı Ipchains'den üstün kılar , çünkü birincisi bağlantının durumunu izleme ve bağlantının durumuna bağlı olarak veri paketlerini yeniden yönlendirme, değiştirme veya durdurma yeteneğine sahiptir ve daha fazlası yalnızca paketin kaynağı, hedefi veya içeriği üzerindedir. veri. Bir güvenlik duvarı bu şekilde bir güvenlik duvarı olarak kabul edilir iptables kullanarak durum bilgisi ( durum bilgisi güvenlik duvarı bir güvenlik duvarı oluşturabilir ipchains'de aksine), durum bilgisi olmayan (ender durumlarda hariç). Basitçe söylemek gerekirse, Ipchains bir paketin iletilmesiyle ilgili bağlamı kullanmazken iptables kullanır. Bu nedenle iptables, paketleri iletmek veya bağlantı kurmak için daha iyi seçimler yapabilir.

--pid-owner --cmd-owner seçeneklerini kullanarak işleme göre filtreleme yeteneği, çekirdek 2.6.14'ün yayımlanmasıyla ipt_owner modülünden kaldırıldı.

Operasyon

Xtables, sistem yöneticisinin , paketleri işlemek için bir dizi kuraldan oluşan "dizeler" içeren tablolar oluşturmasına izin verir . Her tablo bir tür paket işleme ile ilişkilendirilir (bkz. Netfilter ). Paketler, zincirlerdeki her kuralı sırayla takip eder. Bir zincirdeki bir kural, başka bir zincire ( goto veya jump ) atlamaya neden olabilir ve bu işlem, ulaşılan yuvalama düzeyine bakılmaksızın gerektiği kadar tekrarlanabilir.

Gelen veya giden her ağ paketi bu nedenle en az bir zincirden geçer.

Paketin orijini, geçtiği ilk zinciri belirler. (Beş ilişkili beş önceden kanal var kanca arasında netfilter ), ancak bunların kullanımı her tabloda zorunlu değildir. Önceden tanımlanmış zincirler , zincirin sonuna ulaştığında pakete uygulanan bir politikaya (örneğin DROP) sahiptir. Sistem yöneticisi istediği kadar başka kanal oluşturabilir. Bu zincirlerin bir politikası yoktur: zincirin sonuna bir paket ulaşırsa, çağrılan zincire geri gönderilir. Bir zincir boş bile olabilir (kural yoktur).

Beş tür önceden tanımlanmış dize şunlardır:

Bir zincir (bir kurallar listesidir) bağımsız olarak mevcut değildir: her zincir mutlaka bir tabloya aittir. Iptables dört adlandırılmış tablo içerir: mangle , filter , nat , raw . Bu yön, öğreticilerde genellikle yetersiz açıklanır (veya çok az vurgulanır), bu nedenle tabloların dışında dizeler olduğunu düşündürür. Bu karışıklık, filtre tablosunun varsayılan tablo olması gerçeğinden kaynaklanmaktadır . Bu yüzden genellikle komutlarda ve konuşmada örtüktür. Örneğin, bir öğretici başka bir kesinlik olmadan GİRİŞ zincirinden bahsettiğinde , bu nedenle filtre tablosunun GİRİŞ zinciridir . Aşağıda, farklı tablolarda tanımlanan dizileri listelemek için komutları belirtiyoruz.

Bir zincirdeki her kural, kendisine karşılık gelen paketlerin belirtimini (İngilizce: eşleşmeleri ) içerir. Ayrıca bir eylem (İngilizce: target ) (uzantılar için kullanılır) veya bir yargı (birkaç yerleşik karardan biri ) içerebilir . Bir paket bir zincirden geçtiğinde, sırayla her kural incelenir. Bir kural paketle eşleşmezse, paket bir sonraki kurala iletilir. Bir kural paketle eşleşirse, paketin zincirde devam etmesine veya tam tersine onu hariç tutmasına yol açabilecek eylem / yargı tarafından belirtilen eylemleri alır. Spesifikasyonlar, paketlerin test edildiği koşulları içerdiğinden, kuralların büyük kısmını oluşturur. Bu spesifikasyonlar, örneğin --mac-source ve -p tcp --dport parametreleri gibi OSI modelinin herhangi bir katmanını sağlayabilir ve ayrıca protokolden bağımsız spesifikasyonlar da vardır, örneğin -m time .

Paket, zinciri aşağıdakilere kadar geçmeye devam eder:

Ön uçlar ve komut dosyaları

Kural belirlemeyi kolaylaştırmayı amaçlayan iptables için birçok üçüncü taraf yazılımı var. Metin tabanlı veya grafiksel ön uçlar, kullanıcıların tek bir tıklamayla basit kurallar oluşturmasına olanak tanır. Firestarter , Gnome ortamını kullanan Linux dağıtımları için kullanılabilen bir grafik arabirimdir. Komut genellikle komut bakın Shell arasında Unix (ama diğer kodlama dillerini de mümkündür). Önceden tanımlanmış bir dizi kuralla iptables veya (daha hızlı) "iptables-restore" veya basit bir yapılandırma dosyası yardımıyla geliştirilen bir şablondan kurallar olarak adlandırırlar. Linux dağıtımları, en son şablon kullanma sistemini kullanır. Böyle bir modele dayalı yaklaşım, kural oluşturucunun neredeyse sınırlı bir biçimidir ve örneğin PHP dosyalarında bağımsız oluşturucular da vardır.

Ön uçlar, oluşturucular ve komut dosyaları genellikle model sistemleriyle ve bu modelin kullanıcı tanımlı kural değiştirmeye izin verdiği durumlarda sınırlıdır. Ayrıca, oluşturulan kurallar genellikle kullanıcının güvenlik duvarı üzerinde istediği etkiler için optimize edilmemiştir, çünkü bu muhtemelen geliştirici için bakım maliyetlerini artıracaktır. Makul düzeyde iptables anlayışına sahip olan ve ayrıca kural kümelerinin optimize edilmesini isteyen kullanıcılar, kendi kurallarını oluşturmaya teşvik edilir.

iptables -L -v -n komutu , belirtilmediğinde varsayılan tablo olan filtre tablosu için hangi kuralların tanımlandığını görmenizi sağlar (böylece iptables -t filter -L -v -n komutu iptables ile aynı sonucu verir - L -v -n ). Nat tablosunun zincir kurallarını görüntülemek için şu komutu kullanacağız: iptables -t nat -L -v -n

Notlar ve referanslar

  1. iptables projesinin sürümleri  " ( 22 Ocak 2021'de erişildi )
  2. (in) "  man iptables  "
  3. (in) "  man ip6tables  "
  4. (in) "  proje web sayfası Netfilter / iptables  "
  5. (in) "  Changelog Çekirdeği 2.6.14  "

İlgili Makaleler

Diğer Aletler