Gyakorlatilag minden Suricata-útmutató az Elasticsearch, a Logstash és a Kibana telepítésével zárul. Egyetlen VPS-hez ez rossz tanács: ez az együttes négy gigabájt memóriát és folyamatos felügyeletet kér, miközben te csak látni akartad, mit fogott az IDS egy nap alatt. A Suricata nélkülük is kiválóan működik — van azonban egy sajátossága, ami miatt sokan telepítik, majd egy hét múlva le is szedik.
Akna az alapbeállításokban
Alapból a Suricata több mint harmincféle eseményt ír az eve.json fájlba: nemcsak riasztásokat, hanem minden DNS-lekérdezést, minden TLS-kézfogást, minden HTTP-tranzakciót, ARP-t, DHCP-t, folyamot folyam után. Ráadásul külön stats.log nyolcmásodpercenként. A naplórotációt a Suricata eközben egyáltalán nem állítja be — ez az adminisztrátor dolga, amiről sehol nincs nagybetűvel írva.
Egy valós szerverről származó szám: 15 gigabájt két nap alatt — kilenc az eve.json fájlban és majdnem hat a stats.log fájlban. A tele lemezig körülbelül öt nap volt hátra. Forgalom közben nem sok volt a szerveren; terhelt csomóponton órákról lenne szó.
Ellenőrizd magadnál most azonnal:
sudo du -sh /var/log/suricata/*
Csak azt hagyd meg, amit olvasol
Ha riasztásokat nézel, és nem hálózati kriminalisztikával foglalkozol, az eve-log blokkból pontosan egy eseménytípusra van szükséged. A /etc/suricata/suricata.yaml fájlban keresd meg az outputs blokkot, és az eve-log types listájában hagyd meg az alert elemet, a többit kommentezd ki. Ugyanott kapcsold ki a statisztikai kimenetet:
- stats:
enabled: no
Módosítás után kötelező konfigurációellenőrzés, még a szolgáltatás újraindítása előtt:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
A sorrend számít: a teszt nem megy át, ha a szabályok még nincsenek letöltve. Először suricata-update, aztán a konfigurációellenőrzés, aztán az indítás.
Rotáció, ami tényleg működik
Az /etc/logrotate.d/suricata fájl:
/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
}
Két sor itt nem magától értetődő, és mindkettő kritikus.
su suricata suricata — enélkül a logrotate némán kihagyja az összes fájlt. A /var/log/suricata könyvtár a suricata csoporté, nem a rooté, és a logrotate az ilyen beállítást nem tartja biztonságosnak. Hibaüzenet nem érkezik sem levélben, sem a naplóba; egyszerűen meg leszel győződve róla, hogy van rotáció, amíg el nem fogy a lemez. Ezt kizárólag üresjáratú futtatással lehet előre elkapni:
sudo logrotate -d /etc/logrotate.d/suricata
create 0664 suricata suricata — az új fájl jogosultságai. Az alapértelmezett jogokkal (0640) minden olyan panel vagy szkript, amely nem rootként olvassa a naplókat, az első rotáció után csak ürességet lát.
Mit állíts be a naplókon kívül
HOME_NET. Ez annak leírása, mit tekint a Suricata „sajátjának”. Az alapérték az összes privát tartományt felsorolja, a VPS-nek viszont nyilvános címe van — ennek eredményeként a szabályok egy része nem lép működésbe, vagy fordítva lép működésbe. Add meg a saját hálózatodat kifejezetten.
Szabályok. Az Emerging Threats Open készletet a suricata-update parancs tölti le, amelyet naponta egyszer teszünk cronba. Az egyes zajos szignatúrák a /etc/suricata/disable.conf fájlban kapcsolhatók ki azonosító alapján — ne félj használni: a készlet vállalati hálózatra készült, és tíz szabály egy szokásos webszerveren folyamatosan és ok nélkül fog működésbe lépni.
Üzemmód. Alapból a Suricata a forgalom másolatát figyeli, és csak figyelmeztet (IDS). A blokkoló üzemmód (IPS, nfqueue-n keresztül) egyetlen szerveren elsősorban rád nézve kockázat: egy téves riasztás, és magadat zártad ki. Kezdd megfigyeléssel, és egy hónapig nézd, mi akad fenn.
Hogyan olvass Kibana nélkül
A rövid riasztások a /var/log/suricata/fast.log fájlban vannak — eseményenként egy sor, szemmel olvasható:
sudo tail -50 /var/log/suricata/fast.log
A részletek az eve.json fájlban, soronként egy JSON-objektumban. Mindaz, amiért általában Kibanát telepítenek, egyetlen paranccsal elvégezhető:
sudo jq -r 'select(.event_type=="alert") | .alert.signature' \
/var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20
Ez a húsz leggyakoribb szignatúra. Egy ilyen heti lista őszintén megválaszolja azt a kérdést, mi is történik a szerverrel, és egyúttal megmutatja, mely szabályokat ideje kikapcsolni.
Miért kell ez, ha már van Fail2ban
Más a természetük. A Fail2ban alkalmazásnaplókat olvas, és a sikertelen bejelentkezésekre reagál — azaz arra, ami már eljutott egy szolgáltatásig. A Suricata magát a forgalmat nézi, és azt látja, ami a naplókba sosem kerül be: portszkennelést, ismert szignatúrák szerinti kihasználási kísérleteket, kapcsolatfelvételt vezérlőszerverekkel a gépeden belülről. Ez utóbbi különösen értékes: egy kimenő kapcsolat idegen C2-höz a legkorábbi jele annak, hogy a szerveren már fut valami a tudtod nélkül.
Mindkét eszközt tartani normális, nem ütköznek. A kérdés csak az, hogy valaki negyedévente többször olvassa-e a kimenetüket. Hogy néznek ki ugyanezek a riasztások egy oldalon, kategóriák és források szerint bontva, azt az alábbi bemutató mutatja.