Neredeyse her Suricata rehberi Elasticsearch, Logstash ve Kibana kurulumuyla biter. Tek bir VPS için bu kötü bir tavsiyedir: bu yığın dört gigabayt bellek ve sürekli ilgi ister, oysa tek istediğiniz IDS’in son bir günde neyi yakaladığını görmekti. Suricata onlarsız gayet iyi çalışır — ama insanların onu kurup bir hafta sonra kaldırmasına yol açan bir özelliği vardır.
Varsayılan ayarlardaki mayın
Kutudan çıktığı haliyle Suricata eve.json dosyasına otuzdan fazla olay türü yazar: yalnızca uyarıları değil, her DNS sorgusunu, her TLS el sıkışmasını, her HTTP işlemini, ARP’yi, DHCP’yi, akış üstüne akışı. Üstüne her sekiz saniyede bir ayrı bir stats.log. Suricata bunu yaparken günlük döndürmesini kurmaz — o, yöneticinin işidir ve hiçbir yerde büyük harflerle yazmaz.
Gerçek bir sunucudan bir rakam: iki günde 15 gigabayt — dokuzu eve.json dosyasında, altıya yakını stats.log dosyasında. Disk dolana kadar yaklaşık beş gün kalmıştı. O sunucuda trafik de fazla değildi; yoğun bir düğümde bu birkaç saatlik iş olurdu.
Kendinizinkini hemen şimdi kontrol edin:
sudo du -sh /var/log/suricata/*
Yalnızca okuduğunuzu saklayın
Ağ adli incelemesi yapmak yerine uyarılara bakıyorsanız, eve-log içinden tam olarak bir olay türü gerekir. /etc/suricata/suricata.yaml dosyasında outputs bloğunu bulun ve eve-log için types altında alert bırakıp geri kalanını yorum satırı yapın. İstatistik çıktısını da aynı yerde kapatın:
- stats:
enabled: no
Düzenlemeden sonra yapılandırma kontrolü zorunludur — servisi yeniden başlatmadan önce:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Sıra önemlidir: kurallar henüz yüklenmemişse test geçmez. Önce suricata-update, sonra yapılandırma kontrolü, sonra başlatma.
Gerçekten çalışan döndürme
/etc/logrotate.d/suricata dosyası:
/var/log/suricata/*.log /var/log/suricata/*.json {
daily
rotate 7
maxsize 200M
missingok
compress
delaycompress
create 0664 suricata suricata
su suricata suricata
postrotate
systemctl kill -s HUP suricata
endscript
}
Buradaki iki satır apaçık değildir ve ikisi de kritiktir.
su suricata suricata — bu olmadan logrotate bütün dosyaları sessizce atlar. /var/log/suricata dizini root’a değil suricata grubuna aittir ve logrotate böyle bir düzeni güvensiz sayar. Ne postada bir hata olur ne de günlükte; disk dolana kadar döndürmenin var olduğundan emin olursunuz sadece. Bunu önceden yakalamanın tek yolu bir kuru çalıştırmadır:
sudo logrotate -d /etc/logrotate.d/suricata
create 0664 suricata suricata — yeni dosyanın izinleri. Varsayılanlarla (0640), günlükleri root olmayan bir kullanıcı olarak okuyan herhangi bir panel ya da betik ilk döndürmeden sonra hiçbir şey göremez.
Günlüklerin dışında neyi ayarlamalı
HOME_NET. Bu, Suricata’nın neyi kendi ağı saydığını tanımlar. Varsayılan değer bütün özel aralıkları sıralar, oysa bir VPS’in genel bir adresi vardır — bu yüzden bazı kurallar tetiklenmez ya da ters yönde tetiklenir. Kendi ağınızı açıkça belirtin.
Kurallar. Emerging Threats Open kümesini suricata-update çeker; onun yeri günde bir kez cron’dur. Tek tek gürültülü imzalar /etc/suricata/disable.conf içinde kimlikle kapatılır — bunu kullanmaktan çekinmeyin: küme kurumsal bir ağ için tasarlanmıştır ve sıradan bir web sunucusunda bir düzine kural durmadan ve boşuna tetiklenir.
Kip. Suricata varsayılan olarak trafiğin bir kopyasını dinler ve yalnızca uyarır (IDS). Tek bir sunucuda engelleme kipi (nfqueue üzerinden IPS) en çok kendinize karşı bir risktir: tek bir yanlış pozitif ve kendinizi dışarıda bulursunuz. İzlemekle başlayın ve neyin yakalandığını görmek için bir ay geçirin.
Kibana olmadan nasıl okunur
Kısa uyarılar /var/log/suricata/fast.log dosyasında durur — olay başına bir satır, gözle okunabilir:
sudo tail -50 /var/log/suricata/fast.log
Ayrıntı eve.json içindedir, satır başına bir JSON nesnesi. Kibana’nın uğruna kurulduğu her şey tek bir komuta iner:
sudo jq -r 'select(.event_type=="alert") | .alert.signature' \
/var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20
Bu, en sık görülen yirmi imzadır. Bir hafta boyunca böyle bir liste sunucuda neler olup bittiğini dürüstçe yanıtlar ve hangi kuralları kapatma zamanının geldiğini de gösterir.
Fail2ban zaten varken buna ne gerek var
Doğaları farklıdır. Fail2ban uygulama günlüklerini okur ve başarısız oturum açmalara tepki verir — yani bir servise çoktan ulaşmış olana. Suricata trafiğin kendisine bakar ve hiçbir zaman bir günlükte olmayacak şeyleri görür: port taramasını, bilinen imzalara uyan istismar denemelerini, makinenizin içinden komuta sunucularına kurulan bağlantıları. Sonuncusu özellikle değerlidir: başkasının komuta ve kontrol sunucusuna giden bir bağlantı, sunucuda sizin başlatmadığınız bir şeyin çoktan çalıştığının en erken belirtisidir.
İkisini birden tutmak sorun değil, çakışmazlar. Tek soru, çıktılarını üç ayda birden daha sık okuyan biri olup olmadığıdır. Aynı uyarıların tek sayfada, kategori ve kaynağa göre ayrılmış hali aşağıdaki demoda.