7 Nisan 2013 Pazar

Bro IDS 101 - Nass oluyor da oluyor?


IDS denince akla gelen 2-3 isimden biri,Bro IDS'i anlatacağım bu yazı dizisi açık kaynak kodlu güvenlik çözümlerini sevenlerin ilgisini çekecektir. Açık konuşmak gerekirse adını daha önce çok sık duymuş olmama rağmen Bro ile haşır neşir olma merakı ürünü geliştiren ekibin,Mandiant'ın Çin hükümeti destekli bilgisayar saldırı takımı APT1 raporu ardından bu takım ile ilişkilendirilebilecek ağ trafiğinin tespit edilmesini sağlayan scriptleri yayınlamasından sonra kabardı. Ürünü araştırdıkça, bir yandan ne kadar esnek ve kullanışlı olduğunu diğer yandan hakkında ne kadar az İngilizce kaynak olduğunu farkettim. Türkçe kaynak ise yok,bulamadım. Blog'un "az bilineni,az konuşulanı anlatmak" motto'su ile böyle bir yazı dizisi hazırlamaya karar verdim.

İsmi logosundan anlaşıldığı gibi gözetleyen,gözleyen "Big Brother" teriminin kısaltmasından gelen bu ürünün mazisi Vern Paxson tarafından geliştirilmeye başladığı 90'lı yılların ortalarına kadar gidiyor,hemen hemen Snort'la yaşıt. Bro'yu Snort'dan ayıran en önemli nokta daha yüksek throughput,bir başka deyişle ağ trafiğinin Gb seviyesinde olduğu ortamlar ( tecrübe ve test etmedim ama Snort'un bu büyüklükte paket kaçırdığı yani paket kaybı yaşadığı söyleniyor)  için tasarlanmış ve geliştirilmiş olması.Bunun da en büyük nedeni -Bro'yu geliştiren ekibin de sık sık üzerine basa basa belirttiği gibi- ürünün ciddi bilgisayar mühendisliği temeli ve akademik birikimle geliştirilmesi. Diğer bir nokta ise Snort paket dayalı iken,Bro'nun bağlantı dayalı bir ürün olması,bu da Bro IDS bağlantı bilgisini tutar ve bir bağlantıyı daha öncekilerle ilişkilendirebilir demek.
Bro IDS'in temelinde ekibin geliştirdiği bir model ve bu modelin kullanıldığı -bro programming language de denen- betik ortamı var.
Bro'nun esnekliği ve cazibesinin de asıl kaynağı bu programalam dili zaten. Diğer bir çok programlama dilinde olduğu gibi temelde C ve C++ olmasına rağmen öğrenmesi biraz zor bir dil. Bro'nun çok sahiplenilmemesi, yaygın kullanılmamasının en büyük nedenlerinden biri de bu bence. Ha bir de gui sever güvenlik uzmanları için bir arayüz sunmayışı :) En büyük eksiklerinden biri ise inline mod'da çalışmaması. Bir IDS'den inline mod'da çalışmasını beklemeyebilirsiniz,bağlantı sonlandırma,kesme gibi işlemler yapılmadığı için saçma gelebilir ama izlemek,analiz etmek istediğiniz trafiği fiziksel hub ve benzeri cihazlarla ya da port spanning gibi yöntemlerle Bro kurulu bilgisayar ya da sunucunuzun ilgili ethernet portuna yönlendirmek ağ cihazının performansın düşmesine ya da yükün artmasına neden olur,bu kaçınılmaz. Her ne kadar Bro IDS'i asıl kullanmaktaki amaç ağ trafiğini analiz etmek,anormal trafiği,saldırı izlerini tespit etmek olsa da,router/switch ACL'lerine tanım eklemek gibi yöntemler kullanılarak, Bro ile ağ trafiğine müdahele etmek de mümkün. Bro'nun geleceğinin çok parlak ve daha yaygın olarak kullanılacağını tahmin ediyorum.
Bu kadar tarih bilgisi ve tanıtımdan sonra biraz pratik yapalım.
Bro IDS, Security Onion dağıtımı ile birlikte birkaç adımlık konfigürasyon sihirbazından sonra çalışabilir ve kullanılabilir halde de geliyor ama blog yazıları için hazırladığım sanal ortamda Bro'yu en keyifli Linux dağıtımlarından Ubuntu 12.10 versiyonu üzerine kurarak anlatacağım.
Bro IDS kaynak kodlarını indirip kuruluma başlamadan önce, Bro'nun ihtiyaç duyduğu paketleri

apt-get install libncurses5-dev g++ bison flex libmagic-dev libgeoip-dev libssl-dev build-essential python-dev libpcap-dev cmake swig2.0 libssl0.9.8

komutu ile kurduktan sonra Bro IDS kaynak kodları,projenin web sitesinden indirin.

./configure
make
make install

komutları ile kurun. ./configure betiğinde "--prefix" parametresi ile kurulumun yapılacağı başka bir dizin belirtmediyseniz Bro IDS "usr/local/bro" dizini altına kurulacaktır. Bu dizine "BRODİZİNİ" diyecek olursak, Bro IDS'i varsayılan ayarlarıyla kullanmaya başlamadan önce tek yapmamız gereken "BRODİZİNİ/etc" dizini altındaki "networks.cfg" ve "node.cfg" konfigürasyon dosyalarında gerekli değişiklikleri yapmak olacak. Networks.cfg konfigürasyon dosyası, "home network" diye tabir edilen kurum yerel ağınızın kullandığı Subnet'in tanımlandığı dosyadır (Resim 1) Burada belirtilen ağ adreslerine göre iç ve dış dünya analiz edilen trafikte birbirinden ayırdedilir.

Resim 1
Node.cfg ise trafik izlemesi,dinlemesi yapılacak ağ adaptörü ile birlikte Bro'nun tek başına ya da cluster mimarisinde çalışıp çalışmayacağının belirtildiği konfigürasyon dosyasıdır.( Resim 2 )

Resim 2

Bu değişiklikleri yaptıktan sonra "broctl" komutuyla "Bro Kontrol" komut satırına geçin (Resim 3) ve bu yeni bir kurulum olduğundan ilk olarak "install" komutu ile varsayılan politikaları oluşturun (Resim 4). Daha sonra "start" komutunu verdiğinizde Bro IDS'in çalışmasını başlatmış olacaksınız (Resim 5). Bu haliyle,yani hiç bir politika tanımı yapmadan dahi,kurulumla birlikte gelen varsayılan politikalar kullanılarak belirttiğiniz ağ arayüzü ( network interface ) nden dinlenen/izlenen trafik analiz edilir erişim kayıtları,anormallikler bir takım log dosyalarına ASCII formatında yazılmaya başlar. Bro IDS şimdilik trafik ve olay kayıtlarını veritabanına yazmıyor. Log dosyalarında saklanan kayıtlar günlük olarak arşivleniyor. Geçmişe dönük GUI arayüzü ile sorgulama yapmayı düşünüyorsanız Bro IDS ile birlikte ELSA kullanabilirsiniz.
Dizinin bu ilk yazısında Bro IDS'i tanımış oldunuz ve kurulumun ne kadar kolay olduğunu gördünüz. Devam edecek yazılarda Bro'nun log dosyalarından,log yapısından,konfigürasyon değişikliklerinden ve en önemlisi Bro betik dili ( Bro Scripting Language) ve Bro betiklerinden ( scripts ) bahsedeceğim.

Resim 3

Resim 4

Resim 5

Hiç yorum yok:

Yorum Gönder