Takip et

Giriş: Suricata Nedir ve Neden Kullanmalısınız?

Giriş: Suricata Nedir ve Neden Kullanmalısınız? Günümüzün karmaşık siber tehdit ortamında, ağ güvenliği her zamankinden daha kritik bi

Giriş: Suricata Nedir ve Neden Kullanmalısınız?

Günümüzün karmaşık siber tehdit ortamında, ağ güvenliği her zamankinden daha kritik bir öneme sahiptir. İşletmeler ve bireyler, sürekli gelişen saldırı tekniklerine karşı kendilerini korumak için güçlü güvenlik araçlarına ihtiyaç duyarlar. İşte bu noktada Suricata devreye girer. Suricata, açık kaynaklı, yüksek performanslı bir Ağ Saldırı Tespit Sistemi (NIDS), Ağ Saldırı Önleme Sistemi (NIPS) ve Ağ Güvenliği İzleme (NSM) motorudur.

OISF (Open Information Security Foundation) tarafından geliştirilen Suricata, çoklu iş parçacığı (multi-threading) yeteneği sayesinde modern donanımlardan tam verim alabilir ve gigabit hızındaki ağlarda bile etkili bir şekilde çalışabilir. Temel olarak, ağ trafiğini derinlemesine inceleyerek kötü amaçlı faaliyetleri, bilinen tehdit imzalarını ve anormal davranışları tespit eder. Bu tespitler, yapılandırıldığı şekle bağlı olarak ya uyarılarda bulunur (IDS modu) ya da kötü amaçlı trafiği engeller (IPS modu). Ayrıca, ağdaki olayları JSON formatında zengin meta verilerle kaydederek daha sonraki analizler için güçlü bir temel sunar (NSM modu).

CentOS 8 Stream gibi modern bir işletim sisteminde Suricata kullanmak, ağınızın güvenliğini artırmak için proaktif bir adım anlamına gelir. Bu rehberde, CentOS 8 Stream üzerinde Suricata’yı adım adım nasıl kuracağınızı, temel yapılandırmalarını nasıl yapacağınızı ve çalışır duruma getireceğinizi detaylı bir şekilde öğreneceksiniz.

Adım 1: Sistem Güncelleme ve Ön Gereksinimlerin Hazırlanması

Suricata kurulumuna başlamadan önce, sisteminizin güncel olduğundan ve gerekli tüm bağımlılıkların yüklü olduğundan emin olmalıyız. Bu, olası uyumluluk sorunlarını önler ve en iyi performansı sağlar.

Sistemi Güncelleme

İlk adım olarak, CentOS 8 Stream sisteminizdeki tüm paketleri en son sürümlerine güncelleyelim:

sudo dnf update -y
sudo dnf upgrade -y

Bu komutlar, mevcut tüm paketleri günceller ve yükseltir. İşlem tamamlandıktan sonra, bazı çekirdek güncellemeleri veya önemli sistem değişiklikleri için sunucunuzu yeniden başlatmanız gerekebilir. Eğer yeniden başlatma uyarısı alırsanız veya emin olmak isterseniz:

sudo reboot

Gerekli Bağımlılıkların ve Araçların Kurulumu

Suricata ve onunla birlikte çalışacak araçlar için bazı temel paketlere ihtiyacımız olacak. Özellikle, Suricata’nın resmi depolarını kolayca ekleyebilmek için dnf-utils ve bazı yaygın ağ araçları faydalı olacaktır. Ayrıca, Suricata’nın bazı bağımlılıkları EPEL (Extra Packages for Enterprise Linux) deposunda bulunabilir, bu yüzden onu da ekleyeceğiz.

sudo dnf install -y epel-release
sudo dnf install -y dnf-utils nano wget curl git
  • epel-release: EPEL deposunu sisteme ekler. Bu depo, RHEL tabanlı sistemler için birçok ek paketi barındırır.
  • dnf-utils: dnf config-manager gibi yardımcı programları içerir, bu da harici depoları yönetmek için kullanışlıdır.
  • nano: Metin düzenleyici (isteğe bağlı, vi veya vim de kullanabilirsiniz).
  • wget, curl, git: Dosya indirme ve versiyon kontrolü için yaygın kullanılan araçlar.

Bu adımları tamamladıktan sonra, sisteminiz Suricata kurulumuna hazır hale gelmiş olacaktır.

Adım 2: Suricata Depolarının Eklenmesi ve Kurulum

CentOS 8 Stream’in varsayılan depolarında genellikle Suricata’nın en güncel sürümü bulunmaz. En iyi performans, en yeni özellikler ve güvenlik yamaları için Suricata’nın resmi OISF (Open Information Security Foundation) deposunu kullanmak en iyi yaklaşımdır.

OISF Suricata Deposunu Ekleme

OISF, Suricata için resmi paket depoları sağlar. Bu depoları eklemek, Suricata’yı dnf paket yöneticisi aracılığıyla kolayca kurmamızı ve güncel tutmamızı sağlar. CentOS 8 Stream için aşağıdaki komutu kullanarak depoyu ekleyebiliriz:

sudo dnf config-manager --add-repo https://download.openinfosecfoundation.org/rpms/oisf/suricata-6.0/oisf.repo

Bu komut, Suricata 6.x serisi için OISF deposunu sisteminize ekleyecektir. Depo eklendikten sonra, dnf paket listesini güncelleyerek yeni depodaki paketleri tanımasını sağlayabiliriz:

sudo dnf clean all
sudo dnf makecache

dnf clean all komutu, DNF’nin önbelleğini temizlerken, dnf makecache ise yeni depo bilgilerini de içeren paket meta verilerini yeniden oluşturur.

Suricata’yı Kurma

Depoyu başarıyla ekledikten sonra, Suricata’yı kurmak artık çok kolaydır:

sudo dnf install suricata -y

Bu komut, Suricata paketini ve tüm gerekli bağımlılıklarını kuracaktır. Kurulum tamamlandıktan sonra, Suricata’nın doğru bir şekilde kurulup kurulmadığını kontrol edebiliriz:

suricata -V

Bu komut, kurulu Suricata sürümünü gösterecektir. Çıktıda bir sürüm numarası görmeniz, kurulumun başarılı olduğunu gösterir.

Örnek Çıktı:
This is Suricata version 6.0.x (rev: ...)
...

Kurulum dizini genellikle /etc/suricata/ olacaktır. Yapılandırma dosyaları, kural dosyaları ve diğer önemli bileşenler bu dizinde yer alır.

Adım 3: Suricata’nın Temel Yapılandırması

Suricata’yı kurduktan sonra, onu ağ ortamınıza uygun şekilde yapılandırmamız gerekir. Ana yapılandırma dosyası /etc/suricata/suricata.yaml‘dır. Bu dosyada, Suricata’nın hangi ağ arayüzünü dinleyeceğinden, hangi kuralları kullanacağına ve loglama davranışına kadar birçok ayar bulunur.

Ağ Arayüzünü ve IP Adreslerini Yapılandırma

suricata.yaml dosyasını bir metin düzenleyici ile açın:

sudo nano /etc/suricata/suricata.yaml

Yapılandırma dosyasında ilk olarak değiştirmemiz gereken önemli alanlar şunlardır:

1. home_net ve external_net Tanımları:

Suricata’nın ağınızdaki “ev” ağını bilmesi, iç ağ trafiği ile dış ağ trafiğini ayırt etmesi için kritik öneme sahiptir. Kural motoru, bu tanımları kullanarak tehditleri daha doğru bir şekilde sınıflandırır. Kendi iç ağınızın IP aralığını home_net olarak belirtmelisiniz.

# Configure your preferred network interface to use.

(This is typically 'eth0' or 'enpXsY' on Linux, 're0' or 'em0' on BSD)

#af-packet:

- interface: eth0

threads: 1

defrag: yes

cluster-type: cluster_flow

cluster-id: 99

copy-mode: ips

copy-iface: eth1

buffer-size: 64mb

ring-size: 200000

release-host: yes

use-direct-qemu-interface: no

bypass: yes

#rx-ring-size: 4096

#tx-ring-size: 4096

Bu bölümde, af-packet altında interface satırını bulup yorum işaretini (#) kaldırın ve Suricata’nın dinlemesini istediğiniz ağ arayüzünüzün adını girin. Ağ arayüzünüzü ip a komutuyla öğrenebilirsiniz (örneğin, enp0s3 veya eth0).

# Örnek:
af-packet:
  - interface: enp0s3 # Kendi ağ arayüzünüzün adını buraya yazın
    threads: 1
    # Diğer ayarlar...

2. home_net ve external_net Tanımları:

Bu bölümler, Suricata’nın hangi IP adres aralıklarını kendi ağınız (güvenli) ve hangi aralıkları dış ağ (güvenli olmayan) olarak kabul edeceğini belirler. Genellikle home_net‘i kendi iç ağınızın IP aralığına ayarlarsınız. Birden fazla ağ aralığı virgülle ayrılabilir.

# Varsayılan olarak:

vars:

address-groups:

HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"

EXTERNAL_NET: "!$HOME_NET"

HOME_NET tanımını kendi yerel ağ IP aralığınızla güncelleyin. Örneğin, eğer iç ağınız 192.168.1.0/24 ise:

# Örnek:
vars:
  address-groups:
    HOME_NET: "[192.168.1.0/24]" # Kendi iç ağ IP aralığınızı buraya yazın
    EXTERNAL_NET: "!$HOME_NET"

EXTERNAL_NET genellikle !$HOME_NET olarak bırakılır, bu da Suricata’ya HOME_NET dışındaki her şeyin dış ağ olduğunu söyler.

Kural Dosyalarını Yapılandırma

Suricata, tehditleri tespit etmek için kural dosyalarını kullanır. Bu kurallar genellikle Snort veya Suricata formatında yazılır. Suricata, varsayılan olarak belirli bir dizinde kural dosyalarını arar. Bu ayarlar da suricata.yaml dosyasında bulunur.

rule-files bölümünü bulun. Burası, Suricata’nın hangi kural dosyalarını yükleyeceğini belirttiğiniz yerdir. Genellikle /etc/suricata/rules dizini kullanılır.

# Varsayılan olarak:

rule-files:

- suricata.rules

Bu bölümü, kullanmak istediğiniz kural dosyalarını içerecek şekilde güncelleyin. Başlangıç için, suricata.rules veya local.rules gibi temel bir dosya belirleyebilirsiniz.

Kuralları İndirme ve Güncelleme

Suricata’nın en önemli işlevlerinden biri, güncel tehditlere karşı koruma sağlamasıdır. Bu da düzenli olarak güncellenen kural setlerini gerektirir. OISF, ET Open (Emerging Threats Open) gibi çeşitli kural sağlayıcıları vardır. Suricata, suricata-update aracı ile bu kuralları kolayca yönetmenizi sağlar.

suricata-update aracını kullanarak kural setlerini indirelim:

sudo suricata-update

Bu komut, varsayılan olarak ET Open kural setini indirir ve /var/lib/suricata/rules dizinine kaydeder. Ardından bu kuralları /etc/suricata/suricata.yaml dosyasında belirtilen kural dizinine bağlar. Eğer özel bir kural seti kullanmak isterseniz, suricata-update komutuna parametreler ekleyebilirsiniz (örneğin, --enable-source ptresearch/attackdetection).

Kurallar indirildikten sonra, suricata.yaml dosyasındaki rule-files bölümünü güncellenen kural dosyalarını gösterecek şekilde ayarlamanız gerekebilir. Genellikle suricata-update bunu otomatik olarak yönetir ve bir suricata.rules dosyası oluşturur veya mevcut dosyayı günceller.

# /etc/suricata/suricata.yaml dosyasında:

rule-files:

- /var/lib/suricata/rules/suricata.rules # suricata-update'in oluşturduğu dosya

suricata-update komutunu düzenli olarak çalıştırmak için bir cron işi oluşturmanız önerilir. Bu sayede Suricata, her zaman en güncel tehdit imzalarıyla çalışır.

Diğer Önemli Yapılandırma Ayarları

  • Loglama: Suricata, olayları /var/log/suricata/ dizinine kaydeder. suricata.yaml dosyasında outputs bölümünde log formatlarını (eve-log, fast.log, json vb.) ve detay seviyelerini yapılandırabilirsiniz. eve-log (Extensible Event Format) genellikle SIEM sistemleriyle entegrasyon için tercih edilir.
  • Performans Ayarları: Yüksek trafikli ağlar için flow, stream ve defrag gibi bölümlerdeki ayarların optimize edilmesi gerekebilir. Ancak başlangıç için varsayılanlar genellikle yeterlidir.

Yapılandırma dosyasında yaptığınız değişiklikleri kaydedip kapatın.

Adım 4: Suricata’nın Çalıştırılması ve Test Edilmesi

Yapılandırma adımlarını tamamladıktan sonra, Suricata’yı çalıştırmaya ve doğru çalıştığından emin olmak için test etmeye hazırız.

Yapılandırma Dosyasını Test Etme

Suricata’yı başlatmadan önce, yapılandırma dosyanızın (suricata.yaml) sözdizimi açısından doğru olduğundan emin olmak çok önemlidir. Yanlış bir yapılandırma, Suricata’nın başlamamasına veya hatalı çalışmasına neden olabilir. Aşağıdaki komutu kullanarak yapılandırma dosyanızı test edebilirsiniz:

sudo suricata -T -c /etc/suricata/suricata.yaml -i enp0s3 # Kendi arayüzünüzü yazın

Bu komut:

  • -T: Test modunda çalıştırır.
  • -c /etc/suricata/suricata.yaml: Kullanılacak yapılandırma dosyasını belirtir.
  • -i enp0s3: Hangi ağ arayüzünde test edileceğini belirtir. Bu, suricata.yaml dosyasında belirttiğiniz arayüzle eşleşmelidir.

Eğer yapılandırma dosyanızda bir hata yoksa, çıktıda “Configuration provided was successfully loaded.” benzeri bir mesaj görmelisiniz. Herhangi bir hata durumunda, Suricata hatanın nerede olduğunu ve ne olduğunu size bildirecektir. Bu durumda, suricata.yaml dosyanızı tekrar kontrol etmeniz ve hataları düzeltmeniz gerekir.

Suricata Servisini Başlatma

Yapılandırma testi başarılı olduktan sonra, Suricata servisini başlatabilir ve sistem başlangıcında otomatik olarak başlamasını sağlayabiliriz:

sudo systemctl enable suricata
sudo systemctl start suricata
  • systemctl enable suricata: Suricata servisinin sistem açılışında otomatik olarak başlamasını sağlar.
  • systemctl start suricata: Suricata servisini hemen başlatır.

Suricata Durumunu Kontrol Etme

Servisin doğru bir şekilde çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanın:

sudo systemctl status suricata

Çıktıda “active (running)” ifadesini görmelisiniz. Ayrıca, Suricata’nın loglarını inceleyerek herhangi bir hata veya uyarı olup olmadığını kontrol edebilirsiniz:

sudo journalctl -u suricata -f

Bu komut, Suricata servisinin anlık loglarını gösterir. Herhangi bir sorun varsa, burada detaylı bilgi bulabilirsiniz.

Suricata Loglarını Gözlemleme

Suricata, tespit ettiği olayları /var/log/suricata/ dizinindeki dosyalara kaydeder. En yaygın log dosyaları şunlardır:

  • fast.log: Basit, okunması kolay uyarıları içerir.
  • eve.json: Tüm olayları (uyarılar, akışlar, DNS istekleri, HTTP trafiği vb.) JSON formatında kaydeder. SIEM sistemleriyle entegrasyon için idealdir.

Uyarıları gerçek zamanlı olarak görmek için fast.log dosyasını izleyebilirsiniz:

sudo tail -f /var/log/suricata/fast.log

Daha detaylı olaylar için eve.json dosyasını inceleyebilirsiniz:

sudo tail -f /var/log/suricata/eve.json | jq . # jq, JSON çıktısını daha okunabilir yapar, yüklü değilse kurmanız gerekebilir: sudo dnf install -y jq

Test Amaçlı Basit Bir Kural Oluşturma (İsteğe Bağlı)

Suricata’nın çalıştığını doğrulamak için basit bir test kuralı oluşturup tetikleyebilirsiniz. Örneğin, belirli bir web sitesine erişimi algılayan bir kural yazabiliriz.

Öncelikle, yerel kural dosyanızı oluşturalım veya düzenleyelim. Örneğin, /etc/suricata/rules/local.rules:

sudo nano /etc/suricata/rules/local.rules

Aşağıdaki kuralı ekleyin:

alert http any any -> any any (msg:"TEST: HTTP GET to example.com detected"; flow:to_server,established; http.host; content:"example.com"; http_header; classtype:misc-activity; sid:2000001; rev:1;)

Bu kural, example.com adresine yapılan HTTP GET isteklerini algılar. Kural dosyasını kaydettikten sonra, suricata.yaml dosyasında bu kural dosyasının yüklendiğinden emin olun (rule-files bölümüne ekleyin).

# /etc/suricata/suricata.yaml

rule-files:

- /var/lib/suricata/rules/suricata.rules

- /etc/suricata/rules/local.rules # Bu satırı ekleyin

Yapılandırma dosyasını güncelledikten sonra, Suricata servisini yeniden başlatın:

sudo systemctl restart suricata

Şimdi, test etmek için example.com adresine bir HTTP isteği gönderin:

curl http://example.com

Ardından fast.log dosyasını kontrol edin:

sudo tail -f /var/log/suricata/fast.log

Eğer her şey doğru yapılandırıldıysa, loglarda “TEST: HTTP GET to example.com detected” mesajını görmelisiniz. Bu, Suricata’nın başarılı bir şekilde çalıştığını ve kuralları işlediğini gösterir.

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

Bu rehberde, CentOS 8 Stream üzerinde Suricata’yı adım adım nasıl kuracağınızı ve temel yapılandırmalarını nasıl yapacağınızı öğrendiniz. Sistem güncellemelerinden başlayarak, OISF deposunu eklemeye, Suricata’yı kurmaya, ana yapılandırma dosyası suricata.yaml üzerinde gerekli değişiklikleri yapmaya ve son olarak servisi başlatıp test etmeye kadar tüm süreçleri ele aldık. Artık ağınızdaki tehditleri tespit etmek ve potansiyel olarak önlemek için güçlü bir araca sahipsiniz.

Suricata’nın tam potansiyelini kullanmak için, kural setlerini düzenli olarak güncellemek, logları izlemek ve gerektiğinde yapılandırma ayarlarını ağ ortamınıza göre optimize etmek önemlidir. Güvenliğiniz için sürekli tetikte olmak ve sistemlerinizi güncel tutmak, siber tehditlere karşı en iyi savunmadır.

Sıkça Sorulan Sorular (SSS)

Suricata’yı IPS (Saldırı Önleme Sistemi) modunda nasıl çalıştırabilirim?

Suricata’yı IPS modunda çalıştırmak için suricata.yaml dosyasındaki af-packet bölümünde copy-mode: ips ayarını yapmanız ve Suricata’nın trafiği geçireceği iki arayüz (bir giriş, bir çıkış) belirtmeniz gerekir. Ayrıca, ilgili kuralların drop veya reject aksiyonlarını içermesi gerekir. Bu, genellikle bir ağ geçidi veya köprü modunda yapılandırma gerektirir ve daha karmaşık bir kurulumdur.

Suricata kurallarını nasıl güncelleyebilirim?

Kuralları güncellemek için sudo suricata-update komutunu çalıştırın. Düzenli güncellemeler için bu komutu bir cron işi olarak ayarlamanız önerilir. Örneğin, haftalık güncelleme için sudo crontab -e ile 0 3 0 /usr/bin/suricata-update satırını ekleyebilirsiniz (her Pazar sabahı 03:00’te).

Suricata neden başlamıyor veya hatalar veriyor?

Suricata’nın başlamamasının veya hata vermesinin en yaygın nedenleri şunlardır:

  • suricata.yaml dosyasında sözdizimi hataları (boşluklar, yanlış girintiler). sudo suricata -T -c /etc/suricata/suricata.yaml -i komutunu kullanarak kontrol edin.
  • Yanlış ağ arayüzü adı belirtilmesi. ip a ile doğru arayüz adını kontrol edin.
  • Kural dosyalarının bulunamaması veya hatalı olması. suricata-update komutunun başarılı olduğundan ve suricata.yaml dosyasındaki kural yollarının doğru olduğundan emin olun.
  • Yetersiz sistem kaynakları (bellek, CPU).

Detaylı hata mesajları için sudo journalctl -u suricata veya /var/log/suricata/suricata.log dosyalarını kontrol edin.

Suricata’nın ürettiği logları başka bir sisteme (SIEM) nasıl gönderebilirim?

Suricata, olayları JSON formatında eve.json dosyasına kaydeder. Bu dosya, çoğu SIEM (Security Information and Event Management) sistemi tarafından kolayca ayrıştırılabilir. Logları SIEM’e göndermek için genellikle bir log toplayıcı ajan (örneğin, Filebeat, Fluentd, rsyslog) kullanırsınız. Bu ajan, eve.json dosyasını izler ve yeni olayları SIEM’inize iletir.

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