Iptables için otomatik testleri nasıl yazabilirim?


13

İle bir Linux yönlendirici yapılandırıyorum iptables. Aşağıdaki gibi şeyler iddia yapılandırma için kabul testleri yazmak istiyorum:

  • İnternetteki bazı kişilerden gelen trafik yönlendirilmez ve
  • TCP'den kurumsal LAN üzerindeki ana bilgisayarlardan DMZ'deki web sunucusunda 80 numaralı bağlantı noktasına iletilir.

Eski bir SSS bir ima iptables -Cgibi bir şey sormak için birini verir seçeneği, "X'ten bir paket verildi, Y'ye, liman Z, kabul veya kalkması yönünde?" SSS bunun böyle çalıştığını öne sürse de, iptables(ancak ipchainsörneklerde kullandığı gibi değil), -Cseçenek tüm kurallardan geçen bir test paketini taklit etmiyor, aksine tam olarak eşleşen bir kuralın varlığını kontrol ediyor gibi görünüyor. Bunun test olarak çok az değeri vardır. Kuralların sadece var olduklarını değil, istenen etkiye sahip olduklarını iddia etmek istiyorum.

Daha fazla test sanal makinesi ve sanal ağ oluşturmayı, ardından nmapefektler gibi araçlarla araştırma yapmayı düşündüm . Ancak, tüm bu ek sanal makineleri oluşturmanın karmaşıklığı nedeniyle bu çözümden kaçıyorum, bu da bazı test trafiği oluşturmak için oldukça ağır bir yol. Ayrıca, üretimde gerçek bir sunucu üzerinde de çalışabilen otomatik bir test metodolojisine sahip olmak güzel olurdu.

Bu sorunu başka nasıl çözebilirim? Rasgele trafik oluşturmak veya simüle etmek için kullanabileceğim bir mekanizma var mı iptables?



1
@dawud Bunlardan herhangi birinin kopya olduğunu sanmıyorum. Bir bağlantı noktası taraması yapmayı biliyorum: Bu iyi bir test değil çünkü kontrol edebileceğim hedeflere ve kaynaklara yapılan testlerle sınırlıyım. Benim endişem de sunucudan kendimi kilitlemek değil. Güvenlik duvarı kurallarının aslında onları tasarladığım etkilere sahip olduğunu otomatik olarak test etmek istiyorum .
Phil Frost

Yanıtlar:


2

Biraz kodlama yapmaya hazırsanız, bunu deneyebilirsiniz:

  • Sistem çağrısı için CLONE_NEWNETbayrağı clonekullanarak veya ip netns addve ip netns execkomutlarını kullanarak yeni bir ağ ad alanı oluşturun .
  • Bu ad alanında tunsürücüyü veya kullanarak sanal ağ arabirimleri kümesi sandık ip link add.
  • Yapılandırmayı kullanarak yükleyin iptables-restore
  • Aracılığıyla kurallara paketlerinin bir dizi besleyin tunveya vethcihazların
  • Cihazlardan tunveya vethcihazlardan doğru paketleri aldığınızdan emin olun.

Bu yaklaşım, iletilen paketler için kuralları test etmek için muhtemelen en iyi sonucu verecektir. Iptables'ın kullanıldığı makineye / makineden bağlantı biraz daha fazla çaba gerektirir, ancak bu şekilde de test edilebilir.

Kullanılabilecek bir dizi komut örneği:

ip netns add test-iptables
ip netns add test-iptables-some-guy-on-the-internet
ip netns add test-iptables-lan-host

ip netns exec test-iptables ip link add eth0 type veth peer name eth0-peer
ip netns exec test-iptables ip link set eth0-peer netns test-iptables-some-guy-on-the-internet
ip netns exec test-iptables ip link add eth1 type veth peer name eth1-peer
ip netns exec test-iptables ip link set eth1-peer netns test-iptables-lan-host

ip netns exec test-iptables ifconfig eth0 192.0.2.2 netmask 255.255.255.0
ip netns exec test-iptables ifconfig eth1 203.0.113.1 netmask 255.255.255.0

ip netns exec test-iptables-some-guy-on-the-internet ifconfig eth0-peer 192.0.2.1 netmask 255.255.255.0
ip netns exec test-iptables-some-guy-on-the-internet route add default gateway 192.0.2.2

ip netns exec test-iptables-lan-host ifconfig eth1-peer 203.0.113.2 netmask 255.255.255.0
ip netns exec test-iptables-lan-host route add default gateway 203.0.113.1

ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2
ip netns exec test-iptables iptables-restore < /tmp/iptables-test
ip netns exec test-iptables-some-guy-on-the-internet telnet 203.0.113.2

ip netns del test-iptables
ip netns del test-iptables-some-guy-on-the-internet
ip netns del test-iptables-lan-host

Bu, test etmek için üç ağ ad alanı oluşturur ve bunlardan birine bir dizi iptables kuralı yükler. Diğer ikisi internette bir adam ve LAN'da bir ev sahibi olarak hizmet eder.

Yukarıdaki örnekte, ad telnetkomutundan ilk komut alma bağlantısı reddedildi test-iptables-lan-host, ikinci telnetkomut, kural kümesi paketi bıraktığında zaman aşımı alır.

Bu, tüm ağ üretiminizin varsayılan olarak gerçekleşeceği ilk ağ ad alanına dokunmaz. Üretiminizden daha fazla ayırma elde etmenin tek yolu, onu ayrı bir ana bilgisayarda (fiziksel veya sanal) çalıştırmaktır.


0

profesyonel dünya bunu 2 şirket tarafından sağlanan donanım / yazılım yardımıyla yapar.

www.ixiacom.com

www.spirent.com

İlk durumda Ixia 400T şasi + Ixload gibi bir şey kullanabilirsiniz.

İkinci durumda ilgili uygulamalarla Smartbits veya Testcenter hattı

Bu cihazlar (diğer şeylerin yanı sıra), seçtiğiniz hedef sunucunuzda farklı türde istekler gerçekleştiren çok sayıda istemciyi taklit edebilir. Önceden tanımlanmış bir dizi saldırı testi de dahil olmak üzere sunucularınızın güvenliğini test etmeye hazırdırlar, ayrıca her zaman kendi kümenizi tanımlayabilirsiniz. Ayrıca yük stres testleri ve benzerleri gibi başka birçok özelliğe de sahiptirler.

Ucuz bir seçenek değil.


sade cehaletin geçerli cevapları sessizce nasıl düşüreceğini görmek şaşırtıcı ...
Pat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.