Lähes jokainen Suricata-ohje päättyy siihen, että asennetaan Elasticsearch, Logstash ja Kibana. Yhdelle VPS:lle se on huono neuvo: tuo yhdistelmä haluaa neljä gigatavua muistia ja jatkuvaa valvontaa, kun taas halusit vain nähdä, mitä IDS nappasi vuorokauden aikana. Suricata toimii mainiosti ilman niitä — mutta siinä on erikoisuus, jonka takia moni asentaa sen ja repii pois viikkoa myöhemmin.
Miina oletusasetuksissa
Suoraan laatikosta Suricata kirjoittaa tiedostoon eve.json yli kolmekymmentä tapahtumatyyppiä: ei vain hälytyksiä, vaan jokaisen DNS-kyselyn, jokaisen TLS-kättelyn, jokaisen HTTP-tapahtuman, ARP:n, DHCP:n, vuon toisensa jälkeen. Lisäksi erillinen stats.log kahdeksan sekunnin välein. Lokien kiertoa Suricata ei aseta lainkaan — se on ylläpitäjän tehtävä, eikä siitä lue missään isoilla kirjaimilla.
Luku oikealta palvelimelta: 15 gigatavua kahdessa vuorokaudessa — yhdeksän tiedostossa eve.json ja lähes kuusi tiedostossa stats.log. Täyteen levyyn oli noin viisi päivää. Liikennettä palvelimella oli samaan aikaan kohtalaisesti; kuormitetulla solmulla kyse olisi ollut tunneista.
Tarkista omalla koneellasi heti:
sudo du -sh /var/log/suricata/*
Jätä vain se, mitä luet
Jos katsot hälytyksiä etkä harrasta verkkoforensiikkaa, tarvitset eve-log-lohkosta täsmälleen yhden tapahtumatyypin. Etsi tiedostosta /etc/suricata/suricata.yaml lohko outputs ja jätä eve-log-kohdan types-listaan alert, kommentoi loput pois. Kytke samassa paikassa pois tilastotuloste:
- stats:
enabled: no
Muutoksen jälkeen — pakollinen asetusten tarkistus, ennen palvelun uudelleenkäynnistystä:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Järjestyksellä on merkitystä: testi ei mene läpi, jos sääntöjä ei ole vielä haettu. Ensin suricata-update, sitten asetusten tarkistus, sitten käynnistys.
Kierto, joka todella toimii
Tiedosto /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
}
Kaksi riviä tässä ei ole ilmeisiä, ja molemmat ovat ratkaisevia.
su suricata suricata — ilman sitä logrotate ohittaa hiljaa kaikki tiedostot. Hakemisto /var/log/suricata kuuluu ryhmälle suricata eikä rootille, ja logrotate pitää sellaista kokoonpanoa turvattomana. Virheilmoitusta ei tule postiin eikä lokiin; olet yksinkertaisesti vakuuttunut siitä, että kierto on olemassa, kunnes levy loppuu. Ainoa tapa napata tämä etukäteen on kuiva-ajo:
sudo logrotate -d /etc/logrotate.d/suricata
create 0664 suricata suricata — uuden tiedoston oikeudet. Oletusoikeuksilla (0640) mikä tahansa paneeli tai skripti, joka lukee lokeja ilman rootia, näkee ensimmäisen kierron jälkeen vain tyhjyyttä.
Mitä asettaa lokien lisäksi
HOME_NET. Se on kuvaus siitä, mitä Suricata pitää ”omanaan”. Oletusarvo luettelee kaikki yksityiset osoitealueet, kun taas VPS:llä on julkinen osoite — seurauksena osa säännöistä ei laukea tai laukeaa päinvastoin. Määritä oma verkkosi nimenomaisesti.
Säännöt. Emerging Threats Open -kokoelma haetaan komennolla suricata-update, joka laitetaan croniin kerran vuorokaudessa. Yksittäiset meluisat allekirjoitukset kytketään pois tiedostossa /etc/suricata/disable.conf tunnuksen perusteella — älä pelkää käyttää sitä: kokoelma on tehty yritysverkkoja varten, ja kymmenkunta sääntöä laukeaa tavallisella verkkopalvelimella jatkuvasti ilman syytä.
Tila. Oletuksena Suricata kuuntelee liikenteen kopiota ja vain varoittaa (IDS). Estotila (IPS, nfqueue-jonon kautta) yhdellä palvelimella on riski ennen kaikkea sinulle itsellesi: yksi väärä hälytys, ja olet sulkenut itsesi ulos. Aloita seurannasta ja katso kuukausi, mitä jää haaviin.
Miten lukea ilman Kibanaa
Lyhyet hälytykset ovat tiedostossa /var/log/suricata/fast.log — yksi rivi tapahtumaa kohti, silmällä luettavissa:
sudo tail -50 /var/log/suricata/fast.log
Yksityiskohdat ovat tiedostossa eve.json, yksi JSON-olio riviä kohti. Kaikki se, mitä varten Kibana yleensä asennetaan, tehdään yhdellä komennolla:
sudo jq -r 'select(.event_type=="alert") | .alert.signature' \
/var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20
Nämä ovat kaksikymmentä yleisintä allekirjoitusta. Tällainen viikon lista vastaa rehellisesti kysymykseen siitä, mitä palvelimella oikeastaan tapahtuu, ja näyttää samalla, mitkä säännöt on aika kytkeä pois.
Miksi tämä, kun Fail2ban on jo olemassa
Ne ovat luonteeltaan erilaisia. Fail2ban lukee sovelluslokeja ja reagoi epäonnistuneisiin kirjautumisiin — siis siihen, mikä on jo päässyt palveluun asti. Suricata katsoo itse liikennettä ja näkee sen, mikä ei koskaan päädy lokeihin: porttiskannaukset, tunnettujen haavoittuvuuksien hyväksikäyttöyritykset, yhteydenotot ohjauspalvelimiin koneesi sisältä. Viimeksi mainittu on erityisen arvokas: lähtevä yhteys vieraaseen C2-palvelimeen on varhaisin merkki siitä, että jokin palvelimella on jo käynnissä ilman tietoasi.
Molempien työkalujen pitäminen on normaalia, ne eivät ole ristiriidassa. Kysymys on vain siitä, lukeeko joku niiden tulosteita useammin kuin kerran neljännesvuodessa. Miltä samat hälytykset näyttävät yhdellä sivulla luokkiin ja lähteisiin jaoteltuina, näkyy alla olevassa esittelyssä.