2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Oxirida maqola uchrashdik ELK to'plami, u qanday dasturiy mahsulotlardan iborat. ELK stek bilan ishlashda muhandis duch keladigan birinchi vazifa jurnallarni elasticsearch-da saqlash uchun keyingi tahlil qilish uchun yuborishdir. Biroq, bu shunchaki lab xizmati, elasticsearch jurnallarni ma'lum maydonlar va qiymatlarga ega hujjatlar shaklida saqlaydi, ya'ni muhandis oxirgi tizimlardan yuborilgan xabarni tahlil qilish uchun turli xil vositalardan foydalanishi kerak. Buni bir necha usul bilan amalga oshirish mumkin - API yordamida ma'lumotlar bazasiga hujjatlar qo'shadigan dasturni o'zingiz yozing yoki tayyor echimlardan foydalaning. Ushbu kursda biz yechimni ko'rib chiqamiz logstash, bu ELK stekining bir qismidir. Biz loglarni so'nggi nuqta tizimlaridan Logstash-ga qanday yuborishimiz mumkinligini ko'rib chiqamiz va keyin Elasticsearch ma'lumotlar bazasiga tahlil qilish va qayta yo'naltirish uchun konfiguratsiya faylini o'rnatamiz. Buning uchun biz kirish tizimi sifatida Check Point xavfsizlik devoridan jurnallarni olamiz.

Kurs ELK stekini o'rnatishni o'z ichiga olmaydi, chunki ushbu mavzu bo'yicha juda ko'p maqolalar mavjud, biz konfiguratsiya komponentini ko'rib chiqamiz.

Logstash konfiguratsiyasi uchun harakatlar rejasini tuzamiz:

  1. Elasticsearch jurnallarni qabul qilishini tekshirish (portning funksionalligi va ochiqligini tekshirish).
  2. Logstash-ga voqealarni qanday yuborishimiz, usulni tanlashimiz va uni amalga oshirishimiz mumkinligini ko'rib chiqamiz.
  3. Logstash konfiguratsiya faylida Input ni sozlaymiz.
  4. Jurnal xabari qanday ko'rinishini tushunish uchun biz disk raskadrovka rejimida Logstash konfiguratsiya faylida Chiqishni sozlaymiz.
  5. Filtrni sozlash.
  6. ElasticSearch-da to'g'ri chiqishni o'rnatish.
  7. Logstash ishga tushadi.
  8. Kibanadagi jurnallarni tekshirish.

Keling, har bir nuqtani batafsil ko'rib chiqaylik:

Elasticsearch jurnallarni qabul qilishini tekshirish

Buni amalga oshirish uchun Logstash o'rnatilgan tizimdan Elasticsearch-ga kirishni tekshirish uchun curl buyrug'idan foydalanishingiz mumkin. Agar sizda autentifikatsiya sozlangan bo'lsa, biz foydalanuvchi/parolni ham curl orqali o'tkazamiz, agar siz uni o'zgartirmagan bo'lsangiz, 9200 portini ko'rsatamiz. Agar siz quyidagi javobga o'xshash javob olsangiz, unda hamma narsa tartibda.

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

Agar javob olinmasa, unda bir necha turdagi xatolar bo'lishi mumkin: elasticsearch jarayoni ishlamayapti, noto'g'ri port ko'rsatilgan yoki port elasticsearch o'rnatilgan serverdagi xavfsizlik devori tomonidan bloklangan.

Logstash-ga tekshirish nuqtasi xavfsizlik devoridan qanday qilib jurnallarni yuborishingiz mumkinligini ko'rib chiqaylik

Check Point boshqaruv serveridan log_exporter yordam dasturidan foydalangan holda syslog orqali Logstash-ga jurnallarni yuborishingiz mumkin, bu haqda ko'proq ma'lumot olishingiz mumkin. maqola, bu erda biz faqat oqim yaratuvchi buyruqni qoldiramiz:

cp_log_export check_point_syslog target-server < nomini qo'shing > maqsadli port 5555 protokoli tcp formati umumiy o'qish rejimi yarim birlashtirilgan

< > - Logstash ishlaydigan server manzili, maqsadli port 5555 - biz jurnallarni yuboradigan port, tcp orqali jurnallarni yuborish serverni yuklashi mumkin, shuning uchun ba'zi hollarda udp dan foydalanish to'g'riroq.

Logstash konfiguratsiya faylida INPUT ni sozlash

2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Odatiy bo'lib, konfiguratsiya fayli /etc/logstash/conf.d/ katalogida joylashgan. Konfiguratsiya fayli 3 ta mazmunli qismdan iborat: INPUT, FILTER, OUTPUT. IN INPUT tizim jurnallarni qayerdan olishini ko'rsatamiz Filtrni jurnalni tahlil qilish - xabarni maydonlar va qiymatlarga qanday ajratishni sozlash OUTPUT biz chiqish oqimini sozlaymiz - bu erda tahlil qilingan jurnallar yuboriladi.

Birinchidan, INPUT ni sozlaymiz, ba'zi bo'lishi mumkin bo'lgan turlarni ko'rib chiqamiz - fayl, tcp va exe.

TCP:

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

rejim => "server"
Logstash ulanishlarni qabul qilishini bildiradi.

port => 5555
xost => β€œ10.10.1.205”
Biz ulanishlarni 10.10.1.205 (Logstash) IP manzili, 5555 porti orqali qabul qilamiz - portga xavfsizlik devori siyosati tomonidan ruxsat berilishi kerak.

turi => "nazorat nuqtasi"
Biz hujjatni belgilaymiz, agar sizda bir nechta kiruvchi ulanishlar bo'lsa, juda qulay. Keyinchalik, har bir ulanish uchun mantiqiy if konstruktsiyasidan foydalanib, o'z filtringizni yozishingiz mumkin.

Fayl:

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

Sozlamalar tavsifi:
yo'l => "/var/log/openvas_report/*"
Biz fayllarni o'qish kerak bo'lgan katalogni ko'rsatamiz.

turi => "openvas"
Tadbir turi.

start_position => "boshlanish"
Faylni o'zgartirganda, u butun faylni o'qiydi; agar siz "tugatish" ni o'rnatsangiz, tizim fayl oxirida yangi yozuvlar paydo bo'lishini kutadi.

Exec:

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

Ushbu kiritish yordamida (faqat!) qobiq buyrug'i ishga tushiriladi va uning chiqishi jurnal xabariga aylanadi.

buyruq => "ls -alh"
Bizni chiqishi qiziqtirgan buyruq.

interval => 30
Buyruqni chaqirish oralig'i soniyalarda.

Xavfsizlik devoridan jurnallarni olish uchun biz filtrni ro'yxatdan o'tkazamiz tcp yoki pud, jurnallar Logstash-ga qanday yuborilganiga qarab.

Jurnal xabari qanday ko'rinishini tushunish uchun disk raskadrovka rejimida Logstash konfiguratsiya faylida Chiqishni sozlaymiz.

INPUT ni sozlaganimizdan so'ng, jurnal xabari qanday ko'rinishini va jurnal filtrini (parser) sozlash uchun qanday usullardan foydalanish kerakligini tushunishimiz kerak.

Buning uchun biz asl xabarni ko'rish uchun natijani stdout-ga chiqaradigan filtrdan foydalanamiz; hozirda to'liq konfiguratsiya fayli quyidagicha ko'rinadi:

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

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

Tekshirish uchun buyruqni bajaring:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Natijani ko'ramiz, rasmni bosish mumkin:

2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Agar siz undan nusxa ko'chirsangiz, u quyidagicha ko'rinadi:

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,

Ushbu xabarlarga qarab, jurnallar quyidagicha ko'rinishini tushunamiz: maydon = qiymat yoki kalit = qiymat, ya'ni kv deb nomlangan filtr mos keladi. Har bir aniq holat uchun to'g'ri filtrni tanlash uchun ular bilan texnik hujjatlarda tanishish yoki do'stingizdan so'rash yaxshi bo'lar edi.

Filtrni sozlash

Oxirgi bosqichda biz kv ni tanladik, ushbu filtrning konfiguratsiyasi quyida keltirilgan:

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

Biz maydon va qiymatni ajratadigan belgini tanlaymiz - "=". Jurnalda bir xil yozuvlar mavjud bo'lsa, biz ma'lumotlar bazasida faqat bitta misolni saqlaymiz, aks holda siz bir xil qiymatlar qatoriga ega bo'lasiz, ya'ni "foo = some foo = some" xabariga ega bo'lsak, biz faqat foo yozamiz. = ba'zi.

ElasticSearch-da to'g'ri chiqishni o'rnatish

Filtr sozlangandan so'ng, ma'lumotlar bazasiga jurnallarni yuklashingiz mumkin elastika:

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

Agar hujjat nazorat nuqtasi turi bilan imzolangan bo'lsa, biz hodisani sukut bo'yicha 10.10.1.200 portida 9200 da ulanishlarni qabul qiladigan elasticsearch ma'lumotlar bazasiga saqlaymiz. Har bir hujjat ma'lum bir indeksda saqlanadi, bu holda biz "nazorat nuqtasi-" indeksiga + joriy vaqt sanasini saqlaymiz. Har bir indeksda ma'lum maydonlar to'plami bo'lishi mumkin yoki xabarda yangi maydon paydo bo'lganda avtomatik ravishda yaratiladi; maydon sozlamalari va ularning turini xaritalashda ko'rish mumkin.

Agar sizda autentifikatsiya sozlangan bo'lsa (biz uni keyinroq ko'rib chiqamiz), ma'lum bir indeksga yozish uchun hisob ma'lumotlari ko'rsatilishi kerak, bu misolda bu "salqin" paroli bilan "tssolution". Jurnallarni faqat ma'lum bir indeksga yozish uchun foydalanuvchi huquqlarini farqlashingiz mumkin va bundan ortiq emas.

Logstash-ni ishga tushiring.

Logstash konfiguratsiya fayli:

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

Konfiguratsiya faylining to'g'riligini tekshiramiz:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Logstash jarayonini boshlang:
sudo systemctl boshlash logstash

Jarayon boshlanganligini tekshiramiz:
sudo systemctl status logstash

2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Keling, rozetka yoqilganligini tekshirib ko'ramiz:
netstat -nat |grep 5555

2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Kibanadagi jurnallarni tekshirish.

Hammasi ishlagandan so'ng, Kibana - Discover-ga o'ting, hamma narsa to'g'ri sozlanganligiga ishonch hosil qiling, rasmni bosish mumkin!

2. Elastik stek: xavfsizlik jurnallarini tahlil qilish. Logstash

Barcha jurnallar joyida va biz barcha maydonlarni va ularning qiymatlarini ko'rishimiz mumkin!

xulosa

Biz Logstash konfiguratsiya faylini qanday yozishni ko'rib chiqdik va natijada biz barcha maydonlar va qiymatlarning tahlilchisiga ega bo'ldik. Endi biz aniq maydonlarni qidirish va chizish bilan ishlashimiz mumkin. Keyingi kursda biz Kibanadagi vizualizatsiyani ko'rib chiqamiz va oddiy asboblar panelini yaratamiz. Shuni ta'kidlash kerakki, Logstash konfiguratsiya fayli muayyan holatlarda, masalan, biz maydon qiymatini raqamdan so'zga almashtirmoqchi bo'lganimizda doimiy ravishda yangilanishi kerak. Keyingi maqolalarda biz buni doimiy ravishda qilamiz.

Shuning uchun bizni kuzatib boringTelegram, Facebook, VK, TS yechimlari blogi), Yandex Zen.

Manba: www.habr.com

a Izoh qo'shish