Zeek ile Ağ Trafiğini İzleme ve Analiz Etme

Bu yazımda Zeek’in ne işe yaradığını, nasıl kurulduğunu ve temel kullanım adımlarını paylaştım. Ayrıca Zeek loglarının nasıl analiz edildiğine dair örnekler vererek ağ trafiğini anlamada nasıl yardımcı olduğunu göstermeye çalıştım. Zeek ile ilgili daha ileri düzey senaryoları sonraki yazılarda ele alacağım.

Zeek ile Ağ Trafiğini İzleme ve Analiz Etme

Giriş

Bu yazımda, Zeek aracını tanıyacağız. Zeek, özellikle siber güvenlik alanında ağ trafiğini analiz etmek ve olayları detaylı şekilde loglamak için kullanılan güçlü bir araç. Kurulumu, yapılandırması ve kullanımına dair temel bilgileri paylaşarak Zeek’i sisteminize nasıl entegre edebileceğinizi göstereceğim. Yazının ilerleyen kısımlarında ise logların ne anlama geldiğine, nasıl filtreleneceğine ve Zeek’in esnek yapısının bize neler sunduğuna değineceğim.

Zeek nedir ?

Zeek, eski adıyla Bro, güçlü ve esnek kullanımlı açık kaynaklı bir ağ güvenliği izleme ve analiz aracıdır. Zeek aktif ve pasif olarak ağ trafiğini gerçek zamanlı olarak analiz edebilir, olayları loglayarak alarmlar oluşturabilir.

Zeek’i diğer ağ analiz araçlarından ayıran en büyük özelliği, pcap dosyalarını okuyarak ağdaki trafiği HTTP, DNS, SSL gibi protokollere ayırarak detaylı loglar oluşturur ve bu sayede daha esnek ve kolay bir inceleme yapılmasına olanak sağlar.

Zeek Kurulum ve Yapılandırma Adımları

Adım 1: Zeek Kaynak Kodunun Kopyalanması

  1. Resmi zeek sayfasını ziyaret edin.
  2. Kullandığınız Linux dağıtıcınızı seçin ve “Add repository and install manuelly” sekmesinden sistem sürümünüze uygun versiyonu bulun ve terminal kurulum komutunu kopyalayın.

Adım 2: Derleme ve Kurulum

  1. Kopyaladığınız komutu terminale yapıştırın ve çalıştırın ve indirme tamamlanana kadar bekleyin.
  2. İndirme tamamlandıktan sonra zeek dosyanızın /opt olduğundan emin olun.

Adım 3: Zeek’in Yapılandırılması

Zeek aracını komut satırından kullanabilmek için yüklü olduğu dizini sisteminizin PATH ortam değişkenine yüklenmesi gerekmektedir.

  1. echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc komutunu terminalde çalıştırıyoruz.
  2. Ardından source ~/.bashrc komutunu çalıştırıyoruz.
  3. Terminale zeek –version yazarak konfigürasyonu kontrol edebiliriz.

Adım 4: Zeek Kurulumunun Doğrulanması

  1. Komut istemcinizi açın.
  2. Zeek’in doğru şekilde kurulduğunu ve herhangi bir dizinden erişilebilir olduğunu doğrulamak için şu komutu yazın: zeek –version

Adım 5: Ağ Ayarlarının Yapılandırılması

Zeek başarılı bir şekilde çalıştıktan sonra yapmamız gereken son adım izlenecek ağ ayarlarının yapılandırılması.

  1. İzlenmek istenen ağı tanımlamak için nano /opt/zeek/etc/networks.cfg komutunu terminale yazıyoruz.
  2. Dosya içerisine izlenecek ip adreslerini yazıyoruz ve kaydediyoruz. Özel bir ağ ayarlanması yapılmayacaksa aşağıdaki görselde yer alan şekilde yazarsanız doğru bir şekilde çalışacaktır.

  3. Ağ arayüzünüzü yapılandırmak için ilk olarak ağ kartımızın ismini öğrenmek için ip addr komutunu terminalde çalıştırıyoruz ve ağ kartımızın ismini öğreniyoruz.

 

  1. nano /opt/zeek/etc/node.cfg komutunu terminale yazıyoruz ve açılan dosyada interface alanını öğrendiğimiz ağ kartımızın ismiyle değiştiriyoruz.

  2. Yapılandırmaları kaydetmek ve doğruluğunu kontrol etmek için terminalde zeekctl check, zeekctl deploy ve zeekctl status komutlarını sırasıyla çalıştırıyoruz. Eğer aşağıdaki çıktıyı alıyorsak yapılandırmalarımız çalışıyor demektir.

Zeek Kullanımına Örnek

Zeek aracı ile canlı trafiği izleyebilir veya hazır pcap dosyalarını inceleyebilirsiniz.

Zeek ile pcap dosyalarını analiz etmek için zeek –r dosya.pcap komutunu kullanıyoruz.

Komut çalıştırıldığında, bulunduğunuz dizine çeşitli log dosyaları oluşturulur.

Oluşturulan log dosyaları tablolar şeklindedir. Dosyaların bazılarını açıklayacak olursak;

Conn.log: Kurulan uzun-kısa süreli bağlantıları gösterir (TCP,UDP vs.)

Dns.log: Ağda gerçekleşen dns sorgularını listeler.

http.log: HTTP protokolü üzerinden gerçekleşen istekleri listeler.

Files.log: Ağ üzerinden geçen dosya transferlerini loglar.

Weird.log: Protokol davranışlarında olağan dışı veya anormal durumları tespit eder ve gösterir.

Zeek ile çıkarılan bütün logların anlamını öğrenmek için zeek’in kendi dokümanından yardım alabilirsiniz.

Yazımızın başında zeek’in esnek bir tool olduğunu belirtmiştik. Zeek, açık kaynaklı olmasından dolayı kendi script dili sayesinde özelleştirilebilir ve yeni pluginler eklenebilir durumdadır.

Örneğin belirli portlara yapılan bağlantıları loglamak istersek ya da logların içerisindeki belirli tabloları çekmek istersek bunlara özel yazılmış plugin ve scriptleri kullanarak rahatça yapabiliriz.

Örnek dosyamızdaki dhcp.log içeriğine göz atalım;

Dosya içeriğine baktığımızda bizleri karışık bir tablo karşılıyor. Pcap dosyamızın veri büyüklüğü arttıkça log içerikleri de karışacaktır. Burada zeek-cut plugini ihtiyacımızı karşılıyor.

Zeek-cut, zeek tarafından çıkarılmış loglardaki başlıkları bölerek istenilen başlığın çekilmesini sağlar. Dhcp.log dosyamızda sadece hostname, mac ve client_addr tablolarını çekelim.

Özet

Bu yazımda Zeek’in ne işe yaradığını, nasıl kurulduğunu ve temel kullanım adımlarını paylaştım. Ayrıca Zeek loglarının nasıl analiz edildiğine dair örnekler vererek ağ trafiğini anlamada nasıl yardımcı olduğunu göstermeye çalıştım. Zeek ile ilgili daha ileri düzey senaryoları sonraki yazılarda ele alacağım.