2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

Eelmises osas artiklis me tutvusime ELK stekiga, millest see koosneb. Esimene ĂŒlesanne, millega insener ELK steki kasutamisel silmitsi seisab, on logide edastamine nende salvestamiseks Elasticsearchi hilisemaks analĂŒĂŒsimiseks. Kuid see kĂ”lab lihtsalt, Elasticsearch salvestab logid dokumentide kujul kindlate vĂ€ljade ja vÀÀrtustega, seega peab insener kasutama erinevaid tööriistu, et sĂ”num, mis saadetakse lĂ”pp-sĂŒsteemidelt, Ă”igesti töödelda. Seda saab teha mitmel viisil — kirjutades ise programmi, mis API kaudu lisab dokumente andmebaasi, vĂ”i kasutades juba olemasolevaid lahendusi. KĂ€esoleva kursuse raames vaatleme lahendust Logstash, mis on osa ELK stegist. Vaatame, kuidas saata logisid lĂ”pp-sĂŒsteemidelt Logstashi ning seejĂ€rel seadistame konfiguratsioonifaili parsimiseks ja edastamiseks Elasticsearchi andmebaasi. Selleks vĂ”tame sisendsĂŒsteemina Check Pointi tulemĂŒĂŒrilt saadud logid.

Kursuse raames ELK steki installatsiooni ei kÀsitleta, kuna selle kohta on tohutult artikleid, keskendume konfiguratsiooni komponendile.

Koostame tegevuskava Logstashi konfigureerimiseks:

  1. Kontrollime, kas Elasticsearch aktsepteerib logisid (kontrollimaks töökindlust ja pordi avatus).
  2. Uurime, kuidas saame sĂŒndmusi Logstash'isse saata, valime meetodi ja rakendame selle.
  3. Seame sisse Input Logstashi konfiguratsioonifailis.
  4. Seame sisse Output Logstashi konfiguratsioonifailis debugeerimisreĆŸiimis, et mĂ”ista, milline log sĂ”num vĂ€lja nĂ€eb.
  5. Seame sisse Filter.
  6. Seame korrektse Output Elasticsearchis.
  7. KĂ€ivitame Logstashi.
  8. Kontrollime logisid Kibana's.

Uurime iga punkti lÀhemalt:

Kontrollime, kas Elasticsearch aktsepteerib logisid

Selleks saab kasutada kĂ€sku curl, et kontrollida Elasticsearch'i ligipÀÀsu sĂŒsteemilt, kuhu Logstash on installitud. Kui teil on autentimine seadistatud, edastame samuti curl kaudu kasutaja/parooli, mÀÀrame pordi 9200, kui te pole seda muutnud. Kui vastus sarnaneb allpool toodud nĂ€idisele, siis on kĂ”ik korras.

[elastic@elasticsearch ~]$ curl -u <> : <> -sS -XGET "<>:9200"
{
  "name" : "elastic-1",
  "cluster_name" : "project",
  "cluster_uuid" : "sQzjTTuCR8q4ZO6DrEis0A",
  "version" : {
    "number" : "7.4.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "fc0eeb6e2c25915d63d871d344e3d0b45ea0ea1e",
    "build_date" : "2019-10-22T17:16:35.176724Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
[elastic@elasticsearch ~]$

Kui vastust ei tulnud, vĂ”ib olla mitu erinevat viga: elasticsearchi protsess ei tööta, port on vale vĂ”i port on serveris, kus elasticsearch on, tulemĂŒĂŒriga blokeeritud.

Kaaluge, kuidas saata logisid Logstashi kaudu Check Point'i tulemĂŒĂŒri.

Check Point'i juhtimistarkvarast on vÔimalik saata logisid Logstashi kaudu syslog'i, kasutades utiliiti log_exporter, millega saab pÔhjalikumalt tutvuda selle. artiklis, siin jÀtame ainult kÀsu, mis loob voogu:

cp_log_export add name check_point_syslog target-server <> target-port 5555 protocol tcp format generic read-mode semi-unified

<> — Logstashi serveri aadress, target-port 5555 — port, kuhu logid saadame. Logide saatmine tcp protokolliga vĂ”ib serverit koormata, seetĂ”ttu on mĂ”nel juhul Ă”igem kasutada udp-d.

Seame sisse INPUT Logstashi konfiguratsioonifailis

2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

Vaikimisi asub konfiguratsioonifail kataloogis /etc/logstash/conf.d/. Konfiguratsioonifail koosneb kolmest mĂ”istetavast osast: INPUT, FILTER, OUTPUT. Sisse INPUT mĂ€rgime, kust sĂŒsteem logisid vĂ”tab, sisse FILTER parsing logs — seadistame, kuidas jagada sĂ”numid vĂ€lja ja vÀÀrtustes, sisse OUTPUT seadistame vĂ€ljundvoo — kuhu töödeldud logid saadetakse.

Alustame INPUT seadmisega, vaatame mĂ”ningaid tĂŒĂŒpe, mis vĂ”ivad olla — file, tcp ja exe.

Tcp:

input {
tcp {
    port => 5555
    host => “10.10.1.205”
    type => "checkpoint"
    mode => "server"
}
}

mode => «server»
Ütleb, et Logstash aktsepteerib ĂŒhendusi.

port => 5555
host => “10.10.1.205”
Aktsepteerime ĂŒhendusi IP-aadressil 10.10.1.205 (Logstash), port 5555 — port peab olema avatud tulemĂŒĂŒri poliitikaga.

type => «checkpoint»
Dokumendi mĂ€rkimine on vĂ€ga mugav, kui teil on mitu sissetulevat ĂŒhendust. Edasi saab iga ĂŒhenduse jaoks oma filtri kirjutada loogilise konstruktsiooni if abil.

Fail:

input {
  file {
    path => "/var/log/openvas_report/*"
    type => "openvas"
    start_position => "beginning"
    }
}

Seadete kirjeldus:
path => "/var/log/openvas_report/*"
MÀÀrame kausta, milles faile lugeda.

type => "openvas"
SĂŒndmuse tĂŒĂŒp.

start_position => "beginning"
Faili muutumisel loeb sĂŒsteem faili tĂ€ielikult, kui seate "end", siis ootab sĂŒsteem uusi kirjeid faili lĂ”pus.

Exec:

input {
  exec {
    command => "ls -alh"
    interval => 30
  }
}

Antud sisendi puhul kĂ€ivitatakse (ainult!) shell-kĂ€sk ja selle vĂ€ljund ĂŒmbritsetakse logiteatega.

command => "ls -alh"
KÀsk, mille vÀljund meid huvitab.

interval => 30
KĂ€sku kutsutakse ĂŒles iga 30 sekundi jĂ€rel.

Kuna soovime vastu vĂ”tta tulemĂŒĂŒrist logisid, mÀÀrame filtri tcp vĂ”i udp, sĂ”ltuvalt sellest, kuidas logisid Logstashi saadetakse.

Seame Logstashi konfiguratsioonifailis vĂ€ljundi debug-reĆŸiimi, et mĂ”ista, kuidas logiteade vĂ€lja nĂ€eb.

PÀrast INPUT-i konfigureerimist peame aru saama, milline on logi sÔnum, milliseid meetodeid on vaja logide filtrite (parserite) seadistamiseks kasutada.

Sel eesmÀrgil kasutame filtrit, mis annab tulemuse stdout-s, et nÀha algset sÔnumit. TÀielik konfigureerimisfail nÀeb hetkel vÀlja jÀrgmine:

input 
{
         tcp 
         {
                port => 5555
                type => "checkpoint"
                mode => "server"
                host => "10.10.1.205"
         }
}

output 
{
	if [type] == "checkpoint" 
       {
		stdout { codec => json }
	}
}

KÀivitame kontrollimise kÀsu:
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/checkpoint.conf
NĂ€eme tulemust, pilt on klikkitav:

2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

Kui kopeerida, nÀeb see vÀlja nii:

action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,0x5,0xfe0a0a0a,0xc0000000}" origin="10.10.10.254" originsicname="CN=ts-spb-cpgw-01,O=cp-spb-mgmt-01.tssolution.local.kncafb" sequencenum="8" time="1576766483" version="5" context_num="1" dst="10.10.10.10" dst_machine_name="ts-spb-dc-01@tssolution.local" layer_name="TSS-Standard Security" layer_name="TSS-Standard Application" layer_uuid="dae7f01c-4c98-4c3a-a643-bfbb8fcf40f0" layer_uuid="dbee3718-cf2f-4de0-8681-529cb75be9a6" match_id="8" match_id="33554431" parent_rule="0" parent_rule="0" rule_action="Accept" rule_action="Accept" rule_name="Implicit Cleanup" rule_uid="6dc2396f-9644-4546-8f32-95d98a3344e6" product="VPN-1 & FireWall-1" proto="17" s_port="37317" service="53" service_id="domain-udp" src="10.10.1.180" ","type":"qqqqq","host":"10.10.10.250","@version":"1","port":50620

Vaadates neid andmeid, mĂ”istame, et logid on kujul: vĂ€li = vÀÀrtus vĂ”i key = value, mis tĂ€hendab, et sobib filter nimega kv. Et Ă”igesti valida filter iga konkreetse juhtumi jaoks, oleks hea neist tutvuda tehnilises dokumentatsioonis vĂ”i kĂŒsida sĂ”bralt.

Seame Filterit

Eelmisel etapil valisime kv, edaspidi on toodud selle filtri konfiguratsioon:

filter {
if [type] == "checkpoint"{
	kv {
		value_split => "="
		allow_duplicate_values => false
	}
}
}

Valime sĂŒmboli, mille jĂ€rgi jagame vĂ€lja ja vÀÀrtust — “=”. Kui logis on sama kirje mitu korda, salvestame andmebaasi ainult ĂŒhe eksemplari, muidu tekib teil sama vÀÀrtusega massiiv, st kui meil on sĂ”num “foo = some foo=some”, salvestame ainult foo = some.

Seame korraliku vÀljundi ElasticSearch'is

PĂ€rast Filtri seadistamist saab logisid andmebaasi eksportida elasticsearch:

output 
{
if [type] == "checkpoint"
{
 	elasticsearch 
        {
		hosts => ["10.10.1.200:9200"]
		index => "checkpoint-%{+YYYY.MM.dd}"
    		user => "tssolution"
    		password => "cool"
  	}
}
}

Kui dokument on allkirjastatud tĂŒĂŒbi checkpoint, salvestame sĂŒndmuse andmebaasi elasticsearch, mis vaikimisi vĂ”tab ĂŒhendusi aadressilt 10.10.1.200 porti 9200. Iga dokument salvestatakse kindlasse indeksisse, antud juhul salvestame indeksi „checkpoint-” + praegune kuupĂ€ev. Igal indeksil vĂ”ivad olla teatud vĂ€ljade komplektid vĂ”i luuakse need automaatselt, kui sĂ”numis ilmub uus vĂ€li, vĂ€ljade seadeid ja nende tĂŒĂŒpe saab vaadata mappings.'

Kui teil on seadistatud autentimine (millest rÀÀgime hiljem), peavad olema kindlasti mÀÀratud andmed konkreetse indeksi kirjutamiseks, antud nÀites on see "tssolution" parooliga "cool". Kasutajate Ôigusi logide kirjutamiseks saab piiritleda ainult kindlatesse indeksitesse, mitte rohkem.

KĂ€ivitame Logstashi.

Logstashi konfiguratsioonifail:

input 
{
         tcp 
         {
                port => 5555
                type => "checkpoint"
                mode => "server"
                host => "10.10.1.205"
         }
}

filter {
        if [type] == "checkpoint"{
	kv {
		value_split => "="
		allow_duplicate_values => false
	}
        }
}

output 
{
if [type] == "checkpoint"
{
 	elasticsearch 
        {
		hosts => ["10.10.1.200:9200"]
		index => "checkpoint-%{+YYYY.MM.dd}"
    		user => "tssolution"
    		password => "cool"
  	}
}
}

Kontrollime konfiguratsioonifaili Ôigesti koostatud.
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

KĂ€ivitame Logstashi protsessi:
sudo systemctl start logstash

Kontrollime, kas protsess kÀivitati:
sudo systemctl status logstash

2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

Kontrollime, kas pistik on ĂŒles tĂ”usnud:
netstat -nat | grep 5555

2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

Kontrollime logisid Kibana's.

PÀrast kÔike, kui kÔik on kÀivitatud, siseneme Kibana - Discover, veendume, et kÔik on Ôigesti seadistatud, pilt on klikitav!

2. Elastic stack: turvalogide analĂŒĂŒs. Logstash

KÔik logid on kohal ja me nÀeme kÔiki vÀlju ja nende vÀÀrtusi!

KokkuvÔte

Me oleme kĂ€sitlenud, kuidas kirjutada Logstashi konfigureerimisfaili, mille tulemusena saime parseri kĂ”igile vĂ€ljadele ja vÀÀrtustele. NĂŒĂŒd saame töötada otsingute ja graafikute koostamisega teatud vĂ€ljade suhtes. Edasi kursuses kĂ€sitleme visualiseerimist Kibanas ning loome lihtsa armatuurlaua. Tasub mainida, et Logstashi konfigureerimisfaili tuleb teatud olukordades pidevalt tĂ€iendada, nĂ€iteks kui soovime muuta vĂ€lja vÀÀrtust numbrist sĂ”naks. JĂ€rgmistes artiklites teeme seda pidevalt.

Nii et jÀlgige uuendusi (Telegram, Facebook, VK, TS Solution Blog), Yandex.Dzen.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster