Praktično svaki vodič za Suricatu završava se instalacijom Elasticsearch-a, Logstash-a i Kibane. Za jedan VPS to je loš savet: taj sloj će tražiti četiri gigabajta memorije i stalnu pažnju, a sve što ste hteli bilo je da vidite šta je IDS uhvatio prethodnog dana. Suricata radi sasvim dobro i bez njih — ali ima jednu osobinu zbog koje je ljudi instaliraju i uklone nedelju dana kasnije.
Mina u podrazumevanim podešavanjima
Iz kutije Suricata upisuje u eve.json više od trideset vrsta događaja: ne samo upozorenja nego svaki DNS upit, svako TLS rukovanje, svaku HTTP transakciju, ARP, DHCP, tok za tokom. Uz to zaseban stats.log svakih osam sekundi. Suricata pri tome ne podešava rotaciju dnevnika — to je posao administratora i nigde nije napisano velikim slovima.
Brojka sa stvarnog servera: 15 gigabajta za dva dana — devet u eve.json i skoro šest u stats.log. Do popunjavanja diska ostalo je oko pet dana. Ni saobraćaja na tom serveru nije bilo mnogo; na prometnom čvoru bilo bi to pitanje sati.
Proverite svoje odmah sada:
sudo du -sh /var/log/suricata/*
Zadržite samo ono što čitate
Ako gledate upozorenja umesto da radite mrežnu forenziku, iz eve-log potrebna je tačno jedna vrsta događaja. U /etc/suricata/suricata.yaml pronađite blok outputs i, pod types za eve-log, ostavite alert a ostalo zakomentarišite. Na istom mestu isključite izlaz statistike:
- stats:
enabled: no
Posle izmene provera konfiguracije je obavezna — pre ponovnog pokretanja servisa:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Redosled je bitan: test neće proći ako pravila još nisu učitana. Prvo suricata-update, zatim provera konfiguracije, pa pokretanje.
Rotacija koja zaista radi
Fajl /etc/logrotate.d/suricata:
/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
}
Dva reda ovde nisu očigledna i oba su kritična.
su suricata suricata — bez toga logrotate tiho preskače svaki fajl. Direktorijum /var/log/suricata pripada grupi suricata a ne root-u, i logrotate takav raspored smatra nebezbednim. Neće biti greške ni u pošti ni u dnevniku; prosto ćete biti sigurni da rotacija postoji dok disk ne bude pun. Jedini način da se to uhvati unapred je probno pokretanje:
sudo logrotate -d /etc/logrotate.d/suricata
create 0664 suricata suricata — dozvole novog fajla. Sa podrazumevanim vrednostima (0640), bilo koji panel ili skripta koja dnevnike čita kao ne-root korisnik neće videti ništa već posle prve rotacije.
Šta podesiti osim dnevnika
HOME_NET. Time se opisuje šta Suricata smatra svojim. Podrazumevana vrednost navodi sve privatne opsege, a VPS ima javnu adresu — pa se neka pravila ne aktiviraju ili se aktiviraju obrnuto. Navedite sopstvenu mrežu izričito.
Pravila. Skup Emerging Threats Open povlači suricata-update, čije je mesto u cron-u jednom dnevno. Pojedinačni bučni potpisi isključuju se po identifikatoru u /etc/suricata/disable.conf — ne bojte se toga koristiti: skup je namenjen korporativnoj mreži, a na običnom veb serveru tuce pravila aktiviraće se stalno i bez razloga.
Režim. Podrazumevano Suricata osluškuje kopiju saobraćaja i samo upozorava (IDS). Režim blokiranja (IPS, preko nfqueue) na jednom serveru rizik je pre svega po vas same: jedan lažni pozitiv i zaključali ste sebe napolje. Počnite posmatranjem i provedite mesec dana gledajući šta se hvata.
Kako se to čita bez Kibane
Kratka upozorenja žive u /var/log/suricata/fast.log — jedan red po događaju, čitljivo okom:
sudo tail -50 /var/log/suricata/fast.log
Detalji su u eve.json, jedan JSON objekat po redu. Sve zbog čega se obično instalira Kibana svodi se na jednu komandu:
sudo jq -r 'select(.event_type=="alert") | .alert.signature' \
/var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20
To je dvadeset najčešćih potpisa. Tokom nedelje takva lista pošteno odgovara šta se dešava sa serverom, a pokazuje i koja je pravila vreme isključiti.
Čemu sve to kada Fail2ban već postoji
Po prirodi su različiti. Fail2ban čita dnevnike aplikacija i reaguje na neuspešne prijave — to jest na ono što je već stiglo do servisa. Suricata gleda sam saobraćaj i vidi ono čega nikada neće biti u dnevniku: skeniranje portova, pokušaje eksploatacije koji se poklapaju sa poznatim potpisima, veze ka komandnim serverima iz unutrašnjosti vaše mašine. Poslednje je posebno dragoceno: odlazna veza ka tuđem komandnom serveru najraniji je znak da na serveru već radi nešto što vi niste pokrenuli.
Držati oboje je sasvim u redu, ne sukobljavaju se. Jedino je pitanje da li iko čita njihov izlaz češće nego jednom u tri meseca. Kako ista upozorenja izgledaju na jednoj stranici, razdvojena po kategoriji i izvoru, pokazuje demo ispod.