Suricata’yı Ubuntu 20.04 Üzerine Kurulum Rehberi: Kapsamlı Bir Yaklaşım
Giriş: Ağ Güvenliğinde Suricata’nın Rolü
Günümüzün hızla gelişen siber güvenlik ortamında, ağları kötü niyetli saldırılardan korumak her zamankinden daha kritik hale gelmiştir. İşletmeler ve bireyler, sürekli evrilen tehditlere karşı koymak için proaktif savunma mekanizmalarına ihtiyaç duymaktadır. Bu noktada, Ağ Saldırı Tespit Sistemi (IDS) ve Ağ Saldırı Önleme Sistemi (IPS) gibi araçlar devreye girer. Suricata, bu alanda öne çıkan, açık kaynaklı ve yüksek performanslı bir tehdit algılama motorudur. Ubuntu 20.04, kararlılığı ve geniş topluluk desteği sayesinde, Suricata gibi güçlü araçları çalıştırmak için ideal bir platform sunar. Bu makalede, Suricata’yı Ubuntu 20.04 üzerine nasıl kuracağınızı, yapılandıracağınızı ve yöneteceğinizi adım adım, kapsamlı bir şekilde inceleyeceğiz.
Suricata Nedir?
Suricata, OISF (Open Information Security Foundation) tarafından geliştirilen, açık kaynaklı, çok iş parçacıklı bir ağ tehdit algılama motorudur. Hem bir IDS (Intrusion Detection System) hem de bir IPS (Intrusion Prevention System) olarak işlev görebilir. Gelişmiş kural tabanlı algılama yetenekleri sayesinde, bilinen saldırıları, kötü amaçlı yazılımları, ağ anormalliklerini ve diğer şüpheli etkinlikleri tespit edebilir. Suricata, Snort’un modern bir alternatifi olarak kabul edilir ve daha iyi performans, daha esnek yapılandırma seçenekleri ve gelişmiş protokol analizi gibi özellikler sunar.
Neden Suricata Kullanmalıyız?
Suricata’nın tercih edilmesinin birçok nedeni vardır:
* Yüksek Performans: Çok iş parçacıklı yapısı sayesinde, çok çekirdekli işlemcilerden tam verim alarak yüksek trafikli ağlarda bile etkili bir şekilde çalışabilir.
* Esneklik: IDS, IPS ve NSM (Network Security Monitoring) modlarında çalışabilir. Bu, onu farklı güvenlik ihtiyaçları için çok yönlü bir araç haline getirir.
* Gelişmiş Protokol Analizi: HTTP, TLS, DNS gibi popüler protokolleri derinlemesine analiz edebilir ve bu protokoller üzerindeki anormallikleri veya saldırıları tespit edebilir.
* Geniş Kural Desteği: Snort kuralları ile uyumludur ve Emerging Threats (ET Open) gibi popüler kural setlerini destekler. Ayrıca, kendi özel kurallarınızı yazmanıza da olanak tanır.
* Çeşitli Çıktı Formatları: Günlükleri çeşitli formatlarda (JSON, YAML, eve.json, fast.log vb.) üretebilir, bu da onu SIEM (Security Information and Event Management) sistemleri ile entegrasyon için ideal kılar.
* Açık Kaynak: Açık kaynaklı olması, sürekli gelişimini ve geniş bir topluluk desteğini garanti eder.
Ubuntu 20.04 ve Suricata Uyumu
Ubuntu 20.04 (Focal Fossa), uzun süreli destek (LTS) sürümü olması nedeniyle, sunucu ortamlarında ve güvenlik uygulamalarında sıklıkla tercih edilen bir işletim sistemidir. Kararlılığı, güncel paketleri ve geniş yazılım deposu, Suricata gibi kritik güvenlik araçlarının sorunsuz bir şekilde kurulup çalıştırılması için sağlam bir temel sunar. Bu kombinasyon, ağ güvenliği altyapınızı güçlendirmek için güçlü ve güvenilir bir çözüm sağlar.
Suricata Kurulum Öncesi Hazırlıklar
Suricata kurulumuna başlamadan önce, sisteminizin belirli gereksinimleri karşıladığından ve gerekli ön hazırlıkların yapıldığından emin olmanız önemlidir. Bu adımlar, kurulum sürecinin sorunsuz ilerlemesini ve Suricata’nın en iyi performansı göstermesini sağlayacaktır.
Sistem Gereksinimleri
Suricata, ağ trafiğini derinlemesine analiz ettiği için belirli sistem kaynaklarına ihtiyaç duyar. Gereksinimler, izlenecek ağ trafiğinin hacmine ve kullanılacak kural setlerinin karmaşıklığına göre değişir:
* İşlemci (CPU): Yüksek trafikli ağlar için çok çekirdekli bir işlemci (Intel i5/i7 veya Xeon serisi, AMD Ryzen/EPYC) şiddetle tavsiye edilir. Suricata’nın çok iş parçacıklı yapısından tam olarak yararlanmak için en az 4 çekirdek idealdir.
* Bellek (RAM): Kural setlerinin boyutu ve tutulan oturum bilgileri nedeniyle yeterli RAM kritik öneme sahiptir. Küçük ağlar için 4-8 GB yeterli olabilirken, orta ve büyük ölçekli ağlar için 16 GB veya daha fazlası önerilir.
* Depolama (Disk): Günlük dosyaları hızla büyüyebilir. Bu nedenle, hızlı bir depolama birimi (SSD) ve yeterli boş alan (en az 50-100 GB, trafik yoğunluğuna bağlı olarak daha fazla) gereklidir.
* Ağ Arayüzü Kartı (NIC): Ağ trafiğini yakalamak için özel bir ağ arayüzü kartı veya Suricata’nın dinleyeceği birden fazla arayüz gerekebilir. Yüksek hızlı (Gigabit Ethernet veya 10 Gigabit Ethernet) kartlar, performans açısından önemlidir.
Sistem Güncelleme ve Bağımlılıkların Kurulumu
Herhangi bir yazılım kurulumuna başlamadan önce sisteminizi güncel tutmak iyi bir uygulamadır. Bu, potansiyel güvenlik açıklarını kapatır ve en yeni paket sürümlerine sahip olmanızı sağlar.
Terminali açın ve aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
Suricata’nın düzgün çalışması için bazı bağımlılık paketlerine ihtiyacı vardır. Bu paketler, Suricata’nın derlenmesi veya çalışması için gerekli kütüphaneleri ve araçları sağlar.
sudo apt install -y build-essential libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libmagic-dev libjansson-dev libnss3-dev liblz4-dev libmaxminddb-dev libtool automake autoconf pkg-config git python3-pip
* build-essential: Derleme için temel araçlar.
* libpcap-dev: Ağ trafiğini yakalamak için pcap kütüphanesi.
* libnet1-dev: Ağ paketleri oluşturmak için libnet kütüphanesi.
* libyaml-dev: YAML yapılandırma dosyalarını ayrıştırmak için.
* zlib1g-dev: Sıkıştırma kütüphanesi.
* libcap-ng-dev: Yetenek yönetimi.
* libmagic-dev: Dosya türü tespiti.
* libjansson-dev: JSON verilerini işlemek için.
* libnss3-dev: NSS (Network Security Services) kütüphanesi.
* liblz4-dev: LZ4 sıkıştırma kütüphanesi.
* libmaxminddb-dev: GeoIP veritabanı desteği.
* libtool, automake, autoconf, pkg-config: Derleme araçları.
* git: Suricata kaynak kodunu indirmek için.
* python3-pip: Suricata-update gibi araçlar için Python paket yöneticisi.
Ağ Arayüzünü Promiscuous Moda Alma
Suricata’nın ağdaki tüm trafiği görebilmesi için dinleyeceği ağ arayüzünün promiscuous (karışık) modda olması gerekir. Bu mod, ağ arayüzünün kendisine yönlendirilmeyen paketleri bile yakalamasına olanak tanır. Çoğu modern Linux dağıtımında Suricata gibi araçlar bu modu otomatik olarak ayarlar, ancak manuel olarak kontrol etmek veya ayarlamak gerekebilir.
Ağ arayüzünüzün adını ip a veya ifconfig komutlarıyla bulabilirsiniz (örneğin eth0 veya enp0s3).
sudo ip link set dev promisc on
Örnek:
sudo ip link set dev enp0s3 promisc on
Bu ayar yeniden başlatmada kaybolur. Kalıcı hale getirmek için /etc/network/interfaces veya netplan yapılandırmasını düzenlemeniz gerekebilir. Ancak Suricata genellikle kendi servisi başladığında bu ayarı yapar.
Suricata Kurulum Yöntemleri
Suricata’yı Ubuntu 20.04 üzerine kurmak için iki ana yöntem vardır: APT paket yöneticisi ile kurulum (daha kolay ve önerilen) ve kaynak koddan kurulum (daha fazla kontrol ve en güncel sürüm için).
APT Paket Yöneticisi ile Kurulum (Önerilen ve Daha Basit Yöntem)
Bu yöntem, çoğu kullanıcı için en kolay ve en hızlı yoldur. Ubuntu’nun varsayılan depolarında Suricata’nın bir sürümü bulunsa da, genellikle en güncel sürüm olmayabilir. Bu nedenle, OISF’in resmi Suricata deposunu eklemek, en güncel kararlı sürümü almanızı sağlar.
Suricata Deposunu Ekleme
OISF’in resmi deposunu sisteminize eklemek için aşağıdaki adımları izleyin:
1. Gerekli paketleri yükleyin:
sudo apt install -y software-properties-common apt-transport-https wget
2. Suricata GPG anahtarını indirin ve ekleyin:
wget -qO - https://apt.suricata.io/apt.asc | sudo apt-key add -
3. Suricata deposunu sources.list.d dizinine ekleyin:
echo "deb https://apt.suricata.io/focal stable main" | sudo tee /etc/apt/sources.list.d/suricata.list
Burada focal, Ubuntu 20.04’ün kod adıdır. Eğer farklı bir Ubuntu sürümü kullanıyorsanız, o sürümün kod adını kullanmanız gerekir.
4. Paket listesini güncelleyin:
sudo apt update
Suricata Paketini Kurma
Depoyu ekledikten ve paket listesini güncelledikten sonra, Suricata’yı kurmak artık çok basittir:
sudo apt install -y suricata
Kurulum tamamlandığında, Suricata servisi genellikle otomatik olarak başlar. Durumunu kontrol etmek için:
sudo systemctl status suricata
Eğer çalışmıyorsa, manuel olarak başlatabilirsiniz:
sudo systemctl start suricata
Suricata’nın kurulum dizini genellikle /etc/suricata ve günlük dosyaları /var/log/suricata altında bulunur.
Kaynak Koddan Kurulum (Daha Gelişmiş ve Özelleştirilebilir Yöntem)
Kaynak koddan kurulum, Suricata’nın en yeni özelliklerini veya belirli bir sürümünü kullanmak isteyenler için daha fazla esneklik sunar. Ancak, derleme süreci daha fazla adım ve dikkat gerektirir.
Gerekli Bağımlılıkları Kurma
Bu yöntemi kullanacaksanız, “Sistem Güncelleme ve Bağımlılıkların Kurulumu” bölümündeki tüm bağımlılıkları yüklediğinizden emin olun. Bu adım, derleme için gerekli tüm araçları ve kütüphaneleri sağlar.
Suricata Kaynak Kodunu İndirme
Suricata’nın en güncel kaynak kodunu GitHub deposundan klonlayabilirsiniz:
cd /opt
sudo git clone https://github.com/OISF/suricata.git
cd suricata
Belirli bir sürümü indirmek isterseniz, git checkout komutunu kullanabilirsiniz (örneğin, git checkout suricata-6.0.4).
Derleme ve Kurulum
Kaynak kodu indirdikten sonra, derleme ve kurulum adımlarına geçebiliriz:
1. Yapılandırma betiğini çalıştırın:
Bu adım, sisteminizdeki bağımlılıkları kontrol eder ve derleme seçeneklerini ayarlar.
sudo ./autogen.sh
sudo ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua --enable-geoip --enable-hiredis
* --prefix=/usr: Kurulum dizinini belirtir.
* --sysconfdir=/etc: Yapılandırma dosyalarının yerini belirtir.
* --localstatedir=/var: Durum dosyalarının ve günlüklerin yerini belirtir.
* --enable-nfqueue: IPS modunda Netfilter entegrasyonu için.
* --enable-lua: Lua betik desteği için.
* --enable-geoip: GeoIP desteği için.
* --enable-hiredis: Redis entegrasyonu için.
İhtiyaçlarınıza göre bu seçenekleri değiştirebilirsiniz.
2. Derleme işlemini başlatın:
sudo make
Bu işlem, sisteminizin donanımına bağlı olarak biraz zaman alabilir.
3. Kurulumu gerçekleştirin:
sudo make install
Bu komut, derlenmiş Suricata ikili dosyalarını ve ilgili dosyaları sistem dizinlerine kopyalar.
4. Suricata’nın sistem yolunda olduğundan emin olun ve kütüphane önbelleğini güncelleyin:
sudo ldconfig
5. Varsayılan yapılandırma dosyalarını kopyalayın:
sudo cp suricata.yaml /etc/suricata/
sudo cp classification.config /etc/suricata/
sudo cp reference.config /etc/suricata/
Bu dosyaları kaynak kod dizininden /etc/suricata altına kopyalamanız gerekir. Eğer /etc/suricata dizini yoksa, oluşturun: sudo mkdir -p /etc/suricata.
6. systemd servisini yapılandırın:
Kaynak koddan kurulumda, Suricata’nın bir systemd servisi olarak çalışmasını sağlamak için manuel olarak bir servis dosyası oluşturmanız gerekebilir.
sudo cp /opt/suricata/etc/suricata.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable suricata
sudo systemctl start suricata
Bu adımlardan sonra Suricata servisi otomatik olarak başlayacak ve sistem başlangıcında etkinleştirilecektir.
Suricata Yapılandırması
Suricata’nın kalbi, /etc/suricata/suricata.yaml dosyasında bulunan yapılandırmasıdır. Bu dosya, Suricata’nın nasıl çalışacağını, hangi kuralları kullanacağını, günlükleri nereye yazacağını ve diğer birçok önemli ayarı belirler.
Yapılandırma Dosyasına Genel Bakış (suricata.yaml)
suricata.yaml dosyası YAML formatında yazılmıştır ve oldukça kapsamlıdır. Bir metin düzenleyici ile açın:
sudo nano /etc/suricata/suricata.yaml
Dosya içindeki yorumlar (# ile başlayan satırlar) ayarlar hakkında bilgi verir. Önemli bölümler şunlardır:
Ağ Arayüzü Ayarları (Home_Net, External_Net)
Bu ayarlar, Suricata’nın ağınızın iç ve dış kısımlarını nasıl tanımladığını belirler ve kural değerlendirmesi için kritik öneme sahiptir.
* home-net: Korumak istediğiniz iç ağınızı tanımlar. Genellikle yerel ağınızın IP aralığıdır.
home-net: "[192.168.1.0/24,10.0.0.0/8]" # Örnek: Yerel ağınızın IP aralığı
Birden fazla IP aralığı veya tek bir IP adresi belirtebilirsiniz.
* external-net: home-net dışındaki tüm ağları tanımlar. Genellikle “any” olarak bırakılır veya belirli dış ağlar belirtilir.
external-net: "any" # Genellikle bu şekilde bırakılır
Bu ayarlar, kuralların “kaynak” veya “hedef” olarak HOME_NET veya EXTERNAL_NET değişkenlerini kullandığında nasıl yorumlanacağını belirler.
Kural Dosyalarının Yönetimi
Suricata, kural dosyalarını belirli bir dizinden okur. suricata.yaml içinde rule-files bölümünü bulacaksınız:
rule-files:
- suricata.rules # Örnek kural dosyası
- local.rules # Kendi özel kurallarınız için
Varsayılan olarak, Suricata’nın kendi kural dosyaları ve suricata-update ile indirilen kurallar burada belirtilen dizinlerde bulunur. Genellikle /var/lib/suricata/rules veya /etc/suricata/rules altında bulunurlar.
Günlükleme Ayarları (Evebox, JSON, Unified2)
Suricata, olayları ve uyarıları farklı formatlarda günlüğe kaydedebilir. En yaygın kullanılanlar:
* fast.log: Hızlı ve okunabilir bir formatta uyarıları kaydeder.
outputs:
- fast:
enabled: yes
filename: fast.log
append: yes
# level: info
* eve.json: Tüm olayları (uyarılar, akışlar, HTTP istekleri, DNS sorguları vb.) yapılandırılmış JSON formatında kaydeder. SIEM sistemleriyle entegrasyon için idealdir.
outputs:
- eve-log:
enabled: yes
filetype: regular
filename: eve.json
# community_id: yes # Akışlar için benzersiz ID oluşturur
# append: yes
# compression: lz4 # gzip, bzip2, xz, lz4
# # level: info
eve.json çıktısı, olayları daha detaylı incelemek için çok değerlidir.
* drop.log: IPS modunda engellenen paketleri kaydeder.
* unified2-alert: Snort ile uyumlu bir format.
Performans Ayarları (runmode, threads)
Suricata’nın performansını optimize etmek için runmode ve threading ayarları önemlidir.
* runmode: Suricata’nın hangi modda çalışacağını belirler.
runmode: autofp # Varsayılan ve çoğu zaman en iyi seçenek
* autofp: En iyi performansı sağlamak için Suricata’nın otomatik olarak iş parçacıklarını yönetmesini sağlar.
* workers: Her ağ arayüzü için ayrı bir iş parçacığı oluşturur.
* simple: Tek iş parçacıklı mod.
* threading: İş parçacığı sayılarını manuel olarak ayarlayabilirsiniz, ancak autofp genellikle yeterlidir.
threading:
set-cpu-affinity: no # CPU çekirdeklerine iş parçacıklarını sabitleme
detect:
- management-type: "auto"
# ... diğer ayarlar
Yapılandırma Dosyasını Doğrulama:
Herhangi bir değişiklik yaptıktan sonra, Suricata’nın yapılandırma dosyasını doğrulamanız önemlidir:
sudo suricata -T -c /etc/suricata/suricata.yaml -i
Örnek:
sudo suricata -T -c /etc/suricata/suricata.yaml -i enp0s3
Bu komut, yapılandırma dosyasında herhangi bir hata olup olmadığını kontrol eder. Eğer “Configuration OK” mesajını görürseniz, her şey yolundadır.
Kural Yönetimi ve Güncelleme
Suricata’nın etkinliği, kullandığı kural setlerinin güncelliğine ve kalitesine bağlıdır. Suricata, çeşitli kural setlerini destekler ve suricata-update aracıyla bu kuralları kolayca yönetmenizi sağlar.
Varsayılan Kural Setleri (Emerging Threats, Proofpoint ET Open)
Suricata, Snort kuralları ile uyumlu olduğu için, Snort tarafından da kullanılan birçok kural setini kullanabilir. En popüler açık kaynak kural seti, Proofpoint tarafından sağlanan Emerging Threats (ET Open) kurallarıdır. Bu kurallar, bilinen birçok saldırı, kötü amaçlı yazılım ve ağ anormalliği için imzalar içerir.
Suricata-Update Aracı
suricata-update, Suricata kural setlerini indirmek, güncellemek ve yönetmek için resmi bir araçtır.
1. Kurulum: suricata-update genellikle Suricata ile birlikte gelir veya Python pip ile kurulabilir.
sudo pip3 install suricata-update
2. Kural Kaynaklarını Yapılandırma: suricata-update‘in hangi kural setlerini indireceğini belirlemeniz gerekir. Varsayılan olarak, ET Open kuralları etkindir. Diğer kural setlerini etkinleştirmek veya devre dışı bırakmak için suricata-update --list-sources komutunu kullanabilirsiniz.
sudo suricata-update --list-sources
Örneğin, ET Open kurallarını etkinleştirmek için:
sudo suricata-update enable-source et/open
3. Kuralları Güncelleme: Kuralları indirmek veya güncellemek için aşağıdaki komutu çalıştırın:
sudo suricata-update
Bu komut, belirtilen kaynaklardan en son kuralları indirir, Suricata için uygun formatta derler ve /var/lib/suricata/rules/suricata.rules (veya yapılandırmanızda belirtilen diğer dizinlere) kaydeder.
4. Suricata’yı Yeniden Başlatma: Yeni kuralların etkin olması için Suricata servisini yeniden başlatmanız gerekir:
sudo systemctl restart suricata
Otomatik Kural Güncelleme:
Kuralları düzenli olarak güncel tutmak önemlidir. Bunu otomatikleştirmek için bir cron işi oluşturabilirsiniz:
sudo crontab -e
Aşağıdaki satırı ekleyin (örneğin, her gün sabah 3’te güncelleme yapar):
0 3 * /usr/bin/suricata-update && systemctl restart suricata
Bu, Suricata’nın her gün en son tehdit imzalarıyla güncel kalmasını sağlar.
Özel Kural Oluşturma (Basit bir örnek)
Kendi özel kurallarınızı yazarak Suricata’nın algılama yeteneklerini genişletebilirsiniz. Özel kurallar genellikle /etc/suricata/rules/local.rules gibi ayrı bir dosyada saklanır.
Örnek bir kural:
alert tcp any any -> $HOME_NET 80 (msg:"HTTP: Custom Test Rule - Access to Port 80"; flow:to_client,established; content:"User-Agent|3A| CustomAgent"; nocase; sid:1000001; rev:1;)
Bu kural, User-Agent başlığında “CustomAgent” içeren herhangi bir HTTP trafiğini (port 80) tespit ettiğinde bir uyarı oluşturur.
* alert: Kural tetiklendiğinde uyarı oluştur.
* tcp any any -> $HOME_NET 80: Herhangi bir kaynaktan $HOME_NET içindeki port 80’e giden TCP trafiği.
* msg: Uyarı mesajı.
* flow: Akış yönü ve durumu.
* content: Aranacak içerik.
* nocase: Büyük/küçük harf duyarsız arama.
* sid: Kuralın benzersiz kimliği (1000000’dan büyük sayılar özel kurallar için önerilir).
* rev: Kuralın revizyon numarası.
Özel kurallarınızı ekledikten sonra, suricata.yaml dosyasında local.rules dosyasının belirtildiğinden emin olun ve Suricata’yı yeniden başlatın.
Suricata’yı Başlatma ve Yönetme
Suricata, systemd ile entegre bir servis olarak çalışır, bu da onu kolayca yönetmenizi sağlar.
Servisi Başlatma, Durdurma, Yeniden Başlatma
* Başlatma:
sudo systemctl start suricata
* Durdurma:
sudo systemctl stop suricata
* Yeniden Başlatma: (Yapılandırma veya kural değişikliklerinden sonra)
sudo systemctl restart suricata
Servis Durumunu Kontrol Etme
Suricata servisinin çalışıp çalışmadığını ve herhangi bir hata olup olmadığını kontrol etmek için:
sudo systemctl status suricata
Bu komut, servisin aktif olup olmadığını, son günlük mesajlarını ve varsa hataları gösterir.
Canlı Test Modu (IDS/IPS modları)
Suricata’yı IDS (Saldırı Tespit Sistemi) modunda çalıştırmak için:
sudo suricata -c /etc/suricata/suricata.yaml -i
Örnek:
sudo suricata -c /etc/suricata/suricata.yaml -i enp0s3
Bu komut, Suricata’yı ön planda çalıştırır ve uyarıları doğrudan konsola basar. Test ve hata ayıklama için kullanışlıdır.
Suricata’yı IPS (Saldırı Önleme Sistemi) modunda çalıştırmak için Netfilter (nfqueue) entegrasyonunu kullanmanız gerekir. Öncelikle nfqueue desteği ile derlediğinizden emin olun (kaynak koddan kurulumda --enable-nfqueue veya APT sürümünde bu özelliğin mevcut olduğunu kontrol edin).
IPS modunda Suricata, ağ trafiğini yakalar, kurallara göre analiz eder ve kötü niyetli trafiği engeller. Bunun için iptables kuralları ile Suricata’ya trafik yönlendirmeniz gerekir.
1. Suricata’yı nfqueue modunda başlatın:
sudo suricata -c /etc/suricata/suricata.yaml --nfqueue-num 0
Burada 0, Suricata’nın dinleyeceği nfqueue numarasını belirtir.
2. iptables kurallarını ekleyin:
Tüm trafiği (veya belirli trafiği) Suricata’ya yönlendirmek için iptables kuralları kullanın.
sudo iptables -I FORWARD -j NFQUEUE --queue-num 0
sudo iptables -I INPUT -j NFQUEUE --queue-num 0
sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0
Bu kurallar, tüm gelen, giden ve iletilen trafiği Suricata’nın dinlediği 0 numaralı kuyruğa yönlendirir. Suricata, bu kuyruktaki paketleri işler ve kural setine göre izin verir veya engeller.
UYARI: IPS modunu dikkatli kullanın. Yanlış yapılandırma, ağ trafiğini tamamen kesebilir. Test ortamında denemeden canlı sistemlerde kullanmayın.
Suricata ile Log Analizi ve İzleme
Suricata’nın ürettiği günlükler, ağınızda neler olup bittiğini anlamak için hayati öneme sahiptir. Bu günlükler, güvenlik olaylarını tespit etmenize ve analiz etmenize yardımcı olur.
fast.log ve eve.json dosyalarının incelenmesi
* fast.log: Hızlı bir genel bakış için idealdir. Uyarı mesajlarını, zaman damgalarını ve kaynak/hedef IP adreslerini içerir.
sudo tail -f /var/log/suricata/fast.log
Bu komut, fast.log dosyasına yeni yazılan satırları gerçek zamanlı olarak gösterir.
* eve.json: Daha detaylı analiz için kullanılır. JSON formatında olduğu için makine tarafından kolayca ayrıştırılabilir ve SIEM sistemleri için çok uygundur.
sudo tail -f /var/log/suricata/eve.json | jq .
jq aracı (JSON işlemcisi), eve.json çıktısını daha okunabilir bir hale getirir. jq yüklü değilse sudo apt install -y jq ile yükleyebilirsiniz.
eve.json çıktısında, event_type alanı olayın türünü (alert, http, dns, flow, tls vb.) belirtir. alert olayları, Suricata’nın bir kuralı tetiklediği durumları gösterir.
tail -f kullanımı
tail -f komutu, günlük dosyalarını gerçek zamanlı olarak izlemek için vazgeçilmezdir. Özellikle yeni kurallar test ederken veya ağdaki şüpheli etkinlikleri anında görmek istediğinizde çok faydalıdır.
Log Yönetim Sistemleri (ELK Stack, Splunk) ile Entegrasyon
Büyük ağlarda, Suricata’nın ürettiği günlükleri manuel olarak incelemek sürdürülebilir değildir. Bu noktada, log yönetim sistemleri (SIEM) devreye girer.
* ELK Stack (Elasticsearch, Logstash, Kibana): Suricata’nın eve.json çıktısını Logstash ile parse edip Elasticsearch’e gönderebilir, ardından Kibana ile görselleştirebilirsiniz. Bu, güvenlik olaylarını merkezi bir yerden izlemek ve analiz etmek için güçlü bir çözümdür.
* Splunk: Ticari bir SIEM çözümü olan Splunk da Suricata günlüklerini alabilir ve gelişmiş analiz yetenekleri sunar.
Bu entegrasyonlar, Suricata’nın ürettiği zengin veriyi anlamlı güvenlik istihbaratına dönüştürmek için kritik öneme sahiptir.
Performans Optimizasyonu ve En İyi Uygulamalar
Suricata’nın performansı, ağınızın boyutuna ve trafik hacmine göre optimize edilmelidir. Yanlış yapılandırma, paket düşmelerine veya kaynak yetersizliğine yol açabilir.
Donanım Optimizasyonu
* CPU Çekirdekleri: Suricata’nın çok iş parçacıklı yapısı, birden fazla CPU çekirdeğinden tam olarak yararlanır. Mümkün olduğunca fazla çekirdeğe sahip bir sistem kullanın.
* RAM: Yeterli RAM, kural setlerini ve oturum durumlarını bellekte tutmak için kritiktir.
* SSD Disk: Günlük yazma işlemleri yoğun olabileceği için hızlı bir SSD kullanmak, I/O performansını artırır.
* NIC Kartları: Yüksek hızlı (Gigabit veya 10 Gigabit) NIC’ler, paket yakalama performansını artırır.
Kural Seti Optimizasyonu
* Gereksiz Kuralları Devre Dışı Bırakma: Kullanmadığınız veya ağınız için alakasız olan kural setlerini veya tek tek kuralları devre dışı bırakın. Her kural, Suricata’nın iş yüküne katkıda bulunur.
* Özel Kurallar: Kendi özel kurallarınızı yazarken, performans dostu kurallar yazmaya özen gösterin. Örneğin, geniş kapsamlı “any any” kurallar yerine daha spesifik IP adresleri ve portlar kullanın.
* Kural Grupları: Suricata, kural gruplarını optimize etmek için motorunda mekanizmalar barındırır.
Af_packet ve PF_RING Kullanımı (Kısa bilgi)
Yüksek trafikli ağlarda, Suricata’nın varsayılan pcap yakalama motoru yeterli gelmeyebilir. Bu durumda, daha gelişmiş yakalama yöntemleri kullanılabilir:
* AF_PACKET: Linux çekirdeğinin kendi bir özelliğidir ve pcap‘e göre daha performanslıdır. Suricata, af-packet modunda birden fazla iş parçacığı kullanarak paketleri yakalayabilir ve işleyebilir. suricata.yaml dosyasında af-packet bölümünü etkinleştirerek kullanabilirsiniz.
* PF_RING: ZC (Zero Copy) modunda çok yüksek performanslı paket yakalama sağlayan ticari bir kütüphanedir. PF_RING, özellikle 10 Gigabit ve üzeri ağlarda Suricata’nın performansını önemli ölçüde artırabilir. Ancak, kurulumu daha karmaşıktır ve bazı sürümleri lisans gerektirebilir.
Suricata’yı IPS Modunda Kullanma (Inline Mode)
IPS modunda Suricata, ağ trafiğini aktif olarak engeller. Bu, ağ güvenlik duruşunuzu önemli ölçüde artırabilir ancak dikkatli yapılandırma gerektirir.
* Netfilter (NFQUEUE): Linux çekirdeğinin Netfilter (iptables) mekanizması ile entegrasyon, Suricata’nın IPS modunda çalışmasını sağlar. Trafik belirli bir kuyruğa yönlendirilir, Suricata bu kuyruktan paketleri alır, inceler ve karara göre paketi geri gönderir veya düşürür.
* Performans Etkisi: IPS modunda Suricata, her paketi analiz edip bir karar vermesi gerektiği için ek bir gecikme (latency) yaratır. Bu nedenle, yüksek performanslı donanım ve optimize edilmiş kural setleri kritik öneme sahiptir.
* Yedeklilik: IPS modunda çalışan Suricata cihazının arızalanması durumunda ağ trafiğinin kesilmemesi için yedeklilik çözümleri (örneğin, bypass ağ kartları) düşünülmelidir.
Yaygın Sorunlar ve Çözümleri
Suricata kurulumu ve yönetimi sırasında karşılaşabileceğiniz bazı yaygın sorunlar ve bunların olası çözümleri aşağıdadır:
Kural Güncelleme Hataları
* Sorun: suricata-update çalışmıyor veya kural indiremiyor.
* Çözüm:
* İnternet bağlantınızı kontrol edin.
* Kural kaynaklarının doğru yapılandırıldığından emin olun (suricata-update --list-sources).
* suricata-update aracının en güncel sürümünü kullandığınızdan emin olun (sudo pip3 install --upgrade suricata-update).
* Depo anahtarlarının ve depo URL’sinin doğru olduğundan emin olun.
Performans Düşüşü
* Sorun: Suricata yüksek CPU veya RAM kullanımı sergiliyor, paket düşmeleri yaşanıyor.
* Çözüm:
* suricata.yaml dosyasındaki runmode ve threading ayarlarını kontrol edin. autofp genellikle en iyi başlangıç noktasıdır.
* Gereksiz kural setlerini veya tek tek kuralları devre dışı bırakın.
* Daha performanslı yakalama motorlarına geçmeyi düşünün (AF_PACKET veya PF_RING).
* Sistem kaynaklarını (CPU, RAM) yükseltmeyi düşünün.
* top, htop, iftop gibi araçlarla sistem kaynak kullanımını izleyin.
Ağ Trafiği Yakalama Sorunları
* Sorun: Suricata hiçbir trafik yakalamıyor veya çok az trafik görüyor.
* Çözüm:
* Suricata’nın dinlediği ağ arayüzünün adının doğru olduğundan emin olun (suricata -c ... -i ).
* Arayüzün promiscuous modda olduğundan emin olun (sudo ip link set dev promisc on).
* Fiziksel bağlantıyı ve ağ anahtarının (switch) port yansıtma (port mirroring/SPAN) ayarlarını kontrol edin. Suricata’nın tüm trafiği görmesi için bu ayar gereklidir.
* tcpdump -i komutuyla arayüzden trafik geçip geçmediğini kontrol edin.
Suricata Servisi Başlamıyor
* Sorun: sudo systemctl start suricata komutundan sonra servis başlamıyor veya hemen duruyor.
* Çözüm:
* sudo systemctl status suricata komutuyla servis durumunu ve hata mesajlarını kontrol edin.
* sudo journalctl -xe | grep suricata komutuyla detaylı günlükleri inceleyin.
* suricata.yaml yapılandırma dosyasını sudo suricata -T komutuyla doğrulayın. Yapılandırma hatası varsa, düzeltin.
* Gerekli bağımlılıkların yüklü olduğundan emin olun.
* Kural dosyalarının doğru yolda olduğundan ve okunabilir izinlere sahip olduğundan emin olun.
Sonuç ve İleri Adımlar
Bu kapsamlı rehberde, Suricata’yı Ubuntu 20.04 üzerine kurma, yapılandırma ve yönetme süreçlerini detaylı bir şekilde ele aldık. Suricata, ağ güvenliğinizi güçlendirmek için güçlü ve esnek bir araçtır. Doğru kurulum ve yapılandırma ile ağınızdaki kötü niyetli etkinlikleri proaktif bir şekilde tespit edebilir ve hatta önleyebilirsiniz.
Suricata’yı kurmak sadece başlangıçtır. Gerçek değerini, onu sürekli izleyerek, kurallarını güncelleyerek ve ürettiği günlükleri analiz ederek elde edersiniz.
İleri Adımlar:
1. Günlük Yönetimi ve Görselleştirme: Suricata’nın ürettiği eve.json günlüklerini bir ELK Stack (Elasticsearch, Logstash, Kibana) veya Splunk gibi bir SIEM sistemine entegre ederek olayları merkezi bir konumdan izleyin ve görselleştirin.
2. Özel Kural Geliştirme: Ağınızın özel ihtiyaçlarına veya karşılaştığınız benzersiz tehditlere yönelik kendi Suricata kurallarınızı yazmayı öğrenin.
3. Performans Ayarlama: Ağ trafiğinizin hacmine ve türüne göre Suricata’nın performans ayarlarını (AF_PACKET, PF_RING, iş parçacığı ayarları) daha da optimize edin.
4. IPS Modu Uygulaması: Dikkatli bir şekilde test ortamında denemeler yaparak Suricata’yı IPS modunda kullanma becerilerinizi geliştirin ve potansiyel olarak canlı ağınızda uygulayın.
5. Otomasyon: suricata-update gibi araçları kullanarak kural güncellemelerini ve Suricata’nın yeniden başlatılmasını otomatikleştirmek, yönetim yükünü azaltacaktır.
6. Sürekli Öğrenme: Siber güvenlik alanı sürekli değiştiği için, Suricata’nın yeni özelliklerini ve en iyi uygulamalarını takip etmeye devam edin.
Suricata, doğru kullanıldığında ağ savunmanız için vazgeçilmez bir varlık haline gelebilir. Bu rehberdeki adımları takip ederek, ağınızı daha güvenli hale getirme yolunda önemli bir adım atmış olacaksınız.
