2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Yn yr olaf Erthygl cyfarfuom pentwr ELK, pa gynhyrchion meddalwedd y mae'n eu cynnwys. A'r dasg gyntaf y mae peiriannydd yn ei hwynebu wrth weithio gyda'r pentwr ELK yw anfon logiau i'w storio mewn chwiliad elastig i'w dadansoddi wedyn. Fodd bynnag, gwasanaeth gwefus yn unig yw hwn, mae elasticsearch yn storio logiau ar ffurf dogfennau â meysydd a gwerthoedd penodol, sy'n golygu bod yn rhaid i'r peiriannydd ddefnyddio offer amrywiol i ddosrannu'r neges a anfonir o'r systemau diwedd. Gellir gwneud hyn mewn sawl ffordd - ysgrifennwch raglen eich hun a fydd yn ychwanegu dogfennau at y gronfa ddata gan ddefnyddio'r API, neu defnyddiwch atebion parod. Yn y cwrs hwn byddwn yn ystyried yr ateb Logstash, sy'n rhan o'r pentwr ELK. Byddwn yn edrych ar sut y gallwn anfon logiau o systemau endpoint i Logstash, ac yna byddwn yn sefydlu ffeil ffurfweddu i ddosrannu ac ailgyfeirio i'r gronfa ddata Elasticsearch. I wneud hyn, rydym yn cymryd logiau o wal dân Check Point fel y system sy'n dod i mewn.

Nid yw'r cwrs yn ymdrin â gosod pentwr ELK, gan fod nifer fawr o erthyglau ar y pwnc hwn; byddwn yn ystyried y gydran ffurfweddu.

Gadewch i ni lunio cynllun gweithredu ar gyfer cyfluniad Logstash:

  1. Gwirio y bydd elasticsearch yn derbyn logiau (gwirio ymarferoldeb a natur agored y porthladd).
  2. Rydym yn ystyried sut y gallwn anfon digwyddiadau i Logstash, dewis dull, a'i roi ar waith.
  3. Rydym yn ffurfweddu Mewnbwn yn y ffeil ffurfweddu Logstash.
  4. Rydym yn ffurfweddu Allbwn yn y ffeil ffurfweddu Logstash yn y modd dadfygio er mwyn deall sut olwg sydd ar y neges log.
  5. Gosod Hidlydd.
  6. Sefydlu'r Allbwn cywir yn ElasticSearch.
  7. Logstash yn lansio.
  8. Gwirio'r logiau yn Kibana.

Edrychwn ar bob pwynt yn fwy manwl:

Gwirio y bydd elasticsearch yn derbyn logiau

I wneud hyn, gallwch ddefnyddio'r gorchymyn curl i wirio mynediad i Elasticsearch o'r system y mae Logstash yn cael ei ddefnyddio arni. Os oes gennych ddilysiad wedi'i ffurfweddu, yna rydym hefyd yn trosglwyddo'r defnyddiwr / cyfrinair trwy curl, gan nodi porthladd 9200 os nad ydych wedi ei newid. Os byddwch yn derbyn ymateb tebyg i'r un isod, yna mae popeth mewn trefn.

[elastic@elasticsearch ~]$ curl -u <<user_name>> : <<password>> -sS -XGET "<<ip_address_elasticsearch>>: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 ~]$

Os na dderbynnir yr ymateb, yna efallai y bydd sawl math o wallau: nid yw'r broses elasticsearch yn rhedeg, mae'r porthladd anghywir wedi'i nodi, neu mae'r porthladd yn cael ei rwystro gan wal dân ar y gweinydd lle mae elasticsearch wedi'i osod.

Gadewch i ni edrych ar sut y gallwch chi anfon logiau i Logstash o wal dân pwynt gwirio

O weinydd rheoli Check Point gallwch anfon logiau i Logstash trwy syslog gan ddefnyddio'r cyfleustodau log_exporter, gallwch ddarllen mwy amdano yma Erthygl, yma byddwn yn gadael dim ond y gorchymyn sy'n creu'r ffrwd:

cp_log_export ychwanegu enw check_point_syslog target-server < > targed-porthladd 5555 protocol tcp fformat darllen-ddelw generig lled-unedig

< > - cyfeiriad y gweinydd y mae Logstash yn rhedeg arno, porthladd targed 5555 - porthladd y byddwn yn anfon logiau iddo, gall anfon logiau trwy tcp lwytho'r gweinydd, felly mewn rhai achosion mae'n fwy cywir defnyddio udp.

Sefydlu INPUT yn y ffeil ffurfweddu Logstash

2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Yn ddiofyn, mae'r ffeil ffurfweddu wedi'i lleoli yn y /etc/logstash/conf.d/ cyfeiriadur. Mae'r ffeil ffurfweddu yn cynnwys 3 rhan ystyrlon: MEWNBWN, FILTER, ALLBWN. YN INPUT rydym yn nodi o ble bydd y system yn cymryd logiau, i mewn Hidlo dosrannu'r log - sefydlu sut i rannu'r neges yn feysydd a gwerthoedd, yn ALLBWN rydym yn ffurfweddu'r ffrwd allbwn - lle bydd y logiau wedi'u dosrannu yn cael eu hanfon.

Yn gyntaf, gadewch i ni ffurfweddu INPUT, ystyried rhai o'r mathau a all fod - ffeil, tcp ac exe.

Tcp:

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

modd => "gweinydd"
Yn dangos bod Logstash yn derbyn cysylltiadau.

porthladd => 5555
gwesteiwr => "10.10.1.205"
Rydym yn derbyn cysylltiadau trwy gyfeiriad IP 10.10.1.205 (Logstash), porthladd 5555 - rhaid i'r porthladd gael ei ganiatáu gan y polisi wal dân.

math => "pwynt gwirio"
Rydyn ni'n marcio'r ddogfen, yn gyfleus iawn os oes gennych chi sawl cysylltiad sy'n dod i mewn. Yn dilyn hynny, ar gyfer pob cysylltiad gallwch chi ysgrifennu eich hidlydd eich hun gan ddefnyddio'r lluniad rhesymegol.

File:

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

Disgrifiad o'r gosodiadau:
llwybr => "/var/log/openvas_report/*"
Rydym yn nodi'r cyfeiriadur y mae angen darllen y ffeiliau ynddo.

math => "openvas"
Math o ddigwyddiad.

start_position => "dechrau"
Wrth newid ffeil, mae'n darllen y ffeil gyfan; os ydych chi'n gosod "diwedd", mae'r system yn aros i gofnodion newydd ymddangos ar ddiwedd y ffeil.

Gweithredwr:

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

Gan ddefnyddio'r mewnbwn hwn, mae gorchymyn cragen (yn unig!) yn cael ei lansio a chaiff ei allbwn ei droi'n neges log.

gorchymyn => "ls -alh"
Y gorchymyn y mae gennym ni ddiddordeb yn ei allbwn.

cyfwng => 30
Cyfwng galw gorchymyn mewn eiliadau.

Er mwyn derbyn logiau o'r wal dân, rydym yn cofrestru hidlydd tcp neu udp, yn dibynnu ar sut mae'r logiau'n cael eu hanfon i Logstash.

Rydym yn ffurfweddu Allbwn yn ffeil ffurfweddu Logstash yn y modd dadfygio er mwyn deall sut olwg sydd ar y neges log

Ar ôl i ni ffurfweddu INPUT, mae angen i ni ddeall sut olwg fydd ar y neges log a pha ddulliau sydd angen eu defnyddio i ffurfweddu'r hidlydd log (parser).

I wneud hyn, byddwn yn defnyddio hidlydd sy'n allbynnu'r canlyniad i stdout er mwyn gweld y neges wreiddiol; bydd y ffeil ffurfweddu gyflawn ar hyn o bryd yn edrych fel hyn:

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

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

Rhedeg y gorchymyn i wirio:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Rydyn ni'n gweld y canlyniad, mae modd clicio ar y llun:

2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Os byddwch yn ei gopïo bydd yn edrych fel hyn:

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="[email protected]" 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}{"@timestamp":"2019-12-19T14:50:12.153Z","message":"time="1576766483" action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,

Wrth edrych ar y negeseuon hyn, rydym yn deall bod y logiau'n edrych fel: maes = gwerth neu allwedd = gwerth, sy'n golygu bod hidlydd o'r enw kv yn addas. Er mwyn dewis yr hidlydd cywir ar gyfer pob achos penodol, byddai'n syniad da ymgyfarwyddo â nhw yn y ddogfennaeth dechnegol, neu ofyn i ffrind.

Gosod Hidlydd

Yn y cam olaf y dewisom kv, cyflwynir ffurfweddiad yr hidlydd hwn isod:

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

Rydyn ni'n dewis y symbol y byddwn ni'n ei ddefnyddio i rannu'r maes a'r gwerth - “=”. Os oes gennym ni gofnodion union yr un fath yn y log, dim ond un enghraifft rydyn ni'n ei chadw yn y gronfa ddata, fel arall bydd gennych chi amrywiaeth o werthoedd union yr un fath, hynny yw, os oes gennym ni'r neges “foo = rhai foo = rhai” rydyn ni'n ysgrifennu foo yn unig = rhai.

Sefydlu'r Allbwn cywir yn ElasticSearch

Unwaith y bydd Hidlo wedi'i ffurfweddu, gallwch uwchlwytho logiau i'r gronfa ddata elasticsearch:

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

Os yw'r ddogfen wedi'i llofnodi gyda'r math pwynt gwirio, rydym yn arbed y digwyddiad i'r gronfa ddata elasticsearch, sy'n derbyn cysylltiadau ar 10.10.1.200 ar borthladd 9200 yn ddiofyn. Mae pob dogfen yn cael ei chadw i fynegai penodol, yn yr achos hwn rydym yn cadw i'r mynegai “checkpoint-” + dyddiad amser cyfredol. Gall fod gan bob mynegai set benodol o feysydd, neu caiff ei greu'n awtomatig pan fydd maes newydd yn ymddangos mewn neges; gellir gweld gosodiadau maes a'u math mewn mapiau.

Os oes gennych ddilysiad wedi'i ffurfweddu (byddwn yn edrych arno'n ddiweddarach), rhaid nodi'r manylion ar gyfer ysgrifennu i fynegai penodol, yn yr enghraifft hon mae'n “tssolution” gyda'r cyfrinair “cool”. Gallwch wahaniaethu hawliau defnyddwyr i ysgrifennu logiau i fynegai penodol yn unig a dim mwy.

Lansio Logstash.

Ffeil ffurfweddu Logstash:

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"
  	}
}
}

Rydym yn gwirio cywirdeb y ffeil ffurfweddu:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Dechreuwch y broses Logstash:
sudo systemctl start logstash

Rydym yn gwirio bod y broses wedi dechrau:
logstash statws sudo systemctl

2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Gadewch i ni wirio a yw'r soced i fyny:
netstat -nat |grep 5555

2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Gwirio'r logiau yn Kibana.

Ar ôl i bopeth redeg, ewch i Kibana - Darganfod, gwnewch yn siŵr bod popeth wedi'i ffurfweddu'n gywir, bod modd clicio ar y llun!

2. Stac elastig: dadansoddiad o logiau diogelwch. Logstash

Mae'r holl logiau yn eu lle a gallwn weld yr holl feysydd a'u gwerthoedd!

Casgliad

Edrychom ar sut i ysgrifennu ffeil ffurfweddu Logstash, ac o ganlyniad cawsom ddosraniad o'r holl feysydd a gwerthoedd. Nawr gallwn weithio gyda chwilio a phlotio ar gyfer meysydd penodol. Nesaf yn y cwrs byddwn yn edrych ar ddelweddu yn Kibana ac yn creu dangosfwrdd syml. Mae'n werth nodi bod angen diweddaru ffeil ffurfweddu Logstash yn gyson mewn rhai sefyllfaoedd, er enghraifft, pan fyddwn am ddisodli gwerth maes o rif i air. Mewn erthyglau dilynol byddwn yn gwneud hyn yn gyson.

Felly cadwch diwnioTelegram, Facebook, VK, Blog Ateb TS), Yandex Zen.

Ffynhonnell: hab.com

Ychwanegu sylw