Sunucu İzleme Sistemlerinde IDS/IPS Kurulumu (Snort + Suricata)
Sunucu İzleme Sistemlerinde IDS/IPS Kurulumu (Snort + Suricata)
IDS (Intrusion Detection System) ve IPS (Intrusion Prevention System) çözümleri, ağ ve sunucu güvenliğinin vazgeçilmez parçalarıdır. Bu rehberde hem Snort (klasik, yaygın kullanılan kurallı IDS/IPS) hem de Suricata (çok iş parçacıklı, modern alternatifi) kullanımını; kurulum, temel yapılandırma, kuralların yönetimi, performans optimizasyonu ve SIEM entegrasyonunu adım adım ele alacağız.
- 1) IDS vs IPS: Hızlı Özet
- 2) Hangi Aracı Ne Zaman Seçmeli?
- 3) Örnek Kurulum (Ubuntu / Debian)
- 4) Temel Mimari – Trafik Toplama Yöntemleri
- 5) Suricata Temel Konfigürasyonu (af-packet örneği)
- 6) Snort Temel Konfigürasyonu (inline / NFQUEUE)
- 7) Kurallar (Rules) Yönetimi
- 8) Kural Örneği ve Throttling
- 9) Loglama ve SIEM Entegrasyonu
- 10) Performans ve Ölçeklendirme İpuçları
- 11) False Positive Yönetimi
- 12) Test ve Doğrulama
- 13) IPS Moduna Geçiş Stratejisi
- 14) Merkezi Yönetim ve Otomasyon
- 15) En İyi Uygulamalar (Checklist)
- Sonuç
1) IDS vs IPS: Hızlı Özet
- IDS (Detection): Trafiği pasif olarak izler ve uyarı üretir (alert). Genellikle SPAN/mirror port üzerinden çalışır.
- IPS (Prevention): Trafiği aktif olarak engeller (inline). NFQUEUE, inline bridging veya yönlendirme ile paketleri düşürebilir.
- Kurulum seçiminiz mimariye bağlı: test/analiz için IDS, bloklama/koruma için IPS.
2) Hangi Aracı Ne Zaman Seçmeli?
- Snort: Olgun ve geniş kural ekosistemi (Snort VRT). Snort 2.x tek iş parçacıklıdır; Snort 3 çok çekirdek kullanımını geliştirir.
- Suricata: Yerleşik çoklu iş parçacığı (multi-thread), EVE JSON çıktısı, yüksek verim ve modern protokol analizleri (HTTP, TLS, SMB vb.). Yüksek trafik ortamlarında tercih edilir.
3) Örnek Kurulum (Ubuntu / Debian)
Örnek olarak Suricata ve Snort kurulum komutları (temel):
# Suricata (Debian/Ubuntu) sudo apt update sudo apt install suricata # Snort (Debian/Ubuntu) - paketler veya kaynak derleme ile sudo apt install snort # veya Snort 3 için resmi kurulum yönergelerini izleyin
CentOS/RHEL tabanlı sistemlerde EPEL veya resmi repo kullanılmalıdır.
4) Temel Mimari – Trafik Toplama Yöntemleri
- SPAN / Mirror Port: Switch üzerinden trafiğin bir kopyasını gönder. IDS için klasik yöntem.
- Tap: Pasif ve güvenilir; üretim ağında önerilir.
- Inline (IPS): Trafik sensöre yönlendirilir (bridge, inline interface veya netfilter NFQUEUE).
- Network Packet Capture Acceleration: PF_RING, DPDK, AF_PACKET kullanımı performansı artırır.
5) Suricata Temel Konfigürasyonu (af-packet örneği)
/etc/suricata/suricata.yaml içinde af-packet kullanımı (yüksek performans için):
af-packet:
- interface: eth1
threads: auto
cluster-id: 99
cluster-type: cluster_flow
defrag: yes
Log çıktısı için EVE JSON etkinleştirin:
outputs:
- eve-log:
enabled: yes
filetype: regular
filename: /var/log/suricata/eve.json
types: [ alert, http, dns, tls ]
6) Snort Temel Konfigürasyonu (inline / NFQUEUE)
Snort’u NFQUEUE ile IPS modunda çalıştırmak için örnek netfilter kuralı ve snort komutu:
# iptables ile NFQUEUE'ya yönlendir iptables -I FORWARD -j NFQUEUE --queue-num 0 # Snort'u NFQUEUE ile başlat (snort2x örnek) snort -Q --daq nfq --daq-var queue=0 -c /etc/snort/snort.conf
Snort 3 ve farklı DAQ modüllerine göre komut ve yapılandırma değişir.
7) Kurallar (Rules) Yönetimi
- Güncel kaynaklar: Snort VRT (ticarî/registered), Emerging Threats (ET) Regelnarı, Suricata-Update ile kural çekme.
- Suricata-update: kural yönetimi ve otomatik güncelleme için kullanılır (ET ve OISF kuralları).
- Rule tuning: false positive azaltmak için kategori bazlı kapatma, thresholding ve suppress listeleri (sid) kullanın.
8) Kural Örneği ve Throttling
# Snort/Suricata alert örneği (kural) alert tcp any any -> $HOME_NET 22 (msg:"SSH brute force attempt"; detection_filter: track by_src, count 5, seconds 60; sid:1000001; rev:1;)
Burada detection_filter ile aynı kaynaktan 60 saniye içinde 5 deneme tespit edilirse alarm üretilir — yanlış pozitifleri azaltmaya yardımcı olur.
9) Loglama ve SIEM Entegrasyonu
- EVE JSON (Suricata): Elastic Stack (Filebeat → Elasticsearch → Kibana) veya Wazuh/Graylog ile doğrudan entegrasyon için ideal.
- Barnyard2 / Unified2 (Snort 2.x): Snort’un binary loglarını işleyip veritabanına (MySQL/Postgres) aktarır; sonra SIEM’e gönderilir.
- Security Onion, Wazuh veya ELK gibi paketler tam bir görselleştirme & korelasyon sağlar.
10) Performans ve Ölçeklendirme İpuçları
- Donanım: Ayrı sensör makineleri, yeterli CPU çekirdeği, yüksek hızda NIC (10Gb+) ve hızlı I/O önemlidir.
- PF_RING / DPDK: Yüksek paket hızlarında kayıp olmaması için hızlandırma çözümleri düşünün.
- Suricata multi-threading: Konfigürasyonda threads: auto ile iş parçacığı sayısını ayarlayın.
- Rule selection: Tüm rule seti aktif etmeyin; yalnızca gerekli kategorileri etkinleştirerek CPU yükünü azaltın.
11) False Positive Yönetimi
- Önce IDS (detect-only) ile 1–2 hafta gözlemleyin.
- Frequent false positive üreten SID’leri suppress (ignore) edin.
- Thresholding ve flow-based detection kullanın.
- Uygulamaya özgü whitelisting (ör. internal scanner IP’leri) ekleyin.
12) Test ve Doğrulama
- Test araçları: nmap –script, metasploit, scapy, sinFP test payloads.
- Suricata test: sudo suricata -c /etc/suricata/suricata.yaml -i eth1 –pcap=file.pcap
- Snort test: snort -c /etc/snort/snort.conf -A console -i eth1
13) IPS Moduna Geçiş Stratejisi
- IDS modunda (passive) bir süre çalıştırın ve alarm/tetikleme profilini analiz edin.
- False positive’leri temizleyin, suppress listeleri oluşturun.
- Kademeli olarak NFQUEUE veya inline moda geçip belirli trafik türlerini engelleyin.
- Kesinlikle üretimde ilk etapta full-block yerine rate-limit / drop-with-logging stratejisi uygulayın.
14) Merkezi Yönetim ve Otomasyon
- Suricata-update, Oinkmaster, PulledPork gibi araçlarla kuralları otomatik güncelleyin.
- Konfigürasyonları versiyonlayın (git) ve dağıtımı Ansible/Terraform ile otomatikleştirin.
- Alert playbook’ları oluşturun: ör. WAF kuralı ekle, IP adresi firewall’da bloklanacaksa otomatik ticket oluşturulması.
15) En İyi Uygulamalar (Checklist)
[ ] Sensörler için ayrı VLAN / izleme ağı kullanın [ ] Trafik toplama için tap veya mirror port tercih edin [ ] Suricata multi-threading ve AF_PACKET/DPDK kullanın [ ] Kural setlerini kategorize edip yalnızca gerekli olanları aktif edin [ ] EVE JSON → Filebeat → ELK / Wazuh entegrasyonu kurun [ ] IDS'te 2 hafta gözlem, false positive tuning yapın [ ] IPS'e geçmeden önce snapshot/rollback planı oluşturun
Sonuç
Snort ve Suricata, uygun mimari, doğru kural yönetimi ve performans optimizasyonu ile sunucu ve ağ güvenliğini ciddi oranda artırır. Suricata modern, çok çekirdekli altyapılarda yüksek performans sunarken; Snort geniş kural ekosistemi ve olgun bir topluluk avantajı sağlar. SIEM entegrasyonu (ELK/Wazuh/Splunk) ile korelasyon ve uzun dönem analizleri ekleyerek tehdit tespitinizi güçlendirin.