Takip et

Giriş: Bro (Şimdiki Adıyla Zeek) Nedir ve Neden Önemlidir?

Giriş: Bro (Şimdiki Adıyla Zeek) Nedir ve Neden Önemlidir? Ağ güvenliği ve izlemesi, günümüzün dijital dünyasında kritik bir öneme sah

Giriş: Bro (Şimdiki Adıyla Zeek) Nedir ve Neden Önemlidir?

Ağ güvenliği ve izlemesi, günümüzün dijital dünyasında kritik bir öneme sahiptir. Bu alanda öne çıkan güçlü araçlardan biri de Bro olarak bilinen, şimdiki adıyla Zeek’tir. Zeek, ağ trafiğini derinlemesine analiz eden, yüksek performanslı, açık kaynaklı bir ağ güvenlik monitörüdür (NSM). Geleneksel IDS/IPS sistemlerinin ötesine geçerek, ağınızdaki her türlü etkinliği (bağlantılar, DNS sorguları, HTTP istekleri, SSL/TLS el sıkışmaları vb.) kapsamlı bir şekilde kaydeder ve bu verilerden güvenlik analistleri için anlamlı bilgiler çıkarır.

Zeek’in temel gücü, ağ trafiğini anlamlı olaylara dönüştürme yeteneğinde yatar. Bu olaylar, özel bir betik dili (Zeek Script Language) kullanılarak karmaşık analizler ve kural tabanlı tespitler için işlenebilir. Bu sayede, kötü amaçlı yazılım aktiviteleri, politika ihlalleri, veri sızıntıları ve diğer şüpheli davranışlar gibi tehditler proaktif bir şekilde tespit edilebilir. Ubuntu 16.04, Zeek’in kurulumu için o dönemde yaygın olarak kullanılan ve birçok sunucu ortamında hala mevcut olan sağlam bir işletim sistemidir. Bu rehberde, Zeek’i (eski adıyla Bro) Ubuntu 16.04 sisteminize kaynak koddan derleyerek nasıl kuracağınızı adım adım öğreneceksiniz.

Ön Gereksinimler ve Sistem Hazırlığı

Zeek kurulumuna başlamadan önce sisteminizin güncel olduğundan ve gerekli bağımlılıkların yüklü olduğundan emin olmalısınız. Bu adımlar, derleme sürecinin sorunsuz ilerlemesi için hayati öneme sahiptir.

Sistem Güncellemesi

İlk olarak, Ubuntu sisteminizin paket listesini güncelleyin ve mevcut tüm paketleri en son sürümlerine yükseltin:

sudo apt update
sudo apt upgrade -y

Gerekli Bağımlılıkların Kurulumu

Zeek’i kaynak koddan derlemek için çeşitli geliştirme araçlarına ve kütüphanelere ihtiyacımız olacak. Aşağıdaki komut, Zeek’in başarılı bir şekilde derlenmesi için gereken tüm bağımlılıkları yükleyecektir:

sudo apt install -y git cmake make gcc g++ libpcap-dev libssl-dev libjson-c-dev bison flex libgeoip-dev swig python-dev curl
  • git: Zeek kaynak kodunu GitHub’dan klonlamak için.
  • cmake: Derleme yapılandırmasını yönetmek için.
  • make: Kaynak kodu derlemek için.
  • gcc, g++: C/C++ derleyicileri.
  • libpcap-dev: Ağ paketlerini yakalamak için.
  • libssl-dev: SSL/TLS desteği için.
  • libjson-c-dev: JSON desteği için.
  • bison, flex: Zeek betik dilini ayrıştırmak için.
  • libgeoip-dev: Coğrafi konum verilerini kullanmak için (IP adreslerinden ülke bilgisi gibi).
  • swig: Zeek’in Python gibi diğer dillerle entegrasyonu için.
  • python-dev: Python entegrasyonu için gerekli Python geliştirme dosyaları.

Sistem Kaynakları

Zeek, özellikle yüksek trafikli ağlarda çalışırken önemli miktarda CPU, RAM ve disk alanı tüketebilir. Kurulum yapacağınız sunucunun yeterli kaynaklara sahip olduğundan emin olun:

  • CPU: Özellikle yüksek hızda çalışan ağlar için birden fazla çekirdekli güçlü bir işlemci önerilir.
  • RAM: Ağ trafiğinin hacmine bağlı olarak 8GB veya daha fazla RAM idealdir. Küçük ortamlar için 4GB yeterli olabilir.
  • Disk Alanı: Zeek, tüm ağ etkinliklerini logladığı için kısa sürede çok fazla disk alanı kullanabilir. En az 50GB boş alan bulundurmanız, uzun vadede logları saklamak için ise daha fazla alan ayırmanız önerilir.

Bro/Zeek Kaynak Kodunu İndirme ve Derleme

Gerekli tüm bağımlılıklar yüklendikten sonra, Zeek’in kaynak kodunu indirip derleme işlemine geçebiliriz.

Zeek Kaynak Kodunu İndirme

Zeek’in en güncel kararlı sürümünü GitHub deposundan klonlayarak edinebiliriz. Genellikle /opt veya /usr/local/src gibi bir dizin bu tür kaynak kodları için tercih edilir. Biz /opt dizinini kullanalım:

cd /opt
sudo git clone --recursive https://github.com/zeek/zeek
cd zeek

--recursive bayrağı, Zeek’in ihtiyaç duyduğu tüm alt modülleri de klonlamasını sağlar.

Derleme ve Kurulum

Kaynak kodu indirdikten sonra, cmake ile derleme yapılandırmasını oluşturmalı, ardından make ile derlemeli ve son olarak make install ile sistemi kurmalıyız.

sudo mkdir build
cd build
sudo cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/zeek -DBROKER_DISABLE_TESTS=ON -DBUILD_SHARED_LIBS=ON
sudo make -j$(nproc)
sudo make install
  • sudo mkdir build && cd build: Derleme dosyalarını ayrı bir dizinde tutmak iyi bir uygulamadır.
  • sudo cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/zeek -DBROKER_DISABLE_TESTS=ON -DBUILD_SHARED_LIBS=ON:
    • ..: cmake‘e üst dizindeki (/opt/zeek) CMakeLists.txt dosyasını kullanmasını söyler.
    • -DCMAKE_INSTALL_PREFIX=/usr/local/zeek: Zeek’in kurulacağı dizini belirtir. Bu, Zeek dosyalarını sistem PATH’inden ayrı tutmak için iyi bir yöntemdir.
    • -DBROKER_DISABLE_TESTS=ON: Broker bileşeninin testlerini devre dışı bırakır, derleme süresini kısaltır.
    • -DBUILD_SHARED_LIBS=ON: Paylaşımlı kütüphaneler oluşturulmasını sağlar, bu bazı eklentiler için gerekli olabilir.
  • sudo make -j$(nproc): make komutu, kaynak kodu derler. -j$(nproc) parametresi, sisteminizdeki CPU çekirdeği sayısı kadar paralel derleme işlemi başlatarak derleme süresini hızlandırır.
  • sudo make install: Derlenmiş dosyaları CMAKE_INSTALL_PREFIX ile belirtilen /usr/local/zeek dizinine kopyalar.

PATH Ortam Değişkenini Ayarlama

Zeek komutlarını (zeekctl, zeek vb.) her yerden çalıştırabilmek için Zeek’in bin dizinini sistem PATH’ine eklememiz gerekir. Bunu kalıcı hale getirmek için kullanıcı profil dosyanıza ekleyebilirsiniz:

echo 'export PATH=/usr/local/zeek/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Bu komutlar, Zeek’in bin dizinini ~/.bashrc dosyanıza ekler ve ardından bu dosyayı yeniden yükleyerek değişiklikleri mevcut oturumunuza uygular. Yeni bir terminal açtığınızda veya oturum açtığınızda PATH otomatik olarak ayarlanmış olacaktır.

Bro/Zeek Yapılandırması

Zeek’i başarıyla kurduktan sonra, onu ağınızı izlemek için yapılandırmanız gerekir. Temel yapılandırma dosyaları /usr/local/zeek/etc/ dizininde bulunur.

Ağ Arayüzü Ayarları (node.cfg)

Zeek’in hangi ağ arayüzünü dinlemesi gerektiğini belirtmelisiniz. Bu, node.cfg dosyasında yapılır.

sudo nano /usr/local/zeek/etc/node.cfg

Dosyanın içeriği aşağıdaki gibi görünmelidir. Kendi ağ arayüzünüze göre interface değerini düzenleyin. Ubuntu 16.04’te bu genellikle eth0 veya ens33 gibi bir isim olabilir. Ağ arayüzünüzü ip a veya ifconfig komutuyla öğrenebilirsiniz.

[zeek]
type=standalone
host=localhost
interface=eth0  # Kendi ağ arayüzünüzü buraya yazın (örneğin: ens33, enp0s3)

Ctrl+X, Y ve Enter tuşlarına basarak dosyayı kaydedip kapatın.

Zeekctl Ayarları (zeekctl.cfg)

zeekctl.cfg dosyası, Zeek kontrol komut dosyasının davranışını yapılandırır. Log dizini, e-posta bildirimleri gibi ayarları buradan yapabilirsiniz.

sudo nano /usr/local/zeek/etc/zeekctl.cfg

Aşağıdaki satırları kontrol edin ve gerektiğinde düzenleyin:

  • Log Dizini: Zeek’in log dosyalarını nereye yazacağını belirtir. Genellikle /usr/local/zeek/logs veya daha standart bir konum olan /var/log/zeek tercih edilir. Eğer /var/log/zeek kullanacaksanız, bu dizini oluşturmanız ve Zeek kullanıcısına yazma izni vermeniz gerekebilir.
# Log directory
@redef Zeek::LogDir = "/usr/local/zeek/logs";

Veya daha standart bir konum için:

@redef Zeek::LogDir = "/var/log/zeek";

Eğer /var/log/zeek kullanmaya karar verirseniz:

sudo mkdir -p /var/log/zeek
sudo chown -R zeek:zeek /var/log/zeek # Zeek'i hangi kullanıcı ile çalıştırıyorsanız o kullanıcıya yetki verin. Genellikle root ile çalışır.

Bu rehberde root ile çalıştığımızı varsayarsak, /usr/local/zeek/logs varsayılan dizin yeterli olacaktır.

  • E-posta Bildirimleri: Zeek, belirli olaylar için e-posta bildirimleri gönderebilir. Bu özelliği kullanmak isterseniz email_alarms_to satırını kendi e-posta adresinizle güncelleyebilirsiniz.
# Email addresses for alarms
email_alarms_to = you@example.com

Ayarları kaydettikten sonra dosyayı kapatın.

Bro/Zeek’i Çalıştırma ve Test Etme

Yapılandırma tamamlandıktan sonra Zeek’i başlatabilir ve düzgün çalışıp çalışmadığını kontrol edebiliriz.

Zeek’i Başlatma

Zeek’i başlatmak için zeekctl komutunu kullanırız. İlk çalıştırmada, Zeek’in dağıtımını (deploy) yapmanız gerekir:

sudo zeekctl deploy

Bu komut, Zeek yapılandırmasını derler ve Zeek süreçlerini başlatmak için gerekli dosyaları oluşturur. Daha sonra Zeek’i başlatabilirsiniz:

sudo zeekctl start

Eğer her şey yolundaysa, Zeek ağınızı izlemeye başlayacaktır.

Durumu Kontrol Etme

Zeek’in durumunu kontrol etmek için aşağıdaki komutu kullanın:

sudo zeekctl status

Çıktıda zeek sürecinin running olduğunu görmelisiniz.

Logları Kontrol Etme

Zeek, ağ trafiğini analiz ettikçe çeşitli log dosyaları oluşturur. Bu loglar varsayılan olarak /usr/local/zeek/logs/current/ dizininde bulunur. current sembolik bir bağlantıdır ve en son log dizinine işaret eder.

ls -l /usr/local/zeek/logs/current/

Burada conn.log, http.log, dns.log gibi dosyaları görmelisiniz. Bu dosyalar, Zeek’in ağ trafiğini başarıyla yakalayıp analiz ettiğinin bir göstergesidir. Log dosyalarının içeriğini görüntülemek için tail -f komutunu kullanabilirsiniz:

tail -f /usr/local/zeek/logs/current/conn.log

Şimdi başka bir terminalden veya aynı makineden internete yönelik basit bir trafik oluşturun (örneğin, ping google.com, curl example.com, web tarayıcınızdan bir siteye gidin). Log dosyasında yeni kayıtların belirdiğini görmelisiniz.

Zeek’i Durdurma

Zeek’i durdurmak için:

sudo zeekctl stop

Ek Bilgiler ve İpuçları

İzleme Modu (Promiscuous Mode)

Zeek’in ağdaki tüm trafiği görebilmesi için ağ arayüzünün “promiscuous mode” (izleme modu) açık olması gerekir. Genellikle Zeek, bu modu otomatik olarak açmaya çalışır. Ancak bazı durumlarda manuel olarak ayarlamanız gerekebilir. Arayüzünüzün izleme modunda olup olmadığını kontrol etmek için:

ip link show eth0 # veya kendi arayüz adınız

Çıktıda PROMISC bayrağını görmelisiniz. Eğer görmüyorsanız, manuel olarak açmayı deneyebilirsiniz:

sudo ip link set dev eth0 promisc on

Performans Optimizasyonu

  • NIC Offloading: Ağ kartınızın donanım boşaltma (checksum offloading, large receive offloading vb.) özelliklerini kapatmak, Zeek’in daha doğru ve eksiksiz paket yakalamasına yardımcı olabilir. Bu ayarlar genellikle ethtool ile yapılır.
  • BPF Filtreleri: Sadece belirli bir trafiği izlemek istiyorsanız, Zeek’i Berkeley Packet Filter (BPF) filtreleriyle yapılandırabilirsiniz. Bu, gereksiz trafiği atarak Zeek’in kaynak kullanımını azaltır. Örneğin, sadece HTTP trafiğini izlemek için node.cfg dosyanıza pcap_filter = "port 80" ekleyebilirsiniz.
  • Donanım: Yüksek hızlı (10Gbps+) ağlar için özel ağ kartları (örneğin, Intel X520/X540 serisi) ve yeterli CPU/RAM önemlidir.

Güncelleme

Zeek’i yeni bir sürüme güncellemek için, kaynak kodu klonladığınız dizine gidip git pull yaparak en son değişiklikleri çekebilir, ardından yukarıdaki derleme ve kurulum adımlarını tekrarlayabilirsiniz:

cd /opt/zeek
sudo git pull --recursive
cd build
sudo cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/zeek -DBROKER_DISABLE_TESTS=ON -DBUILD_SHARED_LIBS=ON
sudo make -j$(nproc)
sudo make install
sudo zeekctl deploy
sudo zeekctl restart

Log Yönetimi ve Entegrasyon

Zeek’in ürettiği loglar oldukça hacimli olabilir. Bu logları etkili bir şekilde yönetmek için:

  • Log Rotation: logrotate gibi araçlarla Zeek loglarını düzenli olarak sıkıştırıp arşivleyebilir veya silebilirsiniz. Zeek’in kendi loglama mekanizması da vardır, ancak ek bir yönetim faydalı olabilir.
  • SIEM Entegrasyonu: Zeek logları genellikle JSON veya TSV (Tab Separated Values) formatında üretilir. Bu formatlar, Splunk, ELK Stack (Elasticsearch, Logstash, Kibana) veya diğer SIEM (Security Information and Event Management) çözümlerine kolayca entegre edilebilir. Bu, Zeek verilerini diğer güvenlik olaylarıyla korele etmenizi sağlar.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu 16.04 işletim sistemi üzerinde Zeek’i (eski adıyla Bro) kaynak koddan nasıl kuracağınızı, temel yapılandırmaları nasıl yapacağınızı ve sistemi nasıl test edeceğinizi adım adım öğrendiniz. Zeek, ağ güvenliği izlemesi ve analizi için inanılmaz derecede güçlü ve esnek bir araçtır. Kurulumun ardından, Zeek’in geniş betik kütüphanesini ve özelleştirme yeteneklerini keşfetmek, ağınızdaki tehditleri daha etkin bir şekilde tespit etmenizi sağlayacaktır.

SSS (Sıkça Sorulan Sorular)

Bro ve Zeek arasındaki fark nedir?

Bro, 2018 yılında “Zeek” olarak yeniden markalandırıldı. İsim değişikliğinin nedeni, markanın daha geniş bir kitleye ulaşmasını sağlamak ve ismin olumsuz çağrışımlarını gidermekti. Temelde aynı yazılımdır; Zeek, Bro’nun devamı ve daha gelişmiş sürümüdür.

Zeek’i neden Ubuntu 16.04’e kurmalıyım? Daha yeni sürümler varken?

Ubuntu 16.04, artık EOL (End-of-Life) olmasına rağmen, bazı eski sistemlerde, özel projelerde veya belirli uyumluluk gereksinimleri olan ortamlarda hala kullanılıyor olabilir. Bu rehber, bu tür senaryolarda Zeek kurulumuna ihtiyaç duyan kullanıcılar için hazırlanmıştır. Yeni kurulumlar için her zaman daha güncel ve desteklenen bir işletim sistemi (örneğin Ubuntu 20.04 veya 22.04) kullanmanız önerilir.

Kurulumdan sonra Zeek çalışmıyor veya log üretmiyor, ne yapmalıyım?

Şu adımları kontrol edin:

  1. sudo zeekctl status komutuyla Zeek süreçlerinin çalışıp çalışmadığını kontrol edin.
  2. /usr/local/zeek/etc/node.cfg dosyasındaki interface ayarının doğru olduğundan ve Zeek’in dinlemesi gereken ağ arayüzünü gösterdiğinden emin olun.
  3. Ağ arayüzünün izleme modunda (promiscuous mode) olduğundan emin olun (sudo ip link set dev eth0 promisc on).
  4. /usr/local/zeek/logs/current/reporter.log ve stderr.log dosyalarını kontrol ederek hata mesajları arayın.
  5. Yeterli disk alanı olup olmadığını kontrol edin.
  6. Selinux veya AppArmor gibi güvenlik modüllerinin Zeek’i engellemediğinden emin olun. Gerekirse geçici olarak devre dışı bırakıp tekrar deneyin.

Zeek’in logları nerede depolanır?

Varsayılan olarak, Zeek logları /usr/local/zeek/logs/ dizininde, her dağıtım için tarih-saat damgalı bir alt dizinde (örn. 2023-10-27_15-30-00/) saklanır. /usr/local/zeek/logs/current sembolik bağlantısı her zaman en son log dizinine işaret eder. Bu konum /usr/local/zeek/etc/zeekctl.cfg dosyasındaki @redef Zeek::LogDir ayarı ile değiştirilebilir.

Daha fazla ağ trafiği izlemek için Zeek performansını nasıl artırabilirim?

Performansı artırmak için şunları yapabilirsiniz:

  • Daha güçlü CPU ve daha fazla RAM’e sahip bir sunucu kullanın.
  • Özel ağ kartları (örneğin, Intel X520/X540) kullanın ve NIC offloading özelliklerini devre dışı bırakın.
  • BPF filtreleri kullanarak sadece ilgilendiğiniz trafiği izleyin.
  • Yüksek trafikli ağlar için Zeek’i kümelenmiş bir ortamda (cluster) birden fazla Zeek düğümü ile çalıştırın.
  • Logları hızlı yazma yeteneğine sahip SSD/NVMe diskler kullanın.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık