Açık kod Araçlarla Firewall/IPS Testleri-I

Güvenlik ürünü alırken genelde muhatap olunan kilişe laf şudur: “En iyisi bizim ürün, daha iyisi yok” . Hemen hemen tüm ürün satıcıları, danışmanları bunu söylüyorsa ortada  netleştirilmesi gereken bir durum var demektir.

Burada satıcılar kadar alıcı pozisyonundakilere de iş düşer. Alıcı pozisyonundakiler ne istediğini bilirse, en iyi ürünü değil de kendi ortamına uyan, kendi isteklerini  karşılayan ürünü isterse çözüm konusunda önemli mesafe kat edilmiş olur.
Çözülmesi gereken bir sorun da alacağımız ürünün katalog bilgilerine ne kadar güveneceğimizdir. Mesela bir IPS ürünü kataloğunda anlık şu kadar paket analizi yapar, şu kadar trafiğe dayanabilir diyorsa bu değerler genelde laboratuvar ortamlarında özenle oluşturulmuş  trafik örnekleri  üzerinde alınmış demektir.
 Gerçek ortamda ise durum farklı olabilir. Katalog üzerinde yazan değerleri kendiniz de test etmek isterseniz  internette ticari ya da açık kodlu bir dünya yazılım bulabilirsiniz.

Bu yazıda açık kod yazılımlarla Firewall/IPS ürünlerinlerine dair bazı testler nasıl gerçekleştirilir konusunu ele alacağız.

Öncelikle neyi test edeceğimizi belirleyip sonra bu test adımlarını uygun araçlarla gerçekleştirelim.
Sınır güvenliği denilince akla gelen iki ana ürün güvenlik duvarı(firewall) ve IPS(Saldırı Engelleme Sistemi)dir. Bu sistemlere ait test edilmesi gereken konuları şöyle sıralayabiliriz.
  • Çalışan sistemin güvenliği
  • Performans Testleri
  • Kapasite Testleri
  • Kural ve işlevsellik testleri
Test adımları konusunda doğrudan alıp uygulanabilecek standart bir döküman yoktur. Bu konuda standart olarak bilinen tek döküman RFC3511(Benchmarking Methodology for Firewall Performance) dir ve pratikte pek işe yaramamaktadır. Pratik olarak kullanılabilecek güvenilir test yöntemleri için  NSS Labs ve ICSA Labs. firmalarının belgeleri kullanılabilir.

Çalışan sistemin güvenliği

Sınır güvenliği amaçlı kullanılan cihazlar bir donanım ve bu donanım üzerinde çalışan işletim sisteminden oluşur. Çoğu zaman bu işletim sistemi Linux ya da FreeBSD tabanlı olur. Her ne kadar bu işletim sistemleri sıkılaştırılmış olsalar da yine de test etmek gerekir.  Nessus kullanarak bu tip cihazlar üzerindeki bilinen açıklıklar ortaya çıkarılabilir. Eğer sistemin kendisinde bir problem yoksa diğer test adımlarına geçilebilir.

Performans ve Kapasite Testleri

Firewall ve IPS sistemleri genelde bir ağa giriş-çıkış noktasında bulunur ve ağın işlevselliği bu sistemlerin performansına bağlıdır.  Performans ve kapasite testlerinde amaç hedef sistemin ne kadar yüke dayanabildiğini ölçmektir. Bu tip testler için hping, isic ve tcprelay, tomahawk kullanılabilir.
Hping ile hedef sisteme istediğiniz boyutta istediğiniz sayıda paket gönderip sistemin durumunu gözlemleyebilirsiniz. Versiyon 3 ile birlikte gelen –flood özelliği sayesinde hping makinenize bağlı olarak saniyede 50-60 bin paket üretebilir ve bu paketler istenirse rastgele ip adreslerinden geliyormuş gibi ayarlanabilir.  Benzeri şekilde isic(Ip Stack Integrity Checker) aracını kullanarak da firewall/ips sistemlerin paket işleme kapasitesi ölçülebilir.  Isic tcp, ip , udp ve icmp protokollerine ait test bileşenleri içerir.(tcpsic, icmpsic, udpsic, isic)
# tcpsic -s rand -d 192.168.2.23, 445 -F 100 -p 1000000
Using random source IP’s
Compiled against Libnet 1.1.2.1
Installing Signal Handlers.
Seeding with 3329
No Maximum traffic limiter
Using random source ports.
Bad IP Version  = 10%           IP Opts Pcnt    = 10%
Frag’d Pcnt     = 10%           Urg Pcnt        = 10%
Bad TCP Cksm    = 10%           TCP Opts Pcnt   = 10%
1000 @ 70024.3 pkts/sec and 4666.7 k/s
2000 @ 70912.6 pkts/sec and 5177.1 k/s
3000 @ 80069.5 pkts/sec and 5270.3 k/s
4000 @ 70631.9 pkts/sec and 5112.1 k/s
5000 @ 80100.4 pkts/sec and 5455.4 k/s
8000 @ 70965.2 pkts/sec and 5223.5 k/s
Test ettiğiniz cihazın ne kadar trafik yükü kaldırdığını, trafiğin içeriği değiştikçe performasının nereye gittiğini ölçmek gerçek hayattan çeşitli trafik örnekleri kaydedip bunları tekrar oluşturabilirsiniz. Bu konuda tcpreplay ve tomahawk işinizi oldukça kolaylaştıracaktır. Tcpreplay e tomahawk kaydedilmiş trafikleri tekrar oluşturmak için kullanılır. Mesela Nessus, Metasploit ya da benzeri araçları kullanarak yaptığınız testleri  tcpdump ile kaydederek sonra bu trafiği başka bir ortamda tekrar oluşturabilirsiniz.
Tomahawk ve tcpreplay kullanarak gigabit bağlantısı olan bir dizüstü bilgisayardan içerisinde zararlı trafik içeren 500Mb~  trafik üretebilirsiniz. İçerisinde çeşitli zararlı paketler içeren bu miktarda trafik çoğu sistemi test etmek için yeterli olacaktır.

Loglama kapasitesini test etme

Firewall/IPS sistemlerinde ihtiyaç duyulan özelliklerinden biri de loglamadır. Loglar genelde bir veritabanna ya da disk üzerine ikili/text olarak kaydedilir.  Eğer loglama iyi ayarlanmadıysa yukarıda bahsedilen araçlarla çok rahat bu sistemler üzerinde performans sorunları oluşturulabilir. Öyle ya saniyede 30000-40000 paketle uğraşmak ve bunları loglamaya çalışmak sistemi yoracaktır. Dolayısı ile loglama da dikkatli hareket etmek gerekir. Mesela en basitinden TCP bağlantılarında üçlü el sıkışmayı tamamlamadan paketlerin loglanmaması gerekir daha da sağlıklısı oturum kurulmadan paketlerin loglanmamasıdır.

İşlevsellik Testleri

Ftester ile Güvenlik Duvarı ve IPS Testleri

Ftester, güvenlik duvarlarının filtreleme politikası ve IDS/IPS sistemlerin  işlevselliğini test etme amaçlı açık kod bir yazılımdır. Ftester kullanılarak firewall sistemlerin filtreleme kuralları test edilebilir. Ftesterin asıl gücü IDS/IPS testlerinde ortaya çıkar. Araya koyulacak bir IPS sistemi üzerinde stateful bağlantılar oluşturarak sanki gerçek bir trafik akıyormuş gibi tüm exploit imzaları denenebilir. Bunun için ek paket kaydetmenize de gerek yok. Ftester Snort’un imzalarını kullanarak bu imzalardan IDSleri uyandıracak paketler oluşturabilir.
ftester, paket gönderme, paket loglama ve raporlama olmak üzere üç farklı scriptten oluşur.
 – ftest (istemci tarafı paket üretici )
 – ftestd (ftest tarafından gönderilen paketleri dinleyen kısım)
 – ftest.conf (ftest için yapılandırma dosyası)
 – freport (ftest ve ftestd çıktılarını  yorumlayan ve rapor üreten kısım)
Temel çalışma mantığı şu şekildedir:

Ftester Kurulumu

Test yapılacak her iki sisteme de ftester paketi aşağıdaki gibi kurulmalıdır.

Gerekli Perl modüllerinin kurulumu

# perl -MCPAN -e “install Net::RawIP”
# perl -MCPAN -e “install Net::Pcap”
# perl -MCPAN -e “install Net::PcapUtils”
# perl -MCPAN -e “install NetPacket”
# wget http://dev.inversepath.com/ftester/ftester-1.0.tar.gz
# tar -xzf ftester-1.0.tar.gz
Kurulumdan sonra test aşamasına geçilebilir. Testlerin nasıl yapılacağı ftest.conf dosyasından ayarlanır.

Firewall filtreleme kurallarının tespiti

Firewall kurallarının testi için kullanılan şablon.
# Source Address:Source Port:Destination Address:Destination Port:Flags:Protocol:Type of Service
ftest.conf dosyasını aşağıdaki gibi düzenleyerek güvenlik duvarının TCP/UDP ve icmp protokollerine ait filtreleme politikası ve stateful çalışma yapısının sağlamlığı öğrenilebilir.
192.168.2.23:1-1024:100.100.100.86:1-65535:AS:TCP:0
192.168.2.23:1-1024:100.100.100.86:1-65535:S:TCP:0
192.168.2.23:1-1024:100.100.100.86:1-65535:A:TCP:0
192.168.2.23:1-1024:100.100.100.86:1-65535::UDP:0
192.168.2.23::100.100.100.86:::ICMP:3:5
İstemci tarafında  ve sunucu tarafında aşağıdaki komutları çalıştırdıktan sonra
istemci#./ftest -f ftest.conf -v -d 0.01
sunucu# ./ftestd -i eth0 -v
Freport scripti ile her iki komutun çıktısı yorumlanır ve rapor üretilir.
#./freport ftest.log ftestd.log
Authorized packets:
-------------------

22 - 192.168.2.23:1025 > 100.100.100.86:22 S TCP 0
25 - 192.168.2.23:1025 > 100.100.100.86:25 S TCP 0
80 - 192.168.2.23:1025 > 100.100.100.86:80 S TCP 0
113 - 192.168.2.23:1025 > 100.100.100.86:113 S TCP 0
1027 - 192.168.2.23:80 > 100.100.100.86:1025 PA TCP 0

Modified packets (probably NAT):
--------------------------------

                  >>>>>>>>

Filtered or dropped packets:
----------------------------

1 - 192.168.2.23:1025 > 100.100.100.86:1 S TCP 0
2 - 192.168.2.23:1025 > 100.100.100.86:2 S TCP 0
3 - 192.168.2.23:1025 > 100.100.100.86:23 S TCP 0
...

Ftester ile IDS Testleri

Bu tip testlerde en önemli konu test edilecek cihazın performansı ve atakları yakalama başarısıdır. Normal trafikte tüm atakları engelleyen fakat trafik miktarı arttıkça atakları karçırmaya başlayan bir IPS çok makbul sayılmayacaktır. Bu sebeple IPS testleri yaparken saldırı paketleri içeren trafikle birlikte yüklü miktarda trafik aktarımı yapmak testin sonuçlarını etkileyecektir. Performans testleri için genelde kaydedilmiş paketlerin tcprelay ya da tomahawk gibi araçlarla tekrar üretilerek istenilen oranda gerçek trafik elde edilmesi ile yapılır. Ya da anlık işleyeceği paket sayısını test etmek için paket üretici yazılımlar kullanılır.
Paket üretmek ve trafik miktarını arttırmak bir nebze kolaydır fakat piyasada bulunan tüm exploitleri barındıran paket üreticileri genelde ticari ürünlerdir. Bu durumda yapılacak iş ya Metasploit, Nessus gibi araçlarla bir sistemi taryarak arada geçen trafiği kaydedip bu trafiğitcpreplay ile tekrar oluşturarak  IPS testlerinde kullanmak ya da bir IPS’in barındırdığı imzaları işleyerek bunlardan saldırı içerene paketler oluşturan yazılımlar kullanmak. İşte Ftester burada devreye giriyor ve bize Snort tarafından kullaılan tüm imzaları kullanarak atak imzası taşıyan paketler oluştrmaya olanak veriyor.
IDS/IPS testi için gerekli ftest.conf yapılandırması
ids=192.168.0.10:1025:10.1.7.1:25:S:TCP:0:VRFY
ids-conn=192.168.0.10:23:10.1.7.1:1025:PA:TCP:0:to su root
insert /usr/local/etc/snort/rules/exploit.rules 192.168.0.10 10.1.7.1 0
insert-conn /usrlocal/etc/snort/rules/bad-traffic.rules 192.168.0.10 10.1.7.1 0
İds= tanımı ile IDS/IPS sistemi üzerinden stateful olmayacak şekilde bir test yapılır. Yani sanki 25TCP portu üzerinden bir bağlantı varmış ve bu bağlantı üzerinden VRFY komutu gönderilmiş gibi. Çoğu IPS sistemi stateful çalıştığı için bu tip denemeler başarı ile yakalanacaktır. Eğer stateful bağlantılar aracılıı ile test yapmak isterseniz ids-conn tanımını kullanabilirsiniz.
insert-conn tanımı ile doğrudan Snort saldırı engelleme sisteminin imzaları kullanılabilir. Ftester buradan alacağı imzalardan saldırı paketleri üretecek ve ağa gönderecektir. Burada dikkat edilmesi gereken Ftester’in snort kurallarındaki değişken tanımlarını($HOME_NET gibi) anlamadığıdır. Kurallar üzerinde bu alanların sed komutu ile uygun ip adresleri yazılması gerekecektir.
Bunların haricinde ftester çeşitli IDS atlatma(evasion) tekniklerini kullanarak da test yapabilir. Bunun için –e parametresi kullanılmalıdır.  Bir sonraki yazıda ftester ile test örnekleri, çıktıları  ve IDS üzerinde bıraktığı logları incelemeye çalışacağız.
This entry was posted in DOS/DDOS, Firewalls, IDS/IPS/IDP, Network Security. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

twenty − 7 =