2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Хамгийн сүүлд нийтлэл бид уулзсан ELK стекямар програм хангамжийн бүтээгдэхүүнээс бүрддэг. ELK стектэй ажиллах үед инженерийн өмнө тулгардаг хамгийн эхний ажил бол логуудыг elasticsearch-д хадгалах зорилгоор цаашдын дүн шинжилгээ хийх явдал юм. Гэсэн хэдий ч энэ нь зүгээр л үгээр хэлбэл, elasticsearch нь логуудыг тодорхой талбар, утга бүхий баримт бичгийн хэлбэрээр хадгалдаг бөгөөд энэ нь инженер эцсийн системээс илгээсэн мессежийг задлан шинжлэхийн тулд янз бүрийн хэрэгслийг ашиглах ёстой гэсэн үг юм. Үүнийг хийх хэд хэдэн арга байдаг - API ашиглан мэдээллийн санд баримт нэмэх эсвэл бэлэн шийдлүүдийг ашиглах програмыг өөрөө бичээрэй. Энэ хичээлээр бид шийдлийг авч үзэх болно Logstash, энэ нь ELK стекийн нэг хэсэг юм. Төгсгөлийн системээс Logstash руу логуудыг хэрхэн илгээж болохыг харж, дараа нь Elasticsearch мэдээллийн сан руу задлан шинжлэх, дахин чиглүүлэх тохиргооны файлыг тохируулах болно. Үүнийг хийхийн тулд бид Check Point галт хананаас логуудыг ирж буй систем болгон авдаг.

Энэ курс нь ELK стекийг суулгахад ороогүй болно, учир нь энэ сэдвээр маш олон нийтлэл байгаа тул бид тохиргооны бүрэлдэхүүн хэсгийг авч үзэх болно.

Logstash-ийг тохируулах үйл ажиллагааны төлөвлөгөө гаргацгаая:

  1. Elasticsearch нь бүртгэлийг хүлээн авах болно гэдгийг шалгах (портын эрүүл мэнд, нээлттэй байдлыг шалгах).
  2. Бид Logstash руу үйл явдлуудыг хэрхэн илгээх, арга сонгох, хэрэгжүүлэх талаар бодож үздэг.
  3. Logstash тохиргооны файлд оролтыг тохируулна уу.
  4. Лог мессеж ямар харагдахыг ойлгохын тулд бид Logstash тохиргооны файлд Гаралтыг дибаг хийх горимд тохируулсан.
  5. Шүүлтүүрийг тохируулах.
  6. ElasticSearch дээр зөв гаралтыг тохируулна уу.
  7. Logstash ажиллуулж байна.
  8. Кибана дахь бүртгэлийг шалгаж байна.

Зүйл бүрийг илүү нарийвчлан авч үзье:

Elasticsearch нь бүртгэлийг хүлээн авах болно гэдгийг шалгана уу

Үүнийг хийхийн тулд та Logstash суулгасан системээс Elasticsearch руу хандах хандалтыг curl командын тусламжтайгаар шалгаж болно. Хэрэв та нэвтрэлт танилтыг тохируулсан бол бид хэрэглэгч / нууц үгийг curl-ээр дамжуулж, хэрэв та үүнийг өөрчлөөгүй бол 9200 портыг зааж өгнө үү. Хэрэв танд доорх шиг хариу ирсэн бол бүх зүйл эмх цэгцтэй байна.

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

Хэрэв хариулт ирэхгүй бол хэд хэдэн төрлийн алдаа гарч болзошгүй: elasticsearch процесс ажиллахгүй байна, буруу порт зааж өгсөн эсвэл портыг elasticsearch суулгасан сервер дээрх галт ханаар хаасан байна.

Шалгах цэгийн галт ханаас Logstash руу хэрхэн лог илгээх боломжтойг авч үзье

Check Point удирдлагын серверээс та log_exporter хэрэглүүрийг ашиглан syslog-ээр дамжуулан Logstash руу лог илгээх боломжтой бөгөөд энэ талаар дэлгэрэнгүй унших боломжтой. нийтлэл, энд бид зөвхөн thread үүсгэх командыг үлдээнэ:

cp_log_export нэмэх нэр check_point_syslog зорилтот сервер < > зорилтот порт 5555 протокол tcp формат ерөнхий унших горим хагас нэгдсэн

< > - Logstash ажиллаж байгаа серверийн хаяг, зорилтот порт 5555 - бидний лог илгээх порт, tcp-ээр лог илгээх нь серверийг ачаалж болох тул зарим тохиолдолд udp-г тохируулах нь илүү зөв байдаг.

Logstash тохиргооны файлд INPUT-г тохируулж байна

2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Анхдагч байдлаар, тохиргооны файл нь /etc/logstash/conf.d/ директорт байрладаг. Тохиргооны файл нь INPUT, FILTER, OUTPUT гэсэн 3 чухал хэсгээс бүрдэнэ. IN INPUT Бид систем хаанаас бүртгэл авахыг зааж өгдөг FILTER parsim log - мессежийг талбар болон утгуудад хэрхэн хуваахыг тохируулах ГАРАЛТ гарч буй урсгалыг тохируулах - задлан шинжилсэн бүртгэлийг хаана илгээх болно.

Эхлээд INPUT-г тохируулъя, файл, tcp, exe байж болох зарим төрлийг авч үзье.

tcp:

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

горим => "сервер"
Logstash-д холболтыг хүлээн авахыг хэлнэ.

порт => 5555
хост => "10.10.1.205"
Бид 10.10.1.205 (Logstash) IP хаяг, 5555 портын холболтыг хүлээн авдаг - портыг галт ханын бодлогоор зөвшөөрсөн байх ёстой.

төрөл => "хяналтын цэг"
Бид баримт бичгийг тэмдэглэдэг, хэрэв та хэд хэдэн ирж буй холболттой бол энэ нь маш тохиромжтой. Дараа нь холболт бүрийн хувьд логик if Build-ийг ашиглан өөрийн шүүлтүүрийг бичиж болно.

Файл:

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

Тохиргооны тайлбар:
зам => "/var/log/openvas_report/*"
Файлуудыг унших директорийг зааж өгнө үү.

төрөл => "openvas"
Үйл явдлын төрөл.

эхлэл_байрлал => "эхлэл"
Файлыг өөрчлөх үед энэ нь файлыг бүхэлд нь уншдаг бөгөөд хэрэв та "төгсгөл" гэж тохируулсан бол систем нь файлын төгсгөлд шинэ бичлэг гарч ирэхийг хүлээнэ.

Гүйцэтгэх:

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

Энэ оролт дээр (зөвхөн!) бүрхүүлийн командыг ажиллуулж, түүний гаралтыг лог зурваст ороосон байна.

тушаал => "ls -alh"
Гаралт нь бидний сонирхож буй тушаал.

интервал => 30
Командын дуудлагын интервал секундээр.

Галт хананаас лог хүлээн авахын тулд бид шүүлтүүрийг зааж өгдөг tcp буюу udp, бүртгэлийг Logstash руу хэрхэн илгээж байгаагаас хамаарна.

Лог мессеж ямар харагдахыг ойлгохын тулд Logstash тохиргооны файлд Гаралтыг дибаг хийх горимд тохируулна уу

INPUT-г тохируулсны дараа бид бүртгэлийн мессеж хэрхэн харагдахыг, бүртгэлийн шүүлтүүрийг (парсер) тохируулахын тулд ямар аргыг ашиглах ёстойг ойлгох хэрэгтэй.

Үүнийг хийхийн тулд бид анхны мессежийг үзэхийн тулд stdout-д үр дүнг өгдөг шүүлтүүрийг ашиглах болно, одоогоор бүрэн тохиргооны файл дараах байдлаар харагдах болно.

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

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

Би шалгахын тулд тушаалыг ажиллуулж байна:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
Бид үр дүнг харж байна, зураг дээр дарж болно:

2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Хэрэв хуулсан бол дараах байдлаар харагдах болно.

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,

Мессежийн өгөгдлийг харахад логууд нь: талбар = утга эсвэл түлхүүр = утга гэж харагддаг бөгөөд энэ нь kv гэж нэрлэгддэг шүүлтүүр тохиромжтой гэсэн үг юм. Тодорхой тохиолдол бүрт тохирох шүүлтүүрийг сонгохын тулд техникийн баримт бичигт тэдэнтэй танилцах эсвэл найзаасаа асуух нь сайхан байх болно.

Шүүлтүүрийг тохируулж байна

Сүүлийн шатанд kv-г сонгосон бөгөөд энэ шүүлтүүрийн тохиргоо дараах байдалтай байна.

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

Бид талбар болон утгыг хуваах тэмдгийг сонгоно - "=". Хэрэв бид бүртгэлд ижил оруулгууд байгаа бол бид мэдээллийн санд зөвхөн нэг жишээг хадгалдаг, эс тэгвээс та ижил утгуудын массивыг авах болно, өөрөөр хэлбэл "foo = some foo = some" гэсэн мессеж байвал бид зөвхөн foo = гэж бичнэ. зарим.

ElasticSearch дээр зөв гаралтыг тохируулж байна

Шүүлтүүрийг тохируулсны дараа та логуудыг мэдээллийн санд байршуулж болно эластик хайлт:

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

Хэрэв баримт бичигт хяналтын цэгийн төрлөөр гарын үсэг зурсан бол бид үйл явдлыг өгөгдмөлөөр 10.10.1.200 порт дээр 9200-ны холболтыг хүлээн авдаг elasticsearch мэдээллийн санд хадгалдаг. Баримт бичиг бүрийг тодорхой индекст хадгалдаг бөгөөд энэ тохиолдолд бид үүнийг "шалгах цэг-" индекс + одоогийн цагийн огноонд хадгалдаг. Индекс бүр тодорхой талбартай байж болно, эсвэл зурваст шинэ талбар гарч ирэхэд автоматаар үүсдэг, талбарын тохиргоо, тэдгээрийн төрлийг зураглалаас олж болно.

Хэрэв та баталгаажуулалтыг тохируулсан бол (бид дараа нь ярих болно) тодорхой индекс рүү бичихийн тулд кредитийг зааж өгөх ёстой бөгөөд энэ жишээнд "cool" нууц үгтэй "tssolution" болно. Та хэрэглэгчийн бүртгэлийг зөвхөн тодорхой индексээр бичих эрхийг хязгаарлаж болно, үүнээс илүүгүй.

Logstash-ийг ажиллуул.

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

Тохируулгын файлыг зөв эмхэтгэсэн эсэхийг шалгана уу:
/usr/share/logstash/bin//logstash -f checkpoint.conf
2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Logstash процессыг эхлүүлэх:
sudo systemctl start logstash

Процесс эхэлсэн эсэхийг шалгана уу:
sudo systemctl статус logstash

2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Сокет залгасан эсэхийг шалгана уу:
netstat -nat |grep 5555

2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Кибана дахь бүртгэлийг шалгаж байна.

Бүх зүйл ажиллаж дууссаны дараа Кибана руу очно уу - Discover, бүх зүйл зөв тохируулагдсан эсэхийг шалгаарай, зураг дээр дарж болно!

2. Уян хатан стек: хамгаалалтын бүртгэлийн дүн шинжилгээ. logstash

Бүх бүртгэлүүд байгаа бөгөөд бид бүх талбарууд болон тэдгээрийн утгыг харж болно!

дүгнэлт

Бид Logstash тохиргооны файлыг хэрхэн бичих талаар судалж үзсэний үр дүнд бид бүх талбар болон утгуудын задлан шинжлэгчтэй болсон. Одоо бид тодорхой талбаруудыг хайж, зурах боломжтой. Дараа нь бид Кибана дахь дүрслэлийг харж, энгийн хяналтын самбар үүсгэх болно. Logstash тохиргооны файлыг тодорхой нөхцөл байдалд, жишээлбэл, талбарын утгыг тооноос үг болгон өөрчлөхийг хүссэн үед байнга шинэчлэгдэж байх шаардлагатай гэдгийг дурдах нь зүйтэй. Дараагийн нийтлэлүүдэд бид үүнийг байнга хийх болно.

Тиймээс бидэнтэй хамт байгаарайцахилгаан, Facebook-ийн, VK, TS шийдлийн блог), Yandex Zen.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх