Snort IDS ile Ağ Saldırı Tespiti: Derinlemesine Bir Bakış ve Üretim Senaryoları

 · 

Snort IDS ile Ağ Saldırı Tespiti: Derinlemesine Bir Bakış ve Üretim Senaryoları

Snort IDS ile Ağ Saldırı Tespiti: Derinlemesine Bir Bakış ve Üretim Senaryoları

Snort, ağ trafiğini gerçek zamanlı analiz eden, açık kaynaklı bir saldırı tespit ve önleme sistemidir (IDS/IPS). Paketlerin başlık ve yüklerini inceleyerek bilinen tehdit imzalarını arar, anormallikleri tespit eder ve tanımlı kurallara göre aksiyon alır. Birçok modern siber güvenlik altyapısının temel taşlarından biri olarak, hem küçük ofis ağlarından hem de büyük ölçekli kurumsal altyapılardan gelen trafik akışını sürekli izler. Bu derinlemesine inceleme, Snort'un teknik mimarisini, kural yazımını ve özellikle AWS gibi bulut ortamlarındaki üretim senaryolarında nasıl optimize edileceğini ele alacaktır.

Snort'un Çalışma Prensibi ve Mimarisi

Snort, üç ana modda çalışır: sniffer (paketleri okuyup ekrana basar), packet logger (paketleri diske yazar) ve network intrusion detection system (NIDS). NIDS modunda, ağ arayüzünden geçen her paketi yakalar, ön işlemden geçirir ve kural motorunda tanımlı imzalarla eşleştirmeye çalışır. Bu süreç, ağ katmanından uygulama katmanına kadar farklı protokol seviyelerinde detaylı analiz yeteneği sunar.

Paket Akışı Analizi ve Ön İşleme

Snort'un performansını ve doğruluğunu belirleyen kritik adımlardan biri, yakalanan paketlerin ön işleme tabi tutulmasıdır. Bu aşamada, paketler yeniden birleştirilir, normalleştirilir ve çeşitli protokol analizörlerinden geçirilir. Örneğin, TCP oturumları yeniden birleştirilerek, parçalanmış paketlerin bütünlüğü sağlanır. HTTP, FTP gibi uygulama katmanı protokolleri için özel ön işlemciler, bilinen zafiyet kalıplarını daha etkin bir şekilde tespit etmek için veriyi ayrıştırır.

Snort Kural Yazımı: Detaylı İnceleme

Snort'un gücü, esnek ve kapsamlı kural dilinden gelir. Bir Snort kuralı iki ana bölümden oluşur: kural başlığı (rule header) ve kural seçenekleri (rule options).

Kural Başlığı (Rule Header)

Kural başlığı, kuralın hangi trafik akışını hedeflediğini tanımlar. Yapısı şöyledir: action protocol source_ip source_port -> dest_ip dest_port.

  • action: alert (uyarı), log (kaydet), pass (yoksay), drop (paketi bırak ve uyar), reject (paketi bırak, TCP reset/UDP hata mesajı gönder).
  • protocol: tcp, udp, icmp, ip.
  • source_ip/dest_ip: IP adresi veya ağ bloğu (örneğin, $HOME_NET, any, 192.168.1.0/24).
  • source_port/dest_port: Port numarası (örneğin, 80, 1024: (1024 ve üzeri), :1023 (1023 ve altı)).
  • ->: Yön belirtir. <> iki yönlü anlamına gelir.
alert tcp any any -> $HOME_NET 80 (msg:"Web Sunucusuna HTTP Bağlantısı"; sid:1000001; rev:1;)

Bu kural, herhangi bir kaynaktan $HOME_NET içindeki bir hedefin 80 numaralı portuna gelen TCP bağlantıları için bir uyarı üretir.

Kural Seçenekleri (Rule Options)

Kural seçenekleri, parantez içinde yer alır ve virgülle ayrılmış anahtar/değer çiftlerinden oluşur.

  • msg: Uyarı mesajı.
  • sid: Snort ID, kuralı benzersiz kılar.
  • rev: Revizyon numarası, kuraldaki değişiklikleri takip eder.
  • content: Paket yükünde aranacak ASCII veya ikili desen.
  • pcre: Perl Compatible Regular Expressions kullanarak daha karmaşık desen eşleştirmesi.
  • flow: TCP oturumu durumu (established, to_server, from_client).
  • byte_test: Paketin belirli bir ofsetindeki byte değerini kontrol eder.
  • threshold: Belirli bir zaman aralığında veya sayıda uyarıyı kısıtlar.
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"Shellshock Saldırısı Tespit Edildi"; content:"() { :; }; echo"; nocase; http_header; sid:2000001; rev:1;)

Bu kural, HTTP başlıklarında bilinen bir Shellshock zafiyet imzası arar. http_header ile sadece HTTP başlıkları içinde arama yapılır, nocase büyük/küçük harf duyarsızlığını sağlar.

Üretim Senaryosu: AWS VPC'de Snort IDS Dağıtımı

Bulut tabanlı altyapılarda, özellikle AWS gibi dinamik ortamlarda Snort'u entegre etmek, geleneksel veri merkezi kurulumlarından farklı yaklaşımlar gerektirir. En kritik adımlardan biri, Snort'un analiz edebilmesi için ağ trafiğini yakalamaktır.

AWS VPC Trafik Aynalama (Traffic Mirroring) ile Veri Akışı

AWS VPC Traffic Mirroring özelliği, belirli EC2 instance'larından veya Elastic Network Interface'lerinden (ENI) geçen ağ trafiğinin kopyasını almanızı ve bunu bir analiz hedefine (Mirror Target) yönlendirmenizi sağlar. Bu hedef genellikle bir Elastic Network Interface'e (ENI) sahip bir EC2 instance'ıdır, ki bu instance üzerinde Snort çalışır.

# AWS CLI ile Traffic Mirror Target oluşturma
aws ec2 create-traffic-mirror-target --network-interface-id eni-0123456789abcdef0 --description "Snort Mirror Target"

# AWS CLI ile Traffic Mirror Filter oluşturma (tüm TCP trafiği)
aws ec2 create-traffic-mirror-filter --description "Snort Filter All TCP" \
--ingress-filter-rules '[{"ruleNumber":100, "ruleAction":"accept", "sourcePortRange":{"fromPort":1,"toPort":65535}, "destinationPortRange":{"fromPort":1,"toPort":65535}, "protocol":6, "direction":"ingress"}]'

# AWS CLI ile Traffic Mirror Session oluşturma
aws ec2 create-traffic-mirror-session --network-interface-id eni-0abcdef1234567890 \
--traffic-mirror-target-id tmt-0fedcba9876543210 \
--traffic-mirror-filter-id tmf-0987654321abcdef0 \
--session-number 1 --virtual-network-id 100

Yukarıdaki komutlar, belirlenen bir ENI'den gelen tüm TCP trafiğini, Snort'un yüklü olduğu başka bir ENI'ye (yani tmt-0fedcba9876543210 ile temsil edilen Snort EC2 instance'ına) kopyalamak için temel adımları gösterir. virtual-network-id (VXLAN ID) Snort instance'ı üzerindeki yakalama arayüzünün bu trafiği nasıl ayırt edeceğini belirtir.

Snort ve SIEM Entegrasyonu

Snort tarafından üretilen uyarılar, bir SIEM (Security Information and Event Management) çözümüne (örneğin, Splunk, ELK Stack veya AWS Security Hub ile entegre bir çözüm) gönderilerek merkezi olarak toplanmalı ve analiz edilmelidir. Snort, uyarıları syslog, unified2 formatlarında dışa aktarabilir.

# Snort yapılandırma dosyası (snort.conf) içinde Unified2 çıkışı etkinleştirme
output unified2: filename snort.log, limit 128, track_local

Unified2 formatındaki loglar, Barnyard2 gibi araçlar kullanılarak veritabanına veya doğrudan SIEM ajanlarına iletilebilir. SIEM üzerinde, Snort uyarıları diğer güvenlik loglarıyla korele edilerek daha geniş bir tehdit bağlamı oluşturulur ve potansiyel saldırılar için daha hızlı yanıt verilmesi sağlanır.

Özel Kural Geliştirme ve Tehdit Avcılığı

Üretim ortamlarında Snort'un değerini artıran temel unsurlardan biri, uygulamanıza veya altyapınıza özgü tehditleri hedefleyen özel kurallar geliştirmektir. Örneğin, bilinen bir web uygulaması güvenlik açığı için (SQL injection denemeleri, XSS payload'ları) veya yetkisiz bir API çağrısı deseni için özel content veya pcre kuralları yazılabilir.

alert tcp $EXTERNAL_NET any -> $WEB_SERVERS 80 (msg:"Potansiyel SQL Injection Denemesi"; content:"union select"; nocase; http_uri; sid:3000001; rev:1;)

Bu kural, $WEB_SERVERS değişkeniyle tanımlanmış web sunucularına giden HTTP URI'larında "union select" ifadesini arayarak basit bir SQL injection denemesini tespit eder. Gerçek tehdit avcılığı senaryolarında, bu kurallar sürekli güncellenir ve yanlış pozitifleri en aza indirmek için titizlikle test edilir.

Performans Optimizasyonu ve Zorluklar

Yüksek bant genişliğine sahip ağlarda Snort'u etkin bir şekilde çalıştırmak, ciddi performans optimizasyonu gerektirir. CPU kullanımı, bellek tüketimi ve disk I/O'su, büyük hacimli trafik işlenirken darboğazlara yol açabilir.

  • Kural Kümesi Yönetimi: Gereksiz veya aşırı genel kuralları devre dışı bırakmak, kural eşleştirme motorunun yükünü azaltır. Prioritization ve noalert seçenekleri de kullanılabilir.
  • Donanım Optimizasyonu: Çok çekirdekli CPU'lar, yüksek hızlı RAM ve NVMe depolama birimleri, paket işleme kapasitesini artırır.
  • Afet Toleransı ve Ölçeklenebilirlik: Yüksek erişilebilirlik (HA) mimarileri ve yük dengeleme (load balancing) ile birden fazla Snort sensörünü dağıtmak, tek hata noktalarını ortadan kaldırır ve ölçeklenebilirliği artırır. AWS Auto Scaling grupları bu konuda devreye girebilir.
  • Yanlış Pozitif Yönetimi: Kural yazımındaki hassasiyet ve düzenli ayarlamalar, yanıltıcı alarmların (false positives) azaltılması için elzemdir. Sürekli olarak ağ trafiği desenlerini öğrenmek ve kural setini buna göre adapte etmek gerekir.

Sonuç

Snort, ağ saldırı tespiti ve önlenmesi için güçlü, esnek ve özelleştirilebilir bir platform sunar. Temel kural yazımından AWS VPC trafik aynalama ile entegre üretim senaryolarına kadar geniş bir kullanım alanına sahiptir. Başarılı bir Snort dağıtımı, sadece teknik kurulumu değil, aynı zamanda sürekli kural optimizasyonu, SIEM entegrasyonu ve tehdit istihbaratı ile beslenmesini de gerektirir. Ağınızın görünürlüğünü artırmak ve potansiyel tehditlere karşı proaktif bir savunma mekanizması oluşturmak isteyen kurumlar için Snort, vazgeçilmez bir araç olmaya devam etmektedir.

← Blog Listesine Dön