Veri Analizi ve Görselleştirme
Günümüzde kurumların iç ağdaki trafiği ve internet trafiğini yönetebilmek için güvenlik duvarı, ids/ips, içerik filtreleme, spam analyzer vb. ürünlerin bir ya da birkaçını kullandığını söylemek mümkündür. Bu ürünler güvenliği artırmakta ve yönetimi kolaylaştırmaktadır. Bu ürünlerin sağladıkları faydalardan biri de gerçekleşen olayların kayıtlarını (log) tutmalarıdır. Bu sayede olay kayıtları açılarak gerçekleşen olayların detayları incelenebilir. Ancak trafiğin yoğun olduğu yerlerde doğal olarak olay kayıtları da fazla birikmektedir. Spesifik kullanıcı ya da ip üzerinde detaylara bakmak kolay bir işlem iken, genel manada bu kayıtlar üzerinden anlam çıkarabilmek, kötü niyetli aktivitelerin tespitini gerçekleştirmek o kadar kolay olamayabilir. Bu yazıda bu konuya çözüm olarak büyük olay kayıtları üzerinde analiz ve görselleştirme yapılması anlatılıp, olay kayıtları üzerinde genel bir bakışa sahip olmak, ağ performansını izlemek, anomali tespiti gerçekleştirmek benzeri faaliyetlerde bulunmak isteyen kişiler için bu kayıtların anlam ifade etmesini sağlayıcı bir takım pratikler gösterilecektir.
Bu yazıda ağ akışı (network flow) kayıtları tutan bir ağ ürününün (firewall, switch, router, ips/ids vb.) olay kayıtlarının analizi ve görselleştirilmesi ele alınacaktır. Bu işlemler için Pentaho ürün ailesinden iki ürün kullanılacaktır. Kısaca bahsetmek gerekirse Pentaho iş zekası üzerine açık kaynaklı bir çok ürünü bulunan bir firmadır. Ürünlerin çoğu, kullanıcıları kod yazmaktan, zaman alıcı işlerden ciddi manada kurtarmaktadır. Bu ürünlerden Data Integration ve Report Designer’dan yararlanılacaktır. Data Integration ETL işlemleri gerçekleştirmeyi sağlamaktadır. ETL (extract-transformation-load), herhangi bir yerde herhangi bir formatta bulunan veriyi alıp üzerinde istenilen işlemleri gerçekleştirip herhangi bir formatta başka bir yere veriyi saklamayı sağlayan bir süreçtir. Report Designer ise kolay bir şekilde grafiksel arayüzlere sahip akıllı, otomatize raporlar hazırlamayı sağlayan bir üründür.
Örnek olarak aşağıdaki şekilde bir parçası görülen, 200.000 satırlık csv formatında bir olay kaydı dosyası kullanılacaktır.
Olay kaydındaki veri yapısı ve ne anlama geldikleri aşağıdaki gibidir:
- date flow start: Trafiğin başlangıç zamanı
- duration: Trafiğin ne kadar sürdüğü
- proto: Trafiğin hangi protokol üzerinden iletildiği
- src IP Addr: Trafiğin kaynak ip adresi
- src Port: Trafiğin kaynak portu
- dst IP Addr: Trafiğin hedef ip adresi
- dst Port: Trafiğin hedef portu
- packets: Trafiğin paket miktarı
- bytes: Trafiğin byte cinsinden miktarı
- pps: Saniyede akan paket miktarı
- bps: Saniyede akan bit miktarı
- bpp: Paket başına akan byte miktarı
- flows: Oluşan trafik miktarı
Report Designer ürünü girdi olarak veritabanı tablosu, xml, ya da kendi ürünlerinden birinin çıktısını istemektedir. Ancak bizim dosyamız csv formatında. İşte bu yüzden verinin görselleştirilmesinden önce analizinin, diğer bir deyimle verinin üzerinde ETL işleminin yapılması gerekmektedir. Uygun girdi oluşturmak için veri veritabanına atılacaktır. Bu işi gerçekleştirmek için Data Integration kullanışlı bir üründür. Sürükle bırak arayüzü sayesinde arzu edilen işlem kolayca görsel olarak anlatılabilmektedir. Aşağıdaki şekilde görüldüğü gibi arayüz iki ayrı bölümden oluşmaktadır. Soldaki bölüm sürükle bırak şeklinde kullanılan araç kutusu. Sağ taraf ise arzu edilen işlemin tasarlandığı alan. Tasarım alanında görüldüğü gibi üç düğüm kullanılarak ve aralarında gerekli bağlantılar kurularak amaca ulaşılacaktır.
Soldan sağa, birinci düğüm –“csv file import”– olay kaydı dosyasını Data Integration’a vermeyi sağlamakta. Düğümün detaylarında olay kaydı dosyasının nerede bulunduğu, dosyadaki alanların hangi ayraçla ayrıldığı, dosyada header/footer bulunup bulunmadığı, dosyada kullanılan kodlama, lokal format, dosyadaki alanların adı/tipi/formatı/uzunluğu belirlenir. Bu sayede olay kaydı dosyasındaki veriyi Data Integration kendi obje yapısına map edebilmekte. Bu aşamadan sonra ihtiyaç, aslında veri yapısını bir veritabanı tablosuna atmak. Ancak daha önce bir başka küçük ihtiyaç söz konusu. Yukarıda verilen veri yapısı hatırlanırsa, verilerin id’leri yok. Bu veride her satırın başına id ekleyerek veritabanına göndermek istendiğini varsayalım. Bunun için ikinci düğüm kullanılmaktadır. İkinci düğüm –“id”– bir sıra ekleme aracı. Düğümün detayında id’ler kaçtan başlayıp kaça kadar devam edecek gibi bilgiler aktarılıyor ve id ekleme işlemi bitiyor. Diğer aşamaya geçmeden önce birinci düğümden ikinci düğüme bir bağlantı oluşturulur. Bu sayede önce veriler csv dosyadan alınacak, ardından her birine id eklenecek. Şimdi sıra verileri veritabanına göndermekte. Bunun için üçüncü düğüm –“Table output”– kullanılmakta. Bu düğümün detaylarında bağlanılacak veritabanı sunucusunun adresi, portu, veritabanının adı, kullanıcı adı ve şifresi, verinin atılacağı tablo, gelen verideki alanların tablonun hangi alanlarına gideceğine dair bir mapping gibi çeşitli bilgiler sağlanmaktadır. Ardından ikinci düğümden üçüncüye bir bağlantı oluşturularak tasarım tamamlanır. Bu tasarım çalıştırıldığında csv dosyada bulunan olay kayıtları, başlarına birden başlayıp birer birer artan id değerlerini alarak istenilen tabloya atılacaktır. Artık üzerinde görselleştirme yapılabilecek bir veri mevcut.
Raporun hazırlanması için Report Designer ürünü kullanılacaktır. Bu ürün de Data Integration ürünü gibi sürükle bırak bir kullanıma sahiptir. Önceki üründe olduğu gibi sol kısımda dar bir sütun şeklinde araç kutusu bulunmakta ve tasarım alanı araç kutusunun sağında yer almaktadır. Farklı olarak en sağda ise tasarım öğelerini gösteren bir alan (Structure), ayrıca veritabanı ve fonksiyon tanımlarının yapıldığı diğer bir alan (Data) bulunmaktadır.
Tabloya atılan verileri çekmek için uygun bir sql sorgusu hazırlanıp Data alanını kullanarak Report Designer’a bağlantı bilgileri ve sorgu verildiğinde, Report Designer veri yapısına sahip olur. Şimdi rapor hazırlanabilir. Şekil 4’te de görüldüğü gibi Report Designer da bir rapor beş ayrı bölüm olarak ele alınır:
- Page Header: Her sayfanın üst bölümünde istenilen bilgilerin bulunduğu yer
- Report Header: Raporun başlangıcında bulunması istenilen bilgilerin bulunduğu yer
- Details: Raporun içeriğinde bulunması istenilen bilgilerin bulunduğu yer
- Report Footer: Raporun bitiminde bulunması istenilen bilgilerin bulunduğu yer
- Page Footer: Her sayfanın alt bölümünde istenilen bilgilerin bulunduğu yer
Bu yazıda eldeki ağ akışı olay kayıtları üzerine bir rapor ürettirilip içinde iki görselleştirme yapılacaktır. Raporda önce dışarıya en çok trafik yapan ilk 10 ip adresi pasta grafiği üzerinde sunulacaktır. Ardından kaynak-hedef bazında en çok trafik oluşturmuş ilk 10 eşleşme listelenecek, listelenen veride trafik esnasında gelen-giden veri, boyutuna göre otomatik olarak 3 farklı renkte sunulacaktır. Ayrıca yapılan toplam bağlantı miktarı ve toplam gelen-giden veri miktarı otomatik olarak hesaplanacaktır.
Raporda bir kereye mahsus yer alacak öğeler Report Header kısmında tasarlanır. Örneğin şirket logosu ve doküman ismi. Bunun için araç kutusundan resim ve etiket tanımlanabilecek araçları tasarım alanına çekiyoruz. Keza bir kere gösterimi yapılacak pasta grafiği de bu alan da yer alacaktır. Bunun için de aynı şekilde araç kutusundan grafik aracı alınır. Grafik aracına pasta grafiği istenildiği, daha önce yapılan veritabanı bağlantısındaki hangi alanlar için gruplama yapılacağı ve hangi değer üzerinden miktar hesaplaması yapılacağı, renk ve font düzenlemeleri belirtilir. Bu aşamaya kadar ilk istenilen görselin tasarımı tamamlandı. Ardından ikinci görsel olan listeleme adına, başlık bilgisi bir defaya mahsus kullanılacağı için Report Header kısmından çıkmadan önce başlık tanıtımı yapılmalıdır. Bu raporda aşağıdaki format tercih edilmiştir:
Flow miktarı, KaynakIp, KaynakPort, HedefIp, HedefPort, ToplamBPS
Birden çok sonucun döneceği listeleme işi Details’da yapılır. Buraya daha önce veritabanı bağlantısı yapıldığında alınacak alanlar başlık bilgisinin altına doğru alan gelecek şekilde map edilir. Toplam BPS alanı üzerinde miktara göre renklendirme yapmak için detaylara girip koşul yazılır. Böylece farklı aralıklar için üç farklı renk tanımı yapılabilir. İkinci istenen görselleştirme de hazır. Rapor tamamlanırken Report Footer alanında sonuç işlemi yapılır. Flowlar ve BPS bilgileri toplamı burada sunulur. Bunun otomatik gerçekleşmesi için Data alanında yeni fonksiyon tanımları yapılır. Raporun sonunda listelemedeki renklendirmeye dair bilgi verilmekte, ve şirketin adı yazılarak rapor bitirilmektedir. Raporun pdf formatında alınmak istenmesi durumu için Page Footer alanında sayfa numarası tanımı yapmak da mantıklı olacaktır. Ayrıca rapor excel ve html dosyası şeklinde de oluşturabilmektedir. Oluşturulan raporun html görünümü aşağıdaki gibidir.