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-managergibi 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ı,viveyavimde 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.yamldosyasındaoutputsbölümünde log formatlarını (eve-log,fast.log,jsonvb.) 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,streamvedefraggibi 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.yamldosyası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.yamldosyasında sözdizimi hataları (boşluklar, yanlış girintiler).sudo suricata -T -c /etc/suricata/suricata.yaml -ikomutunu kullanarak kontrol edin.- Yanlış ağ arayüzü adı belirtilmesi.
ip aile doğru arayüz adını kontrol edin. - Kural dosyalarının bulunamaması veya hatalı olması.
suricata-updatekomutunun başarılı olduğundan vesuricata.yamldosyası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.
