2. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

2. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ познакомились со стСком ELK, ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΎΠ½ состоит. И пСрвая Π·Π°Π΄Π°Ρ‡Π° с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сталкиваСтся ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ELK стСком это ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² для хранСния Π² elasticsearch для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Однако, это просто лишь Π½Π° словах, elasticsearch Ρ…Ρ€Π°Π½ΠΈΡ‚ Π»ΠΎΠ³ΠΈ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ полями ΠΈ значСниями, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ отправляСтся с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… систСм. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ нСсколькими способами β€” самому Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΏΠΎ API Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Π±Π°Π·Ρƒ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ курса ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Logstash, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ELK stack. ΠœΡ‹ посмотрим ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… систСм Π² Logstash, Π° Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для парсинга ΠΈ пСрСнаправлСния Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Elasticsearch. Для этого Π² качСствС входящСй систСмы Π±Π΅Ρ€Π΅ΠΌ Π»ΠΎΠ³ΠΈ с мСТсСтСвого экрана Check Point.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… курса Π½Π΅ рассматриваСтся установка ELK stack, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сущСствуСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство статСй Π½Π° эту Ρ‚Π΅ΠΌΡƒ, Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ.

Боставим ΠΏΠ»Π°Π½ дСйствий ΠΏΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Logstash:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Ρ‚ΠΎ elasticsearch Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° работоспособности ΠΈ открытости ΠΏΠΎΡ€Ρ‚Π°).
  2. РассматриваСм ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ события Π² Logstash, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ способ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ.
  3. НастраиваСм Input Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Logstash.
  4. НастраиваСм Output Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Logstash Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅Π±Π°Π³Π°, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ выглядит Π»ΠΎΠ³ сообщСниС.
  5. НастраиваСм Filter.
  6. НастраиваСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Output Π² ElasticSearch.
  7. Запускам Logstash.
  8. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ Π² Kibana.

Рассмотрим Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Ρ‚ΠΎ elasticsearch Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ

Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ curl доступ Π² Elasticsearch ΠΈΠ· систСмы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ Logstash. Если Ρƒ вас настроСна аутСнтификация, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· 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

Π‘ Check Point management server ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Π² Logstash Ρ‡Π΅Ρ€Π΅Π· syslog, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ log_exporter, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π½Π΅ΠΉ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, здСсь оставим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ которая создаСт ΠΏΠΎΡ‚ΠΎΠΊ:

cp_log_export add name check_point_syslog target-server <<ip_address_logstash>> target-port 5555 protocol tcp format generic read-mode semi-unified

<<ip_address_logstash>> β€” адрСс сСрвСра Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ крутится Logstash, target-port 5555 β€” ΠΏΠΎΡ€Ρ‚ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ tcp ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ сСрвСр, поэтому Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ udp.

НастраиваСм INPUT Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Logstash

2. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» находится Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /etc/logstash/conf.d/. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» состоит ΠΈΠ· 3 осмыслСнных частСй: INPUT, FILTER, OUTPUT. Π’ INPUT ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΡ‚ΠΊΡƒΠ΄Π° систСма Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ, Π² FILTER парсим Π»ΠΎΠ³ β€” настраиваСм ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ сообщСниС Π½Π° поля ΠΈ значСния, Π² OUTPUT настраиваСм выходящий ΠΏΠΎΡ‚ΠΎΠΊ β€” ΠΊΡƒΠ΄Π° распарсСнныС Π»ΠΎΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ.

Π‘Π½Π°Ρ‡Π°Π»Π° настроим INPUT, рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ β€” file, tcp ΠΈ exe.

Tcp:

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

mode => Β«serverΒ»
Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Logstash ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСния.

port => 5555
host => β€œ10.10.1.205”
ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ соСдинСния ΠΏΠΎ IP адрСсу 10.10.1.205 (Logstash), ΠΏΠΎΡ€Ρ‚ 5555 β€” ΠΏΠΎΡ€Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Ρ„Π°Π΅Ρ€Π²ΠΎΠ»Π°.

type => Β«checkpointΒ»
ΠœΠ°Ρ€ΠΊΠΈΡ€ΡƒΠ΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π² случаС Ссли Ρƒ вас нСсколько входящих соСдинСний. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ соСдинСния ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ логичСской конструкции if.

File:

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

ОписаниС настроСк:
path => «/var/log/openvas_report/*»
Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

type => Β«openvasΒ»
Π’ΠΈΠΏ события.

start_position => Β«beginningΒ»
ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° считываСт Ρ„Π°ΠΉΠ» Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ссли Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Β«endΒ» Ρ‚ΠΎ систСма ΠΆΠ΄Π΅Ρ‚ появлСния Π½ΠΎΠ²Ρ‹Ρ… записСй Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π°.

Exec:

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

По Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΈΠ½ΠΏΡƒΡ‚Ρƒ запускаСтся (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ!) shell ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ оборачиваСтся Π² Π»ΠΎΠ³ сообщСниС.

command => Β«ls -alhΒ»
Команда, Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нас интСрСсуСт.

interval => 30
Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² сСкундах.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ с мСТсСтСвого экрана прописываСм Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ tcp ΠΈΠ»ΠΈ udp, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠ³ΠΈ Π² Logstash.

НастраиваСм Output Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ 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. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². 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,

Бмотря Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ сообщСния, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π»ΠΎΠ³ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄: ΠΏΠΎΠ»Π΅ = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ key = value, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся kv. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ с Π½ΠΈΠΌΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² тСхничСской Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π»ΠΈΠ±ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³Π°.

НастраиваСм Filter

На ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ этапС Π²Ρ‹Π±Ρ€Π°Π»ΠΈ kv, Π΄Π°Π»Π΅Π΅ прСдставлСна конфигурация этого Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°:

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

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ символ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” β€œ=”. Если Ρƒ нас Π΅ΡΡ‚ΡŒ Π² Π»ΠΎΠ³Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ записи, сохраняСм Π² Π±Π°Π·Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр, ΠΈΠ½Π°Ρ‡Π΅ Ρƒ вас получится массив ΠΈΠ· ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΈΠΌΠ΅Π΅ΠΌ сообщСниС β€œfoo = some foo=some” записываСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ foo = some.

НастраиваСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Output Π² ElasticSearch

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ настроСн Filter ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ Π² Π±Π°Π·Ρƒ elasticsearch:

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

Если Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ подписан Ρ‚ΠΈΠΏΠΎΠΌ checkpoint, сохраняСм событиС Π² Π±Π°Π·Ρƒ elasticsearch, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСния Π½Π° 10.10.1.200 Π½Π° ΠΏΠΎΡ€Ρ‚ 9200 ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ сохраняСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ индСкс, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС сохраняСм Π² индСкс Β«checkpoint-Β» + тСкущая врСмСнная Π΄Π°Ρ‚Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ индСкс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π΅ΠΉ, Π»ΠΈΠ±ΠΎ создаСтся автоматичСски ΠΏΡ€ΠΈ появлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ поля Π² сообщСнии, настройки ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ… Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² mappings.

Если Ρƒ вас настроСна аутСнтификация ( рассмотрим ΠΏΠΎΠ·ΠΆΠ΅), ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΡ€Π΅Π΄Ρ‹ для записи Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ индСкс, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Β«tssolutionΒ» с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ Β«coolΒ». МоТно Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ для записи Π»ΠΎΠ³ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ индСкс ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ большС.

ЗапускаСм 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. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

ЗапускаСм процСсс Logstash:
sudo systemctl start logstash

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ‡Ρ‚ΠΎ процСсс запустился:
sudo systemctl status logstash

2. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ поднялся Π»ΠΈ сокСт:
netstat -nat |grep 5555

2. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ Π² Kibana.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ всС Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ, Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² Kibana β€” Discover, убСТдаСмся Ρ‡Ρ‚ΠΎ всС настроСно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° кликабСльна!

2. Elastic stack: Π°Π½Π°Π»ΠΈΠ· security Π»ΠΎΠ³ΠΎΠ². Logstash

ВсС Π»ΠΎΠ³ΠΈ Π½Π° мСстС ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ всС поля ΠΈ ΠΈΡ… значСния!

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ рассмотрСли ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Logstash, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ парсСр всСх ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с поиском ΠΈ составлСниСм Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ полям. Π”Π°Π»Π΅Π΅ Π² курсС ΠΌΡ‹ рассмотрим Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Kibana, создадим ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ Π΄Π°ΡˆΠ±ΠΎΠ°Ρ€Π΄. Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Logstash трСбуСтся постоянно Π΄ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ситуациях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля с Ρ†ΠΈΡ„Ρ€Ρ‹ Π½Π° слово. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ постоянно это Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ слСдитС Π·Π° обновлСниями (Telegram, Facebook, VK, TS Solution Blog), ЯндСкс.Π”Π·Π΅Π½.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com