2. tumpukan elastis: analisis log kaamanan. Logstash

2. tumpukan elastis: analisis log kaamanan. Logstash

Di tempo anu kalangkung artikel urang patepung tumpukan ELK, produk software naon eta diwangun ku. Sareng tugas munggaran anu disanghareupan ku insinyur nalika damel sareng tumpukan ELK nyaéta ngirim log pikeun neundeun dina elasticsearch pikeun analisa salajengna. Nanging, ieu ngan ukur lip service, elasticsearch nyimpen log dina bentuk dokumén kalayan widang sareng nilai anu tangtu, anu hartosna insinyur kedah nganggo sababaraha alat pikeun ngémutan pesen anu dikirim tina sistem tungtung. Ieu tiasa dilakukeun ku sababaraha cara - nyerat program nyalira anu bakal nambihan dokumén kana pangkalan data nganggo API, atanapi nganggo solusi anu siap-siap. Dina kursus ieu urang bakal mertimbangkeun solusi logstash, anu mangrupa bagian ti tumpukan ELK. Urang bakal ningali kumaha urang tiasa ngirim log tina sistem endpoint ka Logstash, teras urang bakal nyetél file konfigurasi pikeun nga-parse sareng alihan ka database Elasticsearch. Jang ngalampahkeun ieu, urang nyandak log ti Check Point firewall salaku sistem asup.

Kursusna henteu nutupan pamasangan tumpukan ELK, sabab aya sajumlah ageung tulisan ngeunaan topik ieu; urang bakal mertimbangkeun komponén konfigurasi.

Hayu urang ngadamel rencana aksi pikeun konfigurasi Logstash:

  1. Mariksa yén elasticsearch bakal nampi log (mariksa fungsionalitas sareng kabuka port).
  2. Kami nganggap kumaha urang tiasa ngirim acara ka Logstash, milih metode, sareng ngalaksanakeunana.
  3. Urang ngonpigurasikeun Input dina file konfigurasi Logstash.
  4. Urang ngonpigurasikeun Kaluaran dina file konfigurasi Logstash dina modeu debug dina urutan ngartos naon pesen log Sigana mah.
  5. Nyetél Filter.
  6. Nyetél Kaluaran anu leres dina ElasticSearch.
  7. Logstash ngaluncurkeun.
  8. Mariksa log di Kibana.

Hayu urang nempo unggal titik dina leuwih jéntré:

Mariksa yén elasticsearch bakal nampi log

Jang ngalampahkeun ieu, anjeun tiasa nganggo paréntah curl pikeun pariksa aksés ka Elasticsearch tina sistem dimana Logstash dipasang. Upami Anjeun gaduh auténtikasi ngonpigurasi, lajeng urang ogé mindahkeun pamaké / sandi via curl, nangtukeun port 9200 lamun teu robah deui. Upami anjeun nampi réspon anu sami sareng anu di handap ieu, maka sadayana aya dina urutan.

[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 ~]$

Upami réspon henteu ditampi, maka meureun aya sababaraha jinis kasalahan: prosés elasticsearch henteu jalan, port anu salah ditunjuk, atanapi port diblokir ku firewall dina server dimana elasticsearch dipasang.

Hayu urang tingali kumaha anjeun tiasa ngirim log ka Logstash tina firewall titik cek

Ti server manajemén Check Point anjeun tiasa ngirim log ka Logstash via syslog nganggo utilitas log_exporter, anjeun tiasa maca langkung seueur ngeunaan éta di dieu artikel, di dieu urang ngan ukur tinggalkeun paréntah anu nyiptakeun aliran:

cp_log_export nambahkeun ngaran check_point_syslog target-server < > target-port 5555 protokol format tcp generik baca-mode semi-ngahiji

< > - alamat server on nu Logstash ngajalankeun, target-port 5555 - port nu urang bakal ngirim log, ngirim log via tcp bisa muka server, jadi dina sababaraha kasus eta leuwih bener ngagunakeun udp.

Nyetél INPUT dina file konfigurasi Logstash

2. tumpukan elastis: analisis log kaamanan. Logstash

Sacara standar, file konfigurasi aya dina /etc/logstash/conf.d/ diréktori. File konfigurasi diwangun ku 3 bagian anu bermakna: INPUT, FILTER, OUTPUT. DI ngasupkeun kami nunjukkeun dimana sistem bakal nyandak log ti, di saringan parse log - nyetél kumaha ngabagi pesen kana widang sareng nilai, di hasil urang ngonpigurasikeun aliran kaluaran - dimana log parsed bakal dikirim.

Mimiti, hayu urang ngonpigurasikeun INPUT, mertimbangkeun sababaraha jinis anu tiasa - file, tcp sareng exe.

Tcp:

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

mode => "server"
Nunjukkeun yén Logstash nampi sambungan.

palabuhan => 5555
host => "10.10.1.205"
Simkuring nampi sambungan via alamat IP 10.10.1.205 (Logstash), palabuhan 5555 - port kudu diwenangkeun ku kawijakan firewall.

ngetik => "titik pamariksaan"
Kami nyirian dokumen éta, saé pisan upami anjeun gaduh sababaraha sambungan anu asup. Salajengna, pikeun unggal sambungan anjeun tiasa nyerat saringan anjeun nyalira nganggo logika upami ngawangun.

file:

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

Katerangan ngeunaan setélan:
jalur => "/var/log/openvas_report/*"
Kami nunjukkeun diréktori dimana file kedah dibaca.

ngetik => "openvas"
Jenis acara.

start_position => "mimiti"
Nalika ngarobih file, éta maca sadayana file; upami anjeun nyetél "tungtung", sistem ngantosan rékaman énggal muncul dina tungtung file.

Exec:

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

Nganggo input ieu, paréntah cangkang (ngan!) Diluncurkeun sareng kaluaranna janten pesen log.

paréntah => "ls -alh"
Paréntah nu kaluaran kami museurkeun.

interval => 30
Interval invocation paréntah dina detik.

Dina raraga nampi log ti firewall, urang ngadaptar filter a tcp atawa udp, gumantung kana kumaha log dikirim ka Logstash.

Urang ngonpigurasikeun Kaluaran dina file konfigurasi Logstash dina modeu debug dina urutan ngartos naon pesen log Sigana mah

Saatos urang ngonpigurasikeun INPUT, urang kedah ngartos kumaha pesen log bakal katingali sareng metode naon anu kedah dianggo pikeun ngonpigurasikeun saringan log (parser).

Jang ngalampahkeun ieu, kami bakal nganggo saringan anu ngahasilkeun hasil pikeun stdout pikeun ningali pesen asli; file konfigurasi lengkep ayeuna bakal siga kieu:

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

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

Jalankeun paréntah pikeun pariksa:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Kami ningali hasilna, gambarna tiasa diklik:

2. tumpukan elastis: analisis log kaamanan. Logstash

Upami anjeun nyalin éta bakal katingali sapertos kieu:

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,

Ningali pesen ieu, urang ngartos yen log kasampak kawas: sawah = nilai atawa konci = nilai, nu hartina filter disebut kv cocog. Dina raraga milih filter katuhu pikeun tiap kasus husus, éta bakal jadi mangrupakeun ide nu sae pikeun familiarize diri kalayan aranjeunna dina dokuméntasi teknis, atawa nanya ka babaturan.

Nyetél Filter

Dina tahap panungtungan kami milih kv, konfigurasi filter ieu dibere handap:

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

Urang milih simbol nu urang ngabagi widang jeung nilai - "=". Lamun urang boga éntri idéntik dina log, urang simpen ngan hiji conto dina database, disebutkeun anjeun bakal mungkas nepi ka Asép Sunandar Sunarya ti nilai idéntik, nyaeta, lamun urang boga pesen "foo = sababaraha foo = sababaraha" urang nulis ngan foo = sababaraha.

Nyetél Kaluaran anu leres dina ElasticSearch

Saatos Filter dikonpigurasi, anjeun tiasa unggah log kana pangkalan data élastis:

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

Lamun dokumén ditandatanganan kalawan tipe papariksaan, urang simpen acara ka database elasticsearch, nu narima sambungan on 10.10.1.200 on port 9200 sacara standar. Unggal dokumén disimpen kana indéks khusus, dina hal ieu urang simpen kana indéks "checkpoint-" + tanggal waktos ayeuna. Unggal indéks tiasa gaduh sakumpulan widang anu khusus, atanapi didamel sacara otomatis nalika kolom énggal muncul dina pesen; setélan lapangan sareng jinisna tiasa ditingali dina pemetaan.

Upami anjeun parantos ngonpigurasikeun auténtikasi (urang bakal ningali engké), kredensial pikeun nyerat kana indéks khusus kedah ditetepkeun, dina conto ieu nyaéta "tssolution" sareng kecap konci "cool". Anjeun tiasa ngabédakeun hak pangguna pikeun nyerat log ngan ukur kana indéks khusus sareng henteu deui.

Ngajalankeun Logstash.

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

Urang pariksa file konfigurasi pikeun correctness:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. tumpukan elastis: analisis log kaamanan. Logstash

Mimitian prosés Logstash:
sudo systemctl ngamimitian logstash

Kami pariksa yén prosésna parantos dimimitian:
sudo systemctl status logstash

2. tumpukan elastis: analisis log kaamanan. Logstash

Hayu urang pariksa naha stop kontak geus nepi:
netstat -nat |grep 5555

2. tumpukan elastis: analisis log kaamanan. Logstash

Mariksa log di Kibana.

Saatos sadayana jalan, angkat ka Kibana - Panggihan, pastikeun sadayana dikonpigurasi leres, gambarna tiasa diklik!

2. tumpukan elastis: analisis log kaamanan. Logstash

Sadaya log aya dina tempatna sareng urang tiasa ningali sadaya widang sareng nilaina!

kacindekan

Urang nempo kumaha carana nulis file konfigurasi Logstash, sarta salaku hasilna urang meunang parser sadaya widang jeung nilai. Ayeuna urang tiasa damel sareng milarian sareng ngarencanakeun widang khusus. Salajengna dina kursus urang bakal ningali visualisasi di Kibana sareng nyiptakeun dasbor saderhana. Perlu disebatkeun yén file konfigurasi Logstash kedah diénggalan terus-terusan dina kaayaan anu tangtu, contona, nalika urang badé ngagentos nilai lapangan tina angka kana kecap. Dina artikel salajengna urang bakal ngalakukeun ieu terus-terusan.

Jadi tetep awas (telegram, Facebook, VK, TS Solusi Blog), Yandex.Zen.

sumber: www.habr.com

Tambahkeun komentar