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'ка журналдарды жөнөтө аласыз, бул тууралуу кененирээк бул жерден окуй аласыз макала, бул жерде биз агымды түзгөн буйрукту гана калтырабыз:

cp_log_export атын кошуу check_point_syslog target-server < > максаттуу порт 5555 протоколу tcp форматы жалпы окуу режими жарым унификацияланган

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

Logstash конфигурация файлында INPUT орнотулууда

2. Эластик стек: коопсуздук журналдарын талдоо. Logstash

Демейки боюнча, конфигурация файлы /etc/logstash/conf.d/ каталогунда жайгашкан. Конфигурация файлы 3 маанилүү бөлүктөн турат: INPUT, FILTER, OUTPUT. IN КИРГИЗҮҮ система журналдарды кайдан алаарын көрсөтөбүз FILTER журналды талдоо - билдирүүнү талааларга жана баалуулуктарга кантип бөлүүнү орнотуу, ичинде OUTPUT биз чыгаруу агымын конфигурациялайбыз - талданган журналдар кайда жөнөтүлөт.

Биринчиден, 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 порту аркылуу байланыштарды кабыл алабыз - порт брандмауэр саясаты тарабынан уруксат берилиши керек.

type => "текшерүү пункту"
Биз документти белгилейбиз, эгерде сизде бир нече кирүүчү байланыштар болсо, абдан ыңгайлуу. Андан кийин, ар бир туташуу үчүн логикалык if конструкциясы аркылуу өз чыпкаңызды жаза аласыз.

File:

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

Орнотуулардын сүрөттөлүшү:
path => "/var/log/openvas_report/*"
Биз файлдарды окуу керек болгон каталогду көрсөтөбүз.

type => "openvas"
Окуя түрү.

start_position => "баштоо"
Файлды өзгөрткөндө, ал бүт файлды окуйт; эгер сиз "аягы" деп койсоңуз, система файлдын аягында жаңы жазуулардын пайда болушун күтөт.

Exec:

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

Бул киргизүүнү колдонуу менен (гана!) кабык буйругу ишке киргизилет жана анын чыгышы журнал билдирүүсүнө айланат.

команда => "ls -alh"
Чыгуусу бизди кызыктырган команда.

интервал => 30
Буйруктарды чакыруу аралыгы секундалардагы.

Брандмауэрден журналдарды алуу үчүн биз фильтрди каттайбыз tcp же пуд, журналдар 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 деп аталган чыпка ылайыктуу дегенди билдирет. Ар бир конкреттүү учур үчүн туура фильтрди тандоо үчүн, алар менен техникалык документтерде таанышып же досуңуздан сурасаңыз жакшы болмок.

Фильтр орнотулууда

Акыркы этапта биз кв тандап алганбыз, бул чыпканын конфигурациясы төмөндө келтирилген:

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

Биз талааны жана маанини бөлүүчү символду тандайбыз - “=”. Эгерде журналда бизде окшош жазуулар болсо, биз маалымат базасында бир гана нусканы сактайбыз, антпесе, сиз бирдей маанилердин массивине ээ болосуз, башкача айтканда, бизде “foo = some foo=some” деген билдирүү болсо, биз foo гана жазабыз. = кээ бир.

ElasticSearch'те туура Чыгууну орнотуу

Чыпка конфигурациялангандан кийин, сиз маалымат базасына журналдарды жүктөй аласыз 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 баштоо logstash

Процесс башталганын текшеребиз:
sudo systemctl статус журналы

2. Эластик стек: коопсуздук журналдарын талдоо. Logstash

розетка ачык экенин текшерип көрөлү:
netstat -nat |grep 5555

2. Эластик стек: коопсуздук журналдарын талдоо. Logstash

Кибанадагы журналдарды текшерүү.

Баары иштеп бүткөндөн кийин, Кибанага өтүңүз - Discover, бардыгы туура конфигурацияланганын, сүрөт чыкылдатылышын текшериңиз!

2. Эластик стек: коопсуздук журналдарын талдоо. Logstash

Бардык журналдар ордунда жана биз бардык талааларды жана алардын баалуулуктарын көрө алабыз!

жыйынтыктоо

Биз Logstash конфигурация файлын кантип жазууну карап чыктык, натыйжада бардык талаалардын жана баалуулуктардын талдоочусуна ээ болдук. Эми биз конкреттүү талааларды издөө жана пландоо менен иштей алабыз. Кийинки курста биз Кибанадагы визуализацияны карап, жөнөкөй башкаруу тактасын түзөбүз. Белгилей кетчү нерсе, Logstash конфигурация файлы белгилүү бир кырдаалдарда, мисалы, биз талаанын маанисин сандан сөзгө алмаштыргыбыз келгенде, дайыма жаңыланып турушу керек. Кийинки макалаларда биз муну дайыма жасайбыз.

Андыктан кабардар болуңузтелеграмма, Facebook, VK, TS Solution блогу), Yandeks.Dzen.

Source: www.habr.com

Комментарий кошуу