
Zaradi poteka prodaje sistema za beleženje in analitiko Splunk v Rusiji se je pojavilo vprašanje, s čim to rešitev nadomestiti? Po porabi časa za raziskovanje različnih rešitev sem se odločil za rešitev za prave moške — «ELK stack». Ta sistem zahteva čas za nastavitev, vendar lahko v končni fazi pridobite zelo močan sistem za analizo stanja in hitro odzivanje na incidente informacijske varnosti v organizaciji. V tej seriji člankov bomo pregledali osnovne (morda tudi ne) možnosti ELK stack-a, podrobneje obravnali, kako parsirati loge, kako sestaviti grafikone in nadzorne plošče ter katere zanimive funkcije lahko implementiramo na primeru logov požarnega zidu Check Point ali skenerja varnosti OpenVas. Najprej si poglejmo, kaj je ta ELK stack in iz katerih komponent je sestavljen.
«ELK stack» — je okrajšava za tri projekte z odprto kodo: Elasticsearch, Logstash in Kibana. Razvija ga podjetje Elastic skupaj z vsemi povezanimi projekti. Elasticsearch je jedro celotnega sistema, ki združuje funkcionalnosti baze podatkov, iskalnega in analitičnega sistema. Logstash je podatkovni obdelovalni sistem na strani strežnika, ki istočasno prejema podatke iz več virov, analizira log in jih nato pošlje v bazo podatkov Elasticsearch. Kibana uporabnikom omogoča vizualizacijo podatkov s pomočjo grafikonov in diagramov v Elasticsearch. Prav tako lahko preko Kibane upravljamo s bazo podatkov. V nadaljevanju bomo podrobneje obravnavali vsak sistem.

Logstash
Logstash je orodje za obdelavo log dogodkov iz različnih virov, s katerim lahko izpostavimo polja in njihove vrednosti v sporočilu, prav tako pa lahko nastavite filtriranje in urejanje podatkov. Po vseh manipulacijah Logstash preusmeri dogodke v končno podatkovno skladišče. Orodje se nastavi samo preko konfiguracijskih datotek.
Tipična konfiguracija logstash predstavlja datoteko(e), ki je sestavljena iz več vhodnih tokov informacij (input), več filtrov za te informacije (filter) in več izhodnih tokov (output). Izgleda kot ena ali več konfiguracijskih datotek, ki v najpreprostejši različici (ki sploh ne počne nič) izgleda takole:
input {
}
filter {
}
output {
}
V INPUT nastavljamo na kateri port bodo prihajali logi in po katerem protokolu, ali iz katere mape brati nove ali stalno dodajane datoteke. V FILTER nastavite parser logov: razčlenitev polj, urejanje vrednosti, dodajanje novih parametrov ali brisanje. FILTER je polje za upravljanje sporočila, ki prihaja na Logstash z množico možnosti za urejanje. V output nastavljamo, kam pošiljamo že razčlenjen log; v primeru, da gre za Elasticsearch, se pošlje JSON poizvedba, v kateri so poslani podatki s vrednostmi, ali pa se lahko v okviru odpravljanja napak izpiše v stdout ali shrani v datoteko.

ElasticSearch
Sprva je Elasticsearch rešitev za polno besedilno iskanje, vendar z dodatnimi prednostmi, kot so enostavno skaliranje, replikacija in druge funkcionalnosti, ki so izdelek naredile zelo priročnega in dobrega za visoko obremenitev projektov z velikimi količinami podatkov. Elasticsearch je nerelacijska shramba (NoSQL) dokumentov v formatu JSON in iskalni sistem, ki temelji na polno besedilnem iskanju Lucene. Strojna platforma je Java Virtual Machine, zato sistem potrebuje veliko količino procesorskih in pomnilniških virov za delovanje.
Vsako prihajajoče sporočilo, bodisi s Logstash ali z API poizvedbo, je indeksirano kot "dokument" – analog tabele v relacijskem SQL. Vsi dokumenti so shranjeni v indeksu – analogu podatkovne baze v SQL.
Primer dokumenta v bazi:
{
"_index": "checkpoint-2019.10.10",
"_type": "_doc",
"_id": "yvNZcWwBygXz5W1aycBy",
"_version": 1,
"_score": null,
"_source": {
"layer_uuid": [
"dae7f01c-4c98-4c3a-a643-bfbb8fcf40f0",
"dbee3718-cf2f-4de0-8681-529cb75be9a6"
],
"outzone": "External",
"layer_name": [
"TSS-Standard Security",
"TSS-Standard Application"
],
"time": "1565269565",
"dst": "103.5.198.210",
"parent_rule": "0",
"host": "10.10.10.250",
"ifname": "eth6",
]
}
Vse delo z bazo podatkov temelji na JSON poizvedbah prek REST API, ki bodisi izdajajo dokumente po indeksu bodisi nudijo neko statistiko v formatu: vprašanje – odgovor. Da bi vse odgovore na poizvedbe vizualizirali, je bila napisana Kibana, ki predstavlja spletno storitev.
Kibana
Kibana omogoča iskanje in zbiranje podatkov ter pridobivanje statistike iz baze podatkov elasticsearch, na podlagi odgovorov pa se ustvari mnogo lepih grafikonov in nadzornih plošč. Sistem prav tako vsebuje funkcionalnost za upravljanje baze podatkov elasticsearch, v naslednjih člankih bomo podrobneje obravnavali to storitev. Zdaj pa bomo pokazali primer nadzornih plošč za požarni zid Check Point in skener ranljivosti OpenVas, ki jih je mogoče ustvariti.
Primer nadzorne plošče za Check Point, slika je klikabilna:
Primer nadzorne plošče za OpenVas, slika je klikabilna:
Zaključek
Opravljali smo pregled, iz česa je sestavljen ELK stack, malo smo se spoznali z glavnimi izdelki, v nadaljevanju tečaja pa bomo posebej obravnavali pisanje konfiguracijske datoteke Logstash, nastavitev nadzornih plošč v Kibani, spoznali bomo API poizvedbe, avtomatizacijo in še mnogo več!
Zato spremljajte novosti (, , , ), .
Izvor: habr.com
