Takip et

Rocky Linux 8 Üzerinde Suricata’yı Bir Saldırı Önleme Sistemi (IPS) Olarak Yapılandırma Kılavuzu

Rocky Linux 8 Üzerinde Suricata’yı Bir Saldırı Önleme Sistemi (IPS) Olarak Yapılandırma Kılavuzu Rocky Linux 8 gibi kurumsal düzeyde bir iş

Rocky Linux 8 Üzerinde Suricata’yı Bir Saldırı Önleme Sistemi (IPS) Olarak Yapılandırma Kılavuzu

Rocky Linux 8 gibi kurumsal düzeyde bir işletim sistemi üzerinde Suricata’yı bir Saldırı Önleme Sistemi (IPS) olarak yapılandırmak, ağ güvenliğinizi önemli ölçüde artırmanın güçlü bir yoludur. Bu kapsamlı teknik makale, Suricata’nın kurulumundan, IPS modunda yapılandırılmasına, kural yönetimine ve sistemin test edilmesine kadar adım adım bir rehber sunmaktadır. Ağ yöneticileri ve güvenlik uzmanları için tasarlanan bu kılavuz, Suricata’nın potansiyelini tam olarak kullanarak ağınızı kötü niyetli saldırılardan korumanıza yardımcı olacaktır.

Giriş

Günümüzün sürekli gelişen siber tehdit ortamında, ağ güvenliği her zamankinden daha kritik hale gelmiştir. Saldırı Tespit Sistemleri (IDS) ve Saldırı Önleme Sistemleri (IPS), bu tehditlere karşı savunmada temel bileşenlerdir. Suricata, açık kaynaklı, yüksek performanslı ve çoklu iş parçacıklı bir ağ tehdit algılama motorudur. Hem IDS hem de IPS modunda çalışabilir ve ağ trafiğini derinlemesine inceleyerek kötü niyetli aktiviteyi tespit edip engelleyebilir.

Bir IDS olarak Suricata, şüpheli etkinlikleri veya bilinen tehdit imzalarını algılar ve yöneticileri uyarır. Ancak, bir IPS olarak yapılandırıldığında, Suricata yalnızca uyarı vermekle kalmaz, aynı zamanda algılanan tehditleri gerçek zamanlı olarak engelleme veya düşürme yeteneğine de sahiptir. Bu, proaktif bir güvenlik duruşu sağlayarak saldırıların ağınıza zarar vermesini veya hassas verilere erişmesini önler.

Rocky Linux 8, CentOS’un halefi olarak, kararlılığı, güvenilirliği ve kurumsal destek sağlaması nedeniyle sunucu ortamları için mükemmel bir seçimdir. Suricata’yı Rocky Linux 8 üzerinde IPS modunda yapılandırmak, bu sağlam platformun güvenlik yeteneklerini artırmanın mantıklı bir yoludur. Bu makalede, Suricata’yı kurmak, NFQUEUE mekanizması aracılığıyla IPS modunu etkinleştirmek, kural setlerini yönetmek ve sistemin doğru çalıştığını doğrulamak için gerekli tüm adımları ayrıntılı olarak ele alacağız. Amacımız, ağınızı bilinen ve ortaya çıkan tehditlere karşı koruyan sağlam bir IPS çözümü oluşturmanız için size tam yetki vermektir.

Ön Gereksinimler

Suricata’yı Rocky Linux 8 üzerinde bir IPS olarak yapılandırmaya başlamadan önce, aşağıdaki ön koşulların yerine getirildiğinden emin olmalısınız:

* Rocky Linux 8 Kurulumu: Temiz bir Rocky Linux 8 kurulumuna sahip bir sunucu veya sanal makine.
* Root veya Sudo Yetkileri: Komutları çalıştırmak ve sistem yapılandırmasını değiştirmek için root erişimi veya sudo yetkilerine sahip bir kullanıcı.
* Temel Linux Komut Satırı Bilgisi: Temel Linux komutlarını (dosya işlemleri, paket yönetimi vb.) kullanma becerisi.
* Ağ Arayüzü Bilgisi: Ağ arayüzlerinizin (örneğin, eth0, enp0s3) adlarını ve ağ topolojinizi anlama.
* İnternet Erişimi: Gerekli paketleri ve Suricata kurallarını indirmek için internet bağlantısı.
* Yeterli Sistem Kaynakları: Suricata, özellikle yüksek ağ trafiği olan ortamlarda önemli CPU ve RAM kaynakları tüketebilir. Yeterli kaynaklara sahip bir sistem önerilir.

Bu ön koşullar sağlandığında, Suricata kurulum ve yapılandırma sürecine güvenle başlayabilirsiniz.

Suricata Kurulumu

Suricata’yı Rocky Linux 8’e kurmanın iki ana yolu vardır: paket yöneticisi aracılığıyla veya kaynaktan derleyerek. Kaynaktan derleme, en güncel sürümü edinmenizi ve özel yapılandırma seçeneklerini (özellikle IPS için kritik olan NFQUEUE desteği gibi) etkinleştirmenizi sağlar. Bu nedenle, kaynaktan derleme yöntemi genellikle daha çok tercih edilir ve bu kılavuzda ona odaklanacağız.

Sistem Güncelleme

Kuruluma başlamadan önce sisteminizin güncel olduğundan emin olun ve EPEL deposunu etkinleştirin. EPEL (Extra Packages for Enterprise Linux), Suricata’nın bazı bağımlılıkları veya kendisi için yararlı olabilecek ek paketler sağlar.

sudo dnf update -y
sudo dnf install epel-release -y
sudo dnf upgrade -y

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

Suricata’yı kaynaktan derlemek için birçok geliştirme aracına ve kütüphaneye ihtiyacınız olacaktır. Bu bağımlılıkları aşağıdaki komutla yükleyebilirsiniz:

sudo dnf install -y gcc make libpcap-devel pcre-devel libyaml-devel zlib-devel file-devel jansson-devel nss-devel libcap-ng-devel libnet-devel libmaxminddb-devel luajit-devel hwloc-devel openssl-devel rust-toolset

rust-toolset genellikle scl enable ile etkinleştirilmesi gereken bir yazılım koleksiyonudur. Eğer rustc komutunu doğrudan bulamıyorsanız, derleme öncesinde scl enable rust-toolset-1.x bash (sürüm numarası değişebilir) komutunu çalıştırmanız gerekebilir veya sadece rust paketini yüklemeyi deneyebilirsiniz. Rocky Linux 8’de genellikle dnf install rust yeterli olacaktır.

Suricata’yı Kaynaktan Derleme

Bu yöntem, Suricata’nın en güncel ve optimize edilmiş sürümünü kurmanızı sağlar.

1. Suricata Kaynak Kodunu İndirme:
Suricata’nın resmi web sitesinden (https://suricata.io/download/) en son kararlı sürümün tarball’ını indirin. Örneğin, 8.0.0 sürümü için:

cd /opt
    sudo wget https://www.openinfosecfoundation.org/download/suricata-8.0.0.tar.gz
    sudo tar -xvf suricata-8.0.0.tar.gz
    cd suricata-8.0.0

Not: 8.0.0 sürüm numarasını indirdiğiniz güncel sürümle değiştirin.

2. Yapılandırma (Configure):
Bu adımda, Suricata’yı IPS modu için kritik olan NFQUEUE desteğiyle yapılandırıyoruz. Ayrıca kurulum yollarını da belirtiyoruz.

./configure --enable-nfqueue --prefix=/usr/local --sysconfdir=/etc/suricata --localstatedir=/var/log/suricata

* --enable-nfqueue: Bu seçenek, Suricata’nın Netfilter Queue (NFQUEUE) ile etkileşime girmesini sağlar, bu da IPS modu için hayati öneme sahiptir.
* --prefix=/usr/local: Suricata’nın ana yürütülebilir dosyalarının (suricata) yerleştirileceği dizin.
* --sysconfdir=/etc/suricata: Yapılandırma dosyalarının (suricata.yaml, rules vb.) yerleştirileceği dizin.
* --localstatedir=/var/log/suricata: Log dosyalarının yerleştirileceği dizin.

configure komutunu çalıştırdıktan sonra, çıktıyı kontrol ederek NFQUEUE desteğinin etkinleştirildiğinden emin olun. Genellikle “NFQUEUE support: yes” gibi bir satır görürsünüz.

3. Derleme (Make):
Kaynak kodunu derleyin. Çok çekirdekli bir sisteminiz varsa, derleme süresini kısaltmak için -j bayrağını kullanabilirsiniz (örneğin, 4 çekirdek için make -j4).

make

4. Kurulum (Install):
Derlenen dosyaları belirtilen sistem dizinlerine kurun.

sudo make install

5. Gerekli Dizinleri ve Yapılandırma Dosyalarını Oluşturma/Kopyalama:
Suricata’nın düzgün çalışması için bazı dizinlerin ve varsayılan yapılandırma dosyalarının yerinde olması gerekir.

sudo mkdir -p /var/log/suricata /etc/suricata /etc/suricata/rules
    sudo cp suricata.yaml /etc/suricata/
    sudo cp classification.config /etc/suricata/
    sudo cp reference.config /etc/suricata/

6. Dinamik Bağlayıcı Önbelleğini Güncelleme:
Yeni yüklenen kütüphanelerin sistem tarafından bulunabilmesi için dinamik bağlayıcı önbelleğini güncelleyin.

sudo ldconfig

Suricata artık sisteminize kurulmuştur. Bir sonraki adım, IPS modunu etkinleştirmek için NFQUEUE‘yu yapılandırmaktır.

NFQUEUE Yapılandırması (IPS Modu İçin Anahtar)

Suricata’yı bir Saldırı Önleme Sistemi (IPS) olarak çalıştırmanın temel mekanizması, Linux çekirdeğinin Netfilter Queue (NFQUEUE) özelliğini kullanmaktır. NFQUEUE, ağ paketlerinin Suricata gibi kullanıcı alanı uygulamalarına gönderilmesine ve bu uygulamalar tarafından işlenip ardından geri gönderilmesine olanak tanır.

NFQUEUE Nedir?

Netfilter Queue (NFQUEUE), Linux çekirdeğinin Netfilter çerçevesinin bir parçasıdır. iptables kuralları aracılığıyla belirli ağ paketlerini bir kuyruğa yönlendirmemizi sağlar. Suricata, bu kuyruktan paketleri alır, kendi kural setlerine göre inceler ve ardından paketi ya orijinal hedefine geri gönderir (IDS modu) ya da düşürür (IPS modu). Bu “bırakma” yeteneği, Suricata’yı bir IPS yapan şeydir.

Çekirdek Modüllerini Yükleme

NFQUEUE’nun çalışması için ilgili çekirdek modüllerinin yüklü olması gerekir.

sudo modprobe nf_queue
sudo modprobe ip_tables
sudo modprobe ip6_tables # Eğer IPv6 trafiğini de inceleyecekseniz

Sistem Başlangıcında Yükleme

Bu modüllerin sistem yeniden başlatıldığında otomatik olarak yüklenmesini sağlamak için bir yapılandırma dosyası oluşturun:

echo "nf_queue" | sudo tee /etc/modules-load.d/nfqueue.conf
echo "ip_tables" | sudo tee -a /etc/modules-load.d/nfqueue.conf
echo "ip6_tables" | sudo tee -a /etc/modules-load.d/nfqueue.conf

iptables Kuralları Oluşturma

Şimdi, ağ trafiğini Suricata’nın işleyeceği NFQUEUE’ya yönlendirmek için iptables kuralları oluşturmamız gerekiyor. Hangi trafiği incelemek istediğinize bağlı olarak kurallar değişebilir.

* Bir Ağ Geçidi/Yönlendirici Olarak Çalışan Sistem İçin: Eğer Suricata’yı bir ağ geçidi veya yönlendirici üzerinde çalıştırıyorsanız ve farklı ağlar arasındaki trafiği incelemek istiyorsanız FORWARD zincirini kullanın.

sudo iptables -A FORWARD -j NFQUEUE --queue-num 0

* Bir Ana Bilgisayar Koruması İçin (Yerel Makineyi Korumak): Eğer Suricata’yı doğrudan korumak istediğiniz sunucu üzerinde çalıştırıyorsanız, INPUT ve OUTPUT zincirlerini kullanın.

sudo iptables -A INPUT -j NFQUEUE --queue-num 0
    sudo iptables -A OUTPUT -j NFQUEUE --queue-num 0

Not: --queue-num 0 Suricata’nın dinleyeceği kuyruk numarasını belirtir. Suricata yapılandırmasında da aynı kuyruk numarasını kullanmalıyız.

Önemli: iptables kuralları sistem yeniden başlatıldığında kaybolur. Bu kuralların kalıcı olmasını sağlamak için iptables-services paketini kullanabiliriz:

sudo dnf install iptables-services -y
sudo systemctl enable iptables
sudo systemctl start iptables
sudo iptables-save > /etc/sysconfig/iptables

Bu komutlar, mevcut iptables kurallarını /etc/sysconfig/iptables dosyasına kaydeder ve sistem başlangıcında otomatik olarak yüklenmelerini sağlar.

Firewalld ile Kullanım (Alternatif):
Rocky Linux 8 varsayılan olarak firewalld kullanır. firewalld ile iptables kurallarını yönetmek biraz daha karmaşık olabilir. En basit yaklaşım, firewalld‘ı devre dışı bırakıp iptables-services‘ı kullanmaktır. Ancak firewalld kullanmak istiyorsanız, firewall-cmd --direct komutlarını kullanarak NFQUEUE kuralını eklemeniz gerekir:

sudo firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -j NFQUEUE --queue-num 0
sudo firewall-cmd --reload

Bu makale, daha doğrudan kontrol sağladığı için iptables-services yaklaşımını takip edecektir. Eğer firewalld kullanmayı tercih ediyorsanız, Suricata’nın doğru çalıştığından emin olmak için ek yapılandırma ve testler yapmanız gerekebilir.

Suricata Yapılandırması (suricata.yaml)

Suricata’nın ana yapılandırma dosyası /etc/suricata/suricata.yaml‘dır. Bu dosyada Suricata’nın nasıl çalışacağını, hangi kuralları kullanacağını ve IPS modunun nasıl etkinleştirileceğini belirleriz.

Yapılandırma dosyasını düzenlemek için favori metin düzenleyicinizi kullanın:

sudo vi /etc/suricata/suricata.yaml

Varsayılan Ayarlar

suricata.yaml dosyasında yapılması gereken ilk ve en önemli ayarlardan biri HOME_NET ve EXTERNAL_NET değişkenlerini tanımlamaktır. Suricata, bu değişkenleri ağınızdaki iç ve dış trafiği ayırt etmek için kullanır ve kurallar genellikle bu tanımlara göre tetiklenir.

* HOME_NET: Korumak istediğiniz iç ağ(lar)ı tanımlayın. Birden fazla ağınız varsa virgülle ayırabilirsiniz.

vars:
      # vars for your local network
      # you can specify it as "any" or a specific network.
      # For example, "192.168.0.0/16,10.0.0.0/8"
      # This is the network that Suricata will protect.
      HOME_NET: "[192.168.1.0/24]" # Kendi iç ağ IP aralığınızı buraya yazın
      # Example: "192.168.0.0/16,10.0.0.0/8" for multiple networks

Eğer sadece tek bir IP’yi koruyorsanız, "[192.168.1.10]" gibi belirtebilirsiniz.

* EXTERNAL_NET: HOME_NET dışındaki tüm ağlar genellikle EXTERNAL_NET olarak kabul edilir. Genellikle !$HOME_NET olarak bırakılır.

EXTERNAL_NET: "!$HOME_NET"

* default-rule-path: Suricata kurallarının depolandığı dizini belirtir. Kaynaktan kurulum yaptıysanız bu genellikle /etc/suricata/rules olacaktır.

default-rule-path: /etc/suricata/rules

IPS Modunu Etkinleştirme (nfqueue)

IPS modunu etkinleştirmek için nfqueue bölümünü bulup yapılandırmanız gerekir. Suricata, af-packet veya nfqueue gibi farklı capture modları kullanabilir. IPS için nfqueue kullanmalıyız.

suricata.yaml dosyasında nfqueue: bölümünü bulun ve aşağıdaki gibi düzenleyin:

# NFQUEUE support
nfqueue:
  - interface: eth0  # İsteğe bağlı: belirli bir ağ arayüzü belirtmek için
    queue-num: 0     # iptables'da kullandığınız kuyruk numarasıyla eşleşmeli
    queue-bypass: no # Suricata meşgul olduğunda paketleri atlamaması için 'no'
    mode: drop       # IPS için 'drop' olarak ayarlayın. 'accept' IDS modudur.
    # copy-mode: copy_packet
    # copy-range: 2048

* interface: İsteğe bağlıdır. Eğer belirtilmezse, Suricata tüm nfqueue kuyruklarını dinler. Belirli bir arayüzden gelen trafiği işlemek istiyorsanız belirtebilirsiniz.
* queue-num: Bu, iptables kurallarında --queue-num ile belirttiğiniz kuyruk numarasıyla eşleşmelidir (örneğimizde 0).
* queue-bypass: no olarak ayarlanması önemlidir. Bu, Suricata’nın paketleri işleyemediğinde (örneğin, aşırı yüklenme nedeniyle) paketleri atlamamasını sağlar. Bu, güvenli bir “fail-safe” davranışıdır, ancak performans düşüşüne neden olabilir. Yüksek performanslı ortamlarda dikkatli kullanılmalıdır.
* mode: drop: Bu, Suricata’yı IPS moduna geçiren en kritik ayardır. Bir tehdit algılandığında, Suricata ilgili paketi ağdan düşürecektir. Eğer accept olarak ayarlanırsa, Suricata sadece uyarı verir (IDS modu).

Kural Yönetimi

Suricata’nın tehditleri algılayıp engellemesi için kural setlerine ihtiyacı vardır.

* Kural Güncelleme Aracı (suricata-update):
Suricata’nın en önemli araçlarından biri suricata-update‘tir. Bu araç, çeşitli kaynaklardan kural setlerini indirmenize, birleştirmenize ve Suricata’nın anlayacağı formata dönüştürmenize olanak tanır.

sudo suricata-update

İlk çalıştırmada, suricata-update varsayılan kural kaynaklarını (genellikle ET Open) indirir ve /etc/suricata/rules/suricata.rules adlı tek bir dosyada birleştirir. Bu komutu düzenli olarak çalıştırmak için bir cron işi ayarlamanız önerilir.

* Kural Dosyalarını suricata.yaml‘a Ekleme:
İndirilen veya özel olarak oluşturduğunuz kural dosyalarını suricata.yaml dosyasının rule-files: bölümüne eklemeniz gerekir.

rule-files:
      - suricata.rules        # suricata-update tarafından oluşturulan birleşik kural dosyası
      - local.rules           # Kendi özel kurallarınızı yazacağınız dosya

local.rules dosyasını sudo touch /etc/suricata/rules/local.rules komutuyla oluşturmayı unutmayın. Bu dosya, kendi özel algılama veya engelleme kurallarınızı eklemek için idealdir.

Performans Ayarları

Yüksek trafikli ortamlarda Suricata’nın performansını optimize etmek önemlidir.

* runmode: Çok çekirdekli sistemlerde performansı artırmak için runmode‘u workers veya autofp olarak ayarlayabilirsiniz.

runmode:
      # Set to "workers" for multi-threaded operation on multi-core systems.
      # Set to "autofp" for automatic flow processing on multi-core systems.
      # For IPS mode, "autofp" is often preferred.
      worker-balancer: autofp

* stream ve host Ayarları: TCP akış yeniden birleştirme ve ana bilgisayar takibi için ayarlar. Varsayılanlar çoğu durum için yeterli olsa da, yüksek yük altında ince ayar gerekebilir.

Loglama Ayarları

Suricata, olayları çeşitli formatlarda loglayabilir. eve.json formatı, SIEM (Security Information and Event Management) sistemleriyle entegrasyon için en esnek ve önerilen formattır.

outputs:
  - eve-log:
      enabled: yes
      filetype: regular # 'regular' veya 'syslog'
      filename: eve.json
      # For IPS, you might want to log 'drop' events explicitly
      types:
        - alert
        - drop # Drop olaylarını da loglamak için
        - http
        - dns
        - tls
        # ... diğer log türleri

drop olaylarını eve.json çıktısında görmek, IPS’inizin ne zaman ve neden paketleri engellediğini anlamak için hayati öneme sahiptir.

Yapılandırma dosyasını kaydettikten sonra, Suricata’yı çalıştırmaya ve test etmeye hazırız.

Suricata’yı Çalıştırma ve Test Etme

Suricata’yı IPS modunda yapılandırdıktan sonra, her şeyin doğru çalıştığından emin olmak için test etmemiz gerekir.

Yapılandırma Dosyasını Kontrol Etme

Suricata’yı çalıştırmadan önce, yapılandırma dosyanızın sözdizimsel olarak doğru olduğundan emin olun.

sudo suricata -T -c /etc/suricata/suricata.yaml -v

* -T: Yapılandırma dosyasını test eder ve Suricata’nın başlayıp başlayamayacağını kontrol eder.
* -c /etc/suricata/suricata.yaml: Kullanılacak yapılandırma dosyasını belirtir.
* -v: Daha detaylı çıktı sağlar.

Herhangi bir hata mesajı alırsanız, suricata.yaml dosyasındaki ilgili bölümü düzeltmeniz gerekir. “Configuration provided was successfully loaded” gibi bir mesaj görmeniz beklenir.

Servis Olarak Çalıştırma

Suricata’yı bir sistem servisi olarak çalıştırmak, onun arka planda sürekli olarak çalışmasını ve sistem başlangıcında otomatik olarak başlamasını sağlar. Kaynaktan kurulum yaptıysanız, bir systemd birimi oluşturmanız gerekir.

1. Systemd Birimi Oluşturma:
Aşağıdaki içeriğe sahip bir /etc/systemd/system/suricata.service dosyası oluşturun:

[Unit]
    Description=Suricata IDS/IPS
    After=syslog.target network.target

    [Service]
    Type=simple
    ExecStart=/usr/local/bin/suricata -c /etc/suricata/suricata.yaml --nfqueue-instance-range 0:0 --nfqueue-congestion-threshold 50000 --pidfile /var/run/suricata.pid
    ExecReload=/bin/kill -HUP $MAINPID
    PIDFile=/var/run/suricata.pid
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target

* ExecStart: Suricata’nın nasıl başlatılacağını belirtir. --nfqueue-instance-range 0:0 Suricata’nın 0 numaralı NFQUEUE’yu dinlemesini sağlar. --nfqueue-congestion-threshold ise kuyruk dolduğunda ne kadar paketin bırakılacağını belirler (bu durumda 50000).
* PIDFile: Suricata’nın PID’sini yazdığı dosya.

2. Systemd Yapılandırmasını Yeniden Yükleme:

sudo systemctl daemon-reload

3. Suricata Servisini Etkinleştirme ve Başlatma:

sudo systemctl enable suricata
    sudo systemctl start suricata

4. Servis Durumunu Kontrol Etme:

sudo systemctl status suricata

Active: active (running) ve herhangi bir hata mesajı görmediğinizden emin olun.

IPS Modunu Test Etme

Suricata’nın gerçekten IPS modunda çalışıp paketleri düşürüp düşürmediğini test etmek kritik öneme sahiptir.

1. Basit Bir Drop Kuralı Oluşturma:
/etc/suricata/rules/local.rules dosyasına basit bir test kuralı ekleyin. Bu kural, belirli bir desen içeren HTTP isteklerini düşürecektir.

sudo vi /etc/suricata/rules/local.rules

Aşağıdaki kuralı ekleyin:

drop http any any -> any any (msg:"TEST: HTTP GET /drop_me - Suricata IPS Drop Test"; flow:to_server,established; content:"GET /drop_me"; http_uri; nocase; sid:2000002; rev:1;)

Bu kural, HTTP GET isteğinde /drop_me URI’sini içeren herhangi bir trafiği düşürecektir.

2. Suricata’yı Yeniden Başlatma:
Yeni kuralın etkili olması için Suricata servisini yeniden başlatın.

sudo systemctl restart suricata

3. Drop Kuralını Tetikleme:
Ağınızdaki başka bir makineden veya aynı makineden (eğer INPUT/OUTPUT zincirlerini koruyorsanız) Suricata’nın çalıştığı sunucuya veya Suricata’nın koruduğu bir ağdaki bir hedefe aşağıdaki curl komutunu gönderin:

curl http://example.com/drop_me

Not: example.com yerine, Suricata’nın izlediği ve kuralın tetikleneceği bir web sunucusunun IP adresini veya alan adını kullanın.

Eğer Suricata IPS modu doğru yapılandırılmışsa, bu curl isteği başarısız olmalı veya bir zaman aşımı hatası almalıdır, çünkü Suricata paketi düşürecektir.

4. Logları Kontrol Etme:
Suricata loglarını kontrol ederek drop olayının kaydedilip kaydedilmediğini doğrulayın.

sudo tail -f /var/log/suricata/eve.json

Veya fast.log için:

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

eve.json çıktısında, event_type: "drop" ve alert mesajında “HTTP GET /drop_me – Suricata IPS Drop Test” ifadesini arayın. Bu, Suricata’nın paketi başarıyla engellediğini gösterir.

Örnek eve.json çıktısı (ilgili kısımlar):

{
      "timestamp": "2023-10-27T10:30:00.123456+0000",
      "flow_id": 123456789,
      "event_type": "alert",
      "src_ip": "192.168.1.100",
      "dest_ip": "192.168.1.1",
      "proto": "TCP",
      "src_port": 50000,
      "dest_port": 80,
      "tx_id": 0,
      "alert": {
        "action": "dropped",  # BURASI ÖNEMLİ! Paketin düşürüldüğünü gösterir.
        "gid": 1,
        "signature_id": 2000002,
        "rev": 1,
        "signature": "TEST: HTTP GET /drop_me - Suricata IPS Drop Test",
        "category": "Potentially Bad Traffic",
        "severity": 1
      },
      "app_proto": "http",
      "http": {
        "hostname": "example.com",
        "url": "/drop_me",
        "http_user_agent": "curl/7.61.1",
        "http_method": "GET",
        "http_content_type": "text/html",
        "http_response_code": 0,
        "length": 0
      }
    }

"action": "dropped" satırı, Suricata’nın paketi başarıyla engellediğini açıkça gösterir.

Bu testler, Suricata’nın IPS modunda doğru bir şekilde çalıştığını doğrular. Artık ağınız, Suricata’nın kural setleri tarafından algılanan ve engellenen tehditlere karşı korunmaktadır.

Yönetim ve Bakım

Suricata IPS sisteminin etkinliğini sürdürmek için düzenli yönetim ve bakım faaliyetleri şarttır.

Kural Güncellemeleri

Siber tehdit ortamı sürekli geliştiği için Suricata kural setlerini güncel tutmak hayati önem taşır.

* Otomatik Güncelleme: suricata-update komutunu kullanarak kural güncellemelerini otomatikleştirmek için bir cron işi ayarlayın. Örneğin, kuralları her gün gece 03:00’te güncellemek için:

sudo crontab -e

Aşağıdaki satırı ekleyin:

0 3   * /usr/bin/suricata-update && systemctl restart suricata

Bu komut, kuralları güncelledikten sonra Suricata servisini yeniden başlatarak yeni kuralların yüklenmesini sağlar. suricata-update‘in tam yolunu (which suricata-update ile bulabilirsiniz) kullandığınızdan emin olun.

Log Yönetimi

Suricata, çok miktarda log üretebilir. Bu logları etkin bir şekilde yönetmek, disk alanının dolmasını önler ve güvenlik olaylarının analizini kolaylaştırır.

* Logrotate: logrotate‘i kullanarak Suricata log dosyalarını periyodik olarak arşivleyin, sıkıştırın ve temizleyin. Varsayılan olarak, Suricata’nın kurulumu genellikle /etc/logrotate.d/suricata altında bir yapılandırma dosyası sağlar. Bu dosyayı ihtiyaçlarınıza göre ayarlayabilirsiniz.
* SIEM Entegrasyonu: eve.json formatındaki logları bir SIEM (Security Information and Event Management) sistemine (Splunk, ELK Stack, Graylog gibi) göndermek, güvenlik olaylarını merkezi olarak toplamanıza, analiz etmenize ve korelasyon kurmanıza olanak tanır. filebeat gibi araçlar, Suricata loglarını SIEM’e iletmek için kullanılabilir.

Performans İzleme

Suricata’nın ağ üzerindeki performansı kritik öneme sahiptir. Yüksek CPU veya bellek kullanımı, paket düşmelerine veya ağ tıkanıklığına yol açabilir.

* Sistem Kaynakları: top, htop, free -h gibi komutlarla CPU, bellek ve disk kullanımını düzenli olarak izleyin.
* Suricata İstatistikleri: Suricata’nın kendi istatistiklerini izlemek için suricatasc veya suricata -s komutlarını kullanabilirsiniz. Bu, düşürülen paketler, işlenen paketler ve kural isabetleri hakkında değerli bilgiler sağlar.
* Ağ İzleme: Ağ arayüzünüzdeki paket düşmelerini ifconfig veya ip -s link show ile kontrol edin.

Suricata Ayarlarını Optimize Etme

Suricata’nın performansını ve etkinliğini artırmak için suricata.yaml dosyasındaki bazı ayarlar üzerinde ince ayar yapabilirsiniz:

* runmode ve worker-balancer: Yüksek trafikli ortamlarda, autofp veya workers modları ve çekirdek sayınıza uygun worker-threads ayarları performansı artırabilir.
* stream ve host Ayarları: TCP akış yeniden birleştirme ve ana bilgisayar takibi için bellek ve zaman aşımı değerlerini optimize edin.
* Donanım Hızlandırma: Çok yüksek trafikli ortamlar için, PF_RING veya XDP gibi özel donanım veya çekirdek tabanlı hızlandırma yöntemlerini araştırabilirsiniz. Ancak bu ileri düzey bir yapılandırmadır ve ek çekirdek modülleri veya donanım gerektirebilir.

Sık Karşılaşılan Sorunlar ve Çözümleri

Suricata IPS’yi yapılandırırken veya çalıştırırken bazı yaygın sorunlarla karşılaşabilirsiniz. İşte bunlardan bazıları ve olası çözümleri:

Paket Düşme Sorunları (IPS Modunda Beklendiği Gibi Çalışmama)

* Sorun: Kurallar tetikleniyor ancak paketler düşürülmüyor veya trafik hala geçiyor.
* Çözüm:
* suricata.yaml dosyasında nfqueue bölümündeki mode: drop ayarını kontrol edin. accept değil, drop olmalıdır.
* iptables kurallarınızın doğru olduğundan ve trafiği Suricata’nın dinlediği NFQUEUE’ya yönlendirdiğinden emin olun (--queue-num değerleri eşleşmeli).
* Suricata servisini yeniden başlattıktan sonra iptables -L -v -n komutuyla kuralların aktif olduğunu doğrulayın.
* sudo systemctl status suricata komutuyla Suricata servisinin hatasız çalıştığını kontrol edin.
* Logları (/var/log/suricata/eve.json) kontrol ederek action: "dropped" girdilerinin görünüp görünmediğine bakın. Eğer sadece action: "alert" görüyorsanız, Suricata paketi düşürmüyor demektir.

Performans Sorunları (Yüksek CPU/Bellek Kullanımı, Ağ Gecikmesi)

* Sorun: Suricata çalıştığında sistem yavaşlıyor, ağ gecikmesi yaşanıyor veya paketler düşüyor (Suricata tarafından değil, ağ arayüzü tarafından).
* Çözüm:
* Kural Sayısı: Çok fazla aktif kural, CPU yükünü artırır. Gereksiz veya eski kuralları devre dışı bırakın veya daha küçük, hedefe yönelik kural setleri kullanın.
* runmode ve worker-balancer: Çok çekirdekli sistemlerde suricata.yaml dosyasındaki runmode‘u autofp veya workers olarak ayarlayın ve worker-threads sayısını CPU çekirdeklerinize göre optimize edin.
* Donanım Kaynakları: Suricata için yeterli CPU, RAM ve hızlı disk (loglama için) ayırdığınızdan emin olun. Özellikle yüksek trafikli ortamlarda daha güçlü donanım gerekebilir.
* nfqueue-congestion-threshold: Bu değeri Suricata’nın systemd birimindeki ExecStart satırında ayarlayarak, NFQUEUE’nun paketleri doğrudan düşürmeden önce ne kadar bekleyeceğini ayarlayabilirsiniz. Aşırı yüksek değerler bellek tüketimini artırabilir, çok düşük değerler ise meşgul Suricata’nın paketleri erken düşürmesine neden olabilir.

Kural Güncelleme Sorunları

* Sorun: suricata-update kuralları indiremiyor veya güncelleyemiyor.
* Çözüm:
* İnternet Erişimi: Suricata sunucusunun internet erişimi olduğundan emin olun.
* DNS Çözümlemesi: DNS çözümlemesinin doğru çalıştığını kontrol edin.
* Proxy Ayarları: Eğer bir proxy sunucusu kullanıyorsanız, suricata-update için proxy ayarlarını doğru yapılandırdığınızdan emin olun (genellikle http_proxy ve https_proxy ortam değişkenleri).
* Kural Kaynakları: suricata-update yapılandırmasında (/etc/suricata/update.yaml) belirtilen kural kaynaklarının (örneğin ET Open) erişilebilir ve doğru olduğundan emin olun.

Yanlış Pozitifler (False Positives)

* Sorun: Suricata, normal ve zararsız trafiği kötü niyetli olarak algılıyor ve engelliyor.
* Çözüm:
* Kural Daraltma: Yanlış pozitiflere neden olan belirli kuralı tespit edin. Bu kuralı daha spesifik hale getirmek için HOME_NET, EXTERNAL_NET, portlar veya protokoller gibi parametreleri daraltın.
* Kuralı Devre Dışı Bırakma: Eğer bir kural sürekli olarak yanlış pozitiflere neden oluyorsa ve ağınız için kritik değilse, suricata.yaml dosyasındaki rule-files listesinden kaldırarak veya local.rules dosyasında noalert veya drop yerine pass kullanarak devre dışı bırakabilirsiniz.
* Beyaz Liste (Whitelist) Oluşturma: Belirli IP adreslerinden veya ağlardan gelen trafiği incelemenin dışında tutmak için pass kuralları kullanın. pass kuralları, alert veya drop kurallarından önce işlenir.
* Örnek local.rules whitelist kuralı:

pass ip [192.168.1.10] any -> any any (msg:"WHITELIST: Allow traffic from trusted host"; sid:2000004; rev:1;)

Bu kural, 192.168.1.10 IP adresinden gelen tüm trafiği Suricata’nın diğer kurallarını atlayarak geçirmesini sağlar.

Bu sorun giderme ipuçları, Suricata IPS sisteminizin sorunsuz ve etkili bir şekilde çalışmasına yardımcı olacaktır. Herhangi bir değişiklik yaptıktan sonra Suricata servisini yeniden başlatmayı ve logları kontrol etmeyi unutmayın.

Sonuç

Bu kapsamlı teknik makalede, Rocky Linux 8 üzerinde Suricata’yı güçlü bir Saldırı Önleme Sistemi (IPS) olarak nasıl yapılandıracağımızı adım adım inceledik. Suricata’nın kurulumundan, IPS modunu etkinleştirmek için Netfilter Queue (NFQUEUE) entegrasyonuna, suricata.yaml dosyasının kritik ayarlarından, kural yönetimine ve sistemin işlevselliğini doğrulamak için yapılan testlere kadar tüm süreci detaylandırdık.

Suricata’yı bir IPS olarak kullanmak, ağ güvenliğinizi pasif izlemeden aktif tehdit engellemeye taşıyarak, ağınıza yönelik kötü niyetli saldırılara karşı proaktif bir savunma katmanı sağlar. Rocky Linux 8’in kararlılığı ve Suricata’nın esnekliği bir araya geldiğinde, küçük ofislerden büyük kurumsal ağlara kadar geniş bir yelpazedeki ortamlar için sağlam ve güvenilir bir güvenlik çözümü sunar.

Unutmayın ki ağ güvenliği sürekli bir süreçtir. Kuralları düzenli olarak güncellemek, sistem loglarını izlemek, performans metriklerini takip etmek ve ortaya çıkan tehditlere karşı yapılandırmanızı optimize etmek, Suricata IPS’inizin etkinliğini uzun vadede sürdürmek için hayati öneme sahiptir. Yanlış pozitifleri ele almak ve ağınızın benzersiz ihtiyaçlarına göre Suricata’yı ince ayarlamak, sisteminizin hem güvenli hem de işlevsel kalmasını sağlayacaktır.

Bu kılavuz, Suricata IPS’inizi Rocky Linux 8 üzerinde başarıyla kurmanız ve yönetmeniz için size gerekli bilgi ve araçları sağlamıştır. Bu güçlü araçla, ağınızı siber tehditlerin sürekli değişen ortamına karşı daha güvenli hale getirme yolunda önemli bir adım atmış olursunuz. İleri adımlar olarak, daha karmaşık kural setleri oluşturmayı, SIEM sistemleriyle entegrasyonu derinleştirmeyi ve yüksek erişilebilirlik (HA) çözümlerini araştırmayı düşünebilirsiniz.

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

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.