2. Tumpukan elastis: analisis log keamanan. Logstash

2. Tumpukan elastis: analisis log keamanan. Logstash

Ing pungkasan artikel kita ketemu ELK tumpukan, produk piranti lunak apa sing kalebu. Lan tugas pisanan sing diadhepi insinyur nalika nggarap tumpukan ELK yaiku ngirim log kanggo panyimpenan ing elasticsearch kanggo analisis sakteruse. Nanging, iki mung layanan lambe, elasticsearch nyimpen log ing wangun dokumen kanthi kolom lan nilai tartamtu, tegese insinyur kudu nggunakake macem-macem alat kanggo ngurai pesen sing dikirim saka sistem pungkasan. Iki bisa ditindakake kanthi sawetara cara - nulis program dhewe sing bakal nambah dokumen menyang database nggunakake API, utawa nggunakake solusi sing wis siap. Ing kursus iki kita bakal nimbang solusi Logstash, yaiku bagean saka tumpukan ELK. Kita bakal weruh carane kita bisa ngirim log saka sistem endpoint menyang Logstash, banjur kita bakal nyiyapake file konfigurasi kanggo parse lan pangalihan menyang database Elasticsearch. Kanggo nindakake iki, kita njupuk log saka firewall Check Point minangka sistem mlebu.

Kursus kasebut ora kalebu instalasi tumpukan ELK, amarga ana akeh artikel babagan topik iki, kita bakal nimbang komponen konfigurasi.

Ayo gawe rencana aksi kanggo konfigurasi Logstash:

  1. Priksa manawa elasticsearch bakal nampa log (mriksa fungsi lan keterbukaan port).
  2. We nimbang carane kita bisa ngirim acara kanggo Logstash, milih cara, lan ngleksanakake.
  3. Kita ngatur Input ing file konfigurasi Logstash.
  4. Kita ngatur Output ing file konfigurasi Logstash ing mode debug supaya ngerti apa pesen log katon.
  5. Nyetel Filter.
  6. Nyetel Output sing bener ing ElasticSearch.
  7. Logstash diluncurake.
  8. Priksa log ing Kibana.

Ayo ndeleng saben titik kanthi luwih rinci:

Priksa manawa elasticsearch bakal nampa log

Kanggo nindakake iki, sampeyan bisa nggunakake printah curl kanggo mriksa akses menyang Elasticsearch saka sistem sing dipasang Logstash. Yen sampeyan wis dikonfigurasi otentikasi, banjur kita uga nransfer pangguna / sandhi liwat curl, nemtokake port 9200 yen sampeyan durung ngganti. Yen sampeyan nampa respon sing padha karo sing ana ing ngisor iki, mula kabeh wis rapi.

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

Yen respon ora ditampa, bisa uga ana sawetara jinis kesalahan: proses elasticsearch ora mlaku, port sing salah ditemtokake, utawa port diblokir dening firewall ing server ing ngendi elasticsearch diinstal.

Ayo goleki carane sampeyan bisa ngirim log menyang Logstash saka firewall titik mriksa

Saka server manajemen Check Point sampeyan bisa ngirim log menyang Logstash liwat syslog nggunakake utilitas log_exporter, sampeyan bisa maca liyane babagan kene artikel, ing kene kita mung bakal ninggalake printah sing nggawe stream:

cp_log_export nambah jeneng check_point_syslog target-server < > target-port 5555 protokol tcp format umum maca-mode semi-unified

< > - alamat server sing Logstash mlaku, target-port 5555 - port sing bakal dikirim log, ngirim log liwat tcp bisa mbukak server, supaya ing sawetara kasus luwih bener nggunakake udp.

Nyetel INPUT ing file konfigurasi Logstash

2. Tumpukan elastis: analisis log keamanan. Logstash

Kanthi gawan, file konfigurasi dumunung ing direktori /etc/logstash/conf.d/. File konfigurasi kasusun saka 3 bagean sing migunani: INPUT, FILTER, OUTPUT. ING input kita nuduhake ngendi sistem bakal njupuk log saka, ing Nyaring parse log - nyiyapake carane dibagi pesen menyang kolom lan nilai, ing output kita ngatur stream output - ngendi log parsed bakal dikirim.

Pisanan, ayo ngatur INPUT, nimbang sawetara jinis sing bisa - file, tcp lan exe.

Tcp:

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

mode => "server"
Nuduhake yen Logstash nampa sambungan.

port => 5555
host => "10.10.1.205"
Kita nampa sambungan liwat alamat IP 10.10.1.205 (Logstash), port 5555 - port kudu diijini dening privasi firewall.

ngetik => "titik mriksa"
Kita menehi tandha dokumen kasebut, trep banget yen sampeyan duwe sawetara sambungan sing mlebu. Sabanjure, kanggo saben sambungan sampeyan bisa nulis filter dhewe nggunakake logika yen mbangun.

Gambar:

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

Katrangan saka setelan:
path => "/var/log/openvas_report/*"
Kita nuduhake direktori ing ngendi file kudu diwaca.

jinis => "openvas"
Jenis acara.

start_position => "wiwitan"
Nalika ngganti file, maca kabeh file; yen sampeyan nyetel "mburi", sistem ngenteni cathetan anyar katon ing mburi file.

Exec:

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

Nggunakake input iki, printah shell (mung!) diluncurake lan outpute diowahi dadi pesen log.

printah => "ls -alh"
Printah kang output kita kasengsem ing.

interval => 30
Interval invocation printah ing detik.

Kanggo nampa log saka firewall, kita ndhaftar filter tcp utawa udp, gumantung carane log dikirim menyang Logstash.

Kita ngatur Output ing file konfigurasi Logstash ing mode debug supaya ngerti apa pesen log katon

Sawise kita ngatur INPUT, kita kudu ngerti apa pesen log bakal katon lan cara apa sing kudu digunakake kanggo ngatur filter log (parser).

Kanggo nindakake iki, kita bakal nggunakake filter sing ngasilake asil kanggo stdout kanggo ndeleng pesen asli; file konfigurasi lengkap saiki bakal katon kaya iki:

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

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

Jalanake printah kanggo mriksa:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Kita ndeleng asil, gambar bisa diklik:

2. Tumpukan elastis: analisis log keamanan. Logstash

Yen sampeyan nyalin bakal katon kaya iki:

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,

Nggoleki pesen kasebut, kita ngerti manawa log katon kaya: lapangan = nilai utawa kunci = nilai, tegese saringan sing diarani kv cocok. Kanggo milih panyaring sing tepat kanggo saben kasus tartamtu, luwih becik sampeyan kenal karo wong-wong mau ing dokumentasi teknis, utawa takon kanca.

Nyetel Filter

Ing tahap pungkasan kita milih kv, konfigurasi filter iki ditampilake ing ngisor iki:

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

Kita milih simbol sing bakal dibagi lapangan lan nilai - "=". Yen kita duwe entri podho rupo ing log, kita nyimpen mung siji Kayata ing database, digunakake sampeyan bakal mungkasi munggah karo Uploaded nilai podho rupo, sing, yen kita duwe pesen "foo = sawetara foo = sawetara" kita nulis mung foo = sawetara.

Nyetel Output sing bener ing ElasticSearch

Sawise Filter dikonfigurasi, sampeyan bisa ngunggah log menyang database elastisark:

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

Yen dokumen kasebut ditandatangani karo jinis checkpoint, kita nyimpen acara kasebut menyang database elasticsearch, sing nampa sambungan ing 10.10.1.200 ing port 9200 kanthi standar. Saben dokumen disimpen ing indeks tartamtu, ing kasus iki kita simpen ing indeks "checkpoint-" + tanggal wektu saiki. Saben indeks bisa duwe set kolom tartamtu, utawa digawe kanthi otomatis nalika kolom anyar katon ing pesen; setelan lapangan lan jinise bisa dideleng ing pemetaan.

Yen sampeyan wis dikonfigurasi otentikasi (kita bakal nliti mengko), kredensial kanggo nulis menyang indeks tartamtu kudu ditemtokake, ing conto iki "tssolution" karo sandi "kelangan". Sampeyan bisa mbedakake hak pangguna kanggo nulis log mung kanggo indeks tartamtu lan ora luwih.

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

Kita mriksa file konfigurasi kanggo bener:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Tumpukan elastis: analisis log keamanan. Logstash

Miwiti proses Logstash:
sudo systemctl miwiti logstash

Kita mriksa manawa proses wis diwiwiti:
sudo systemctl status logstash

2. Tumpukan elastis: analisis log keamanan. Logstash

Ayo priksa manawa soket munggah:
netstat -nat |grep 5555

2. Tumpukan elastis: analisis log keamanan. Logstash

Priksa log ing Kibana.

Sawise kabeh mlaku, pindhah menyang Kibana - Temokake, priksa manawa kabeh wis dikonfigurasi kanthi bener, gambar bisa diklik!

2. Tumpukan elastis: analisis log keamanan. Logstash

Kabeh log wis ana lan kita bisa ndeleng kabeh lapangan lan nilai-nilai kasebut!

kesimpulan

Kita nyawang carane nulis file konfigurasi Logstash, lan minangka asil kita entuk parser kabeh kolom lan nilai. Saiki kita bisa nggoleki lan ngrancang lapangan tartamtu. Sabanjure ing Course kita bakal katon ing visualisasi ing Kibana lan nggawe dashboard prasaja. Wigati dimangerteni manawa file konfigurasi Logstash kudu terus dianyari ing kahanan tartamtu, umpamane, nalika kita pengin ngganti nilai lapangan saka nomer menyang tembung. Ing artikel sabanjure kita bakal nindakake iki terus-terusan.

Dadi tetep dirungokake (Telegram, Facebook, VK, Blog Solusi TS), Yandex Zen.

Source: www.habr.com

Add a comment