loader image

Ubuntu Üzerinde Suricata Kurulumu ve Uygulamalı Atak Testi

Herkese merhaba, bu makalemde uygulamalı atak testleri ile Suricata’yı tanıyacağız. Suricata’yı aşağıdaki başlıklar ile inceleyeceğiz:

  • Suricata Nedir ve Nasıl Kurulur ?
  • Suricata’da Kural Yazma
  • Uygulamalı Saldırı Testi
  • Suricata vs Snort

Suricata, ağ trafiğini izlemek ve analiz etmek için geliştirilmiş güçlü bir IDS/IPS sistemidir. Açık kaynaklı olması ve yüksek performanslı yapısıyla öne çıkar. Kar amacı gütmeyen bir kuruluş olan Açık Bilgi Güvenliği Vakfı’na (OISF) aittir.

Bu güçlü sistemin özelliklerine birlikte bakalım:

  • Açık Kaynaklı Olması: Bu, geliştiricilerin ve kullanıcıların yazılımın koduna erişim sağlayarak katkıda bulunabilmesini ve özelleştirmeler yapabilmesini olanak tanır.
  • Yüksek Performans: Çok çekirdekli işlemcilerle uyumlu çalışarak yüksek performans sağlar. Bu sayede yoğun ağ trafiğini hızlı ve etkili bir şekilde analiz eder.
  • Gerçek Zamanlı İzleme: Ağ trafiğini gerçek zamanlı olarak izler. Bu özellik, anormal aktivitelerin tespit edilmesini ve olası saldırılara karşı anında tepki verilmesini sağlar.
  • Anomali ve İmza Tabanlı Tespit: Hem imza tabanlı hem de anomali tespit yöntemlerini kullanır. İmza tabanlı tespit, bilinen tehditleri tanımlar ve durdurur. Anomali tespiti ise alışılmadık davranışları algılayarak yeni ve bilinmeyen tehditlere karşı koruma sağlar.
  • Kullanıcı Dostu Arayüz: Kullanıcıların yazılımı kolayca yönetebilmesini ve yapılandırabilmesini sağlar.
  • Esnek Yapılandırma: Farklı güvenlik ihtiyaçlarına uygun çözümler geliştirilmesine olanak tanır ve yazılımın çeşitli ortamlarda kullanılmasını sağlar.
  • Güçlü Savunma Hattı: Detaylı trafik analizi, kapsamlı protokol desteği, gelişmiş imza ve anomali tespiti, kural bazlı önleme, gerçek zamanlı uyarılar, yüksek performans ve ölçeklenebilirlik ile izleme ve raporlama özellikleri sayesinde güçlü bir savunma hattı sağlar.

Ubuntu 22.04.4 cihazıma Suricata’yı kurarak başlayalım..

Suricata’nın en güncel sürümü olan 7.0.6 ile kurulum yapacağım.

$sudo apt update
$sudo apt-get install libpcre3-dbg libpcre3-dev autoconf automake libtool libpcap-dev libnet1-dev libyaml-dev libjansson4 libcap-ng-dev libmagic-dev libjansson-dev zlib1g-dev pkg-config rustc cargo -y

Gerekli paketleri indirdikten sonra, Suricata’nın en son sürümünü resmi web sitesinden indiriyoruz:

$tar -xvzf suricata-7.0.6.tar.gz

$cd suricata-7.0.6
$./configure — prefix=/usr — sysconfdir=/etc — localstatedir=/var

Suricata’yı IDS ve IPS olarak iki modda çalıştırmamız mümkün.

Eğer IDS modunda çalıştırmak istiyorsanız herhangi bir şey yapmamız gerekmiyor. Fakat IPS modunda çalıştırmak isterseniz, güvenlik duvarı kurallarını eklememiz gerekiyor.

$sudo apt install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev

$./configure — enable-nfqueue — prefix=/usr — sysconfdir=/etc — localstatedir=/var

$make
$make install
$make install-conf

Sıra, Suricata’nın Ubuntu paketlerini güncellemeye geldi ve böylelikle kurulumu tamamlamış oluyoruz.

$sudo add-apt-repository ppa:oisf/suricata-stable

$sudo apt update

$sudo apt install suricata

Kurulum işleminin sorunsuz bir şekilde tamamlandığından emin olmak için aşağıdaki komutu kullanıyoruz.

service suricata status

Sorunsuz bir şekilde Suricata’yı Ubuntu makinemize kurduk.

Suricata Kural Yazma

Suricata, diğer akrabaları (Snort, Bro IDS, Sagan vb.) gibi kurallarla çalışır. Kendi içerisinde bulunan kuralları kullanabiliriz ya da kendimiz kural yapımızı oluşturabiliriz. Bunun için:

$sudo nano /etc/suricata/suricata.yaml komutunu kullanıyoruz

Bu noktada dikkat etmemiz gereken yerler var.

İlk olarak ifconfig komutuyla IP adresimizi ve ağ adımızı öğreneceğiz. IP adresim 192.168.1.8 ve ağ adım ise ens33. Sizde farklılık gösterebilir.

Şimdi gerekli düzenlemeleri yapıyoruz. Default değerleri değiştiriyoruz.

HOME_NET (0/24, 0–255 arasını kapsamaktadır.) ve EXTERNAL_NET kısmını ağımıza göre düzenliyoruz.

  • pcap: -arayüz: eth0 ->pcap: -arayüz: ens33
  • pfring: -arayüz: eth0 ->pfring: -arayüz: ens33
  • af-paket: -arayüz: eth0 -> af-paket: -arayüz: ens33

Daha sonra, konfigürasyon dosyasında oluşturacağımız kural dosyasının yolunu ve adını tanıtıyoruz. Aynı zamanda kullanmadığımız kural dosyasını yorum satırı haline getiriyoruz.

(suricata.rules) -> test.rules

Ben test.rules olarak değiştirdim. Sizler başka bir ad kullabilirsiniz.

Bu düzenlemeler bittikten sonra kaydedip, nano konfigürasyon dosyasından çıkıyoruz.

Sıra geldi kural dosyamızı oluşturmaya..

$ mkdir /var/lib/suricata/rules
$ nano /var/lib/suricata/rules/test.rules

 

Yukarıdaki komutlarla kural dosyamızı oluşturuyoruz. Ben root olduğum için komutların başına sudo ibaresini koymadım.

Nano ekranı geldiğinde kural içeriklerini gireceğiz. Fakat öncesinde Suricata kural yapısına bakalım…

Snort makalemden aşina olacağız gibi, her iki IDS/IPS sistemi de benzer bir iskeleti kullanmaktadır diyebiliriz. Uygulamalı saldırı testinde kullanacağımız kuralları yazabiliriz. İlk olarak:

  • Ağ üzerindeki bir ICMP Echo Request (ping) aktivitesinin tespiti

alert icmp any any -> $HOME_NET any (msg:”ICMP Paketi Tespit Edildi”; sid:1000002 rev:1😉

Herhangi bir kaynak adresi ve port üzerinden gelen icmp paketleri $HOME_NET ile tanımladığımız herhangi bir porta iletişim kurarsa ICMP Paketi Tespit Edildi uyarası anlamına gelir.

  • Dos/DDos saldırı tespiti

alert tcp any any -> $HOME_NET 80 (threshold: type threshold, track by_dst, count 20, seconds 60; msg: “Dos Uyarısi”; sid: 1000003; rev: 1;)

Apache2 Server’ım 80 Portunda aktif olduğu için $HOME_NET 80 olarak düzenledim

Kural dosyamızı da düzenlediğimize göre Suricata çalıştırmaya hazır.

Çalıştırırken ağ arayüzünüze dikkat edin.

Burada dikkat edeceğimiz nokta ens33. Benim ağ arayüzüm ens33, sizlerde farklılık gösterebilir. Ağ arayüzümüzü unutmayalım.

Uygulamalı Atak Testimizi Gerçekleştirelim

Snort makalesinde yaptığım saldırı testlerini şimdi de Suricata üzerinde deneyelim. İlk olarak:

1- Kali makinedem Ubuntu makineme PING atıyorum.

Ayrıca fast.log dosyasında logları görmek için aşağıdaki komutu giriyorum.

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

İlk kuralımız başarılı bir şekilde çalıştı.

2- Dos/DDos saldırımızı Kali cihazımızdaki Slowloris aracı ile yapacağız.

Bunun için Ubuntu cihazımızda 80 numaralı portta bir servis çalıştıracağız. Apache2’yi kullanacağız. Daha önceden yüklü olduğu için, doğrudan aktif edeceğim.

service apache2 start

service apache2 status

Aşağıdaki komut ile saldırıyı başlatabiliriz.

python3 slowloris.py (hedef ip) -s 500-

fast.log dosyasında logları görmek için aşağıdaki komutu giriyorum.

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

Yazmış olduğumuz son kural da başarıyla çalıştı ve Suricata’dan hızlı bir tepki aldık.

Makalemin sonuna gelirken Suricata ve Snort’u dikkat çeken kısımlarını karşılaştırarak bitirmek istedim.

1- Performans ve Çoklu İşlem Desteği

  • Suricata:

Çoklu İşlem Desteği: Suricata, çoklu iş parçacığı ve çoklu işlem desteği sunar. Bu, aynı anda birden fazla işlem yapabilmesi anlamına gelir ve bu nedenle yüksek performans sağlar. Modern çok çekirdekli işlemcilerden faydalanarak daha iyi performans gösterir.

Gelişmiş Performans: Paket işleme ve analizinde yüksek performans sunar, özellikle büyük ağ trafiği altında.

  • Snort:

Tek İşlem Desteği: Snort genellikle tek bir iş parçacığı kullanır, bu da performansını sınırlandırabilir. Bununla birlikte, Snort 3.x sürümü ile çoklu iş parçacığı desteği eklenmiştir.

Performans: Snort, büyük trafik yükleri altında performans sorunları yaşayabilir, ancak bu genellikle yapılandırmaya ve donanıma bağlıdır.

2-Kural Dili ve Güncellemeler

  • Suricata:

Kural Dili: Suricata, hem Snort kurallarını hem de kendi özel kural setlerini destekler. Kendi kural dilini Snort kural diline benzer şekilde tasarlamıştır ancak bazı ek özellikler sunar.

Güncellemeler: Kendi geliştirici topluluğuna sahiptir ve güncellemeler genellikle hızlı bir şekilde yapılır.

  • Snort:

Kural Dili: Snort, geniş bir kullanıcı ve topluluk desteğine sahip olup, kural dilini standart olarak kullanır. Snort kuralları, ağ trafiğini incelemek için detaylı ve özelleştirilebilir kurallar sunar.

Güncellemeler: Snort kuralları, Snort.org tarafından sağlanır ve genellikle günlük olarak güncellenir.

3- Gelişmiş Özellikler ve Modülerlik

  • Suricata:

Gelişmiş Özellikler: Suricata, daha gelişmiş özellikler sunar. Örneğin, çoklu protokol desteği (HTTP, FTP, DNS, vb.), dosya çıkarımı ve SSL/TLS trafiğini çözme gibi özellikler içerir.

Modülerlik: Suricata, eklentiler ve modüller için destek sunar, bu da onun özelleştirilebilirliğini artırır.

  • Snort:

Gelişmiş Özellikler: Snort, benzer şekilde protokol analizi ve dosya çıkarımı gibi özellikler sunar, ancak bu özelliklerin bazıları Snort 3.x ile geliştirilmiştir.

Modülerlik: Snort’un modülerliği daha sınırlıdır ancak topluluk desteği ile bazı ek özellikler ve modüller eklenebilir.

4- Ağ Trafiği Analizi ve Kullanıcı Arayüzleri

  • Suricata:

Ağ Trafiği Analizi: Suricata, ağ trafiğini derinlemesine analiz edebilir ve bu süreçte daha fazla protokol ve veri türünü destekler.

Kullanıcı Arayüzleri: Suricata, EVE JSON formatında loglama yapar, bu da onu çeşitli üçüncü taraf analiz araçları ile uyumlu hale getirir.

  • Snort:

Ağ Trafiği Analizi: Snort, ağ trafiğini analiz eder ancak bazı daha karmaşık protokoller için sınırlı destek sunabilir.

Kullanıcı Arayüzleri: Snort’un logları genellikle kendi formatındadır ve bu nedenle bazı ek dönüştürücü araçlar gerekebilir.

5. Topluluk ve Destek

  • Suricata:

Topluluk: Suricata, OISF (Open Information Security Foundation) -Açık Bilgi Güvenliği Vakfı tarafından geliştirilir ve geniş bir topluluk desteğine sahiptir.

Destek: Kurumsal destek ve hizmetler sunan çeşitli sağlayıcılar tarafından desteklenir.

  • Snort:

Topluluk: Snort, Cisco’nun bir parçası olan bir topluluğa sahiptir ve geniş bir kullanıcı ve destek topluluğu bulunur.

Destek: Cisco tarafından sağlanan resmi destek seçenekleri ile birlikte geniş bir kullanıcı topluluğu desteği mevcuttur.

Özet

  • Suricata: Daha yüksek performans, çoklu iş parçacığı desteği, gelişmiş özellikler, JSON loglama, daha geniş protokol desteği.
  • Snort: Geleneksel IDS, geniş topluluk desteği, güçlü kural setleri, güncellemeler genellikle daha hızlı, bazı gelişmiş özellikler Snort 3.x ile eklenmiştir.

Suricata ve Snort, ağ saldırı tespit ve önleme sistemleri (IDS/IPS) olarak kullanılan popüler araçlardır. Her ikisi de ağ trafiğini izleyebilir, potansiyel tehditleri tespit edebilir ve bunlara tepki verebilir, ancak yukarıda bahsettiğim bazı önemli farklılıklar ve özellikler içerirler.

Her iki araç da etkili olabilir, ancak ihtiyaçlarınıza ve sistem yapılandırmanıza bağlı olarak birini diğerine tercih edebilirsiniz.

Benim için keyifli bir çalışma oldu; umarım sizler de okurken keyif alırsınız. 🙂

Şapkan beyazsa kırmızıdan daha önde olmalısın…