2. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

2. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

๊ณผ๊ฑฐ์— ๊ธฐ์‚ฌ ์šฐ๋ฆฌ๋Š” ๋งŒ๋‚ฌ๋‹ค ELK ์Šคํƒ, ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€. ๊ทธ๋ฆฌ๊ณ  ์—”์ง€๋‹ˆ์–ด๊ฐ€ ELK ์Šคํƒ์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ ์ง๋ฉดํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์€ ํ›„์† ๋ถ„์„์„ ์œ„ํ•ด Elasticsearch์— ์ €์žฅํ•  ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋‹จ์ง€ ๋ฆฝ์„œ๋น„์Šค์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. Elasticsearch๋Š” ํŠน์ • ํ•„๋“œ์™€ ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๋ฌธ์„œ ํ˜•์‹์œผ๋กœ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ตœ์ข… ์‹œ์Šคํ…œ์—์„œ ์ „์†ก๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด ๊ณผ์ •์—์„œ ์šฐ๋ฆฌ๋Š” ํ•ด๊ฒฐ์ฑ…์„ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ๋กœ๊ทธ ๋Œ€์‰ฌ, ์ด๋Š” ELK ์Šคํƒ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ ์‹œ์Šคํ…œ์—์„œ Logstash๋กœ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณธ ๋‹ค์Œ, Elasticsearch ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ๋ฆฌ๋””๋ ‰์…˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์„ค์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Check Point ๋ฐฉํ™”๋ฒฝ์˜ ๋กœ๊ทธ๋ฅผ ์ˆ˜์‹  ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ELK ์Šคํƒ ์„ค์น˜์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Logstash ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์‹คํ–‰ ๊ณ„ํš์„ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Elasticsearch๊ฐ€ ๋กœ๊ทธ๋ฅผ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(ํฌํŠธ์˜ ๊ธฐ๋Šฅ ๋ฐ ๊ฐœ๋ฐฉ์„ฑ ํ™•์ธ).
  2. Logstash์— ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  3. Logstash ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์ž…๋ ฅ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ๋ชจ์–‘์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ Logstash ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์ถœ๋ ฅ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. ํ•„ํ„ฐ๋ฅผ ์„ค์ • ์ค‘์ž…๋‹ˆ๋‹ค.
  6. ElasticSearch์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์ถœ๋ ฅ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  7. ๋กœ๊ทธ์Šคํƒœ์‹œ๊ฐ€ ์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค.
  8. Kibana์—์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์‚ฌํ•ญ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Elasticsearch๊ฐ€ ๋กœ๊ทธ๋ฅผ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธ

์ด๋ฅผ ์œ„ํ•ด, ์ปฌ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Logstash๊ฐ€ ๋ฐฐํฌ๋œ ์‹œ์Šคํ…œ์—์„œ Elasticsearch์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฆ์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด ์ปฌ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž/๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ์ „์†กํ•˜๋ฉฐ, ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํฌํŠธ 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 ๋Œ€์ƒ ์„œ๋ฒ„ < > ๋Œ€์ƒ ํฌํŠธ 5555 ํ”„๋กœํ† ์ฝœ tcp ํ˜•์‹ ์ผ๋ฐ˜ ์ฝ๊ธฐ ๋ชจ๋“œ ๋ฐ˜ํ†ตํ•ฉ

< > - Logstash๊ฐ€ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„์˜ ์ฃผ์†Œ, target-port 5555 - ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ผ ํฌํŠธ, tcp๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” udp๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

Logstash ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ INPUT ์„ค์ •

2. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ์€ /etc/logstash/conf.d/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์€ INPUT, FILTER, OUTPUT์˜ ์„ธ ๊ฐ€์ง€ ์˜๋ฏธ ์žˆ๋Š” ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์•ˆ์— ์ž…๋ ฅ ์‹œ์Šคํ…œ์ด ๋กœ๊ทธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. FILTER ๋กœ๊ทธ ๋ถ„์„ - ๋ฉ”์‹œ์ง€๋ฅผ ํ•„๋“œ์™€ ๊ฐ’์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ ๊ตฌ๋ฌธ ๋ถ„์„๋œ ๋กœ๊ทธ๊ฐ€ ์ „์†ก๋  ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € INPUT์„ ๊ตฌ์„ฑํ•˜๊ณ  ํŒŒ์ผ, tcp ๋ฐ exe์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์œ ํ˜•์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

TCP:

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

๋ชจ๋“œ => "์„œ๋ฒ„"
Logstash๊ฐ€ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํฌํŠธ => 5555
ํ˜ธ์ŠคํŠธ => โ€œ10.10.1.205โ€
IP ์ฃผ์†Œ 10.10.1.205(Logstash), ํฌํŠธ 5555๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ๋Š” ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์— ์˜ํ•ด ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ ํ˜• => "์ฒดํฌํฌ์ธํŠธ"
๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ฌธ์„œ์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„, ๊ฐ ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด ๋…ผ๋ฆฌ์  if ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์œ ํ•œ ํ•„ํ„ฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ :

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

์„ค์ • ์„ค๋ช…:
๊ฒฝ๋กœ => "/var/log/openvas_report/*"
ํŒŒ์ผ์„ ์ฝ์–ด์•ผ ํ•˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์œ ํ˜• => "์˜คํ”ˆ๋ฐ”์Šค"
์ด๋ฒคํŠธ ์œ ํ˜•.

start_position => "์‹œ์ž‘"
ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์ „์ฒด ํŒŒ์ผ์„ ์ฝ์œผ๋ฉฐ, โ€œendโ€๋ฅผ ์„ค์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ํŒŒ์ผ ๋์— ์ƒˆ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

์ž„์›:

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. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

๋ณต์‚ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.

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 ๊ตฌ์„ฑ ํŒŒ์ผ:

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 ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
sudo systemctl start logstash

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
sudo systemctl ์ƒํƒœ ๋กœ๊ทธ์Šคํƒœ์‹œ

2. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

์†Œ์ผ“์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
netstat -nat |grep 5555

2. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

Kibana์—์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์‹คํ–‰๋œ ํ›„ Kibana - Discover๋กœ ์ด๋™ํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๊ทธ๋ฆผ์„ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

2. ํƒ„๋ ฅ์  ์Šคํƒ: ๋ณด์•ˆ ๋กœ๊ทธ ๋ถ„์„. ๋กœ๊ทธ์Šคํƒœ์‹œ

๋ชจ๋“  ๋กœ๊ทธ๊ฐ€ ์ œ์ž๋ฆฌ์— ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ํ•„๋“œ์™€ ํ•ด๋‹น ๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๊ฒฐ๋ก 

Logstash ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ๋ชจ๋“  ํ•„๋“œ์™€ ๊ฐ’์— ๋Œ€ํ•œ ํŒŒ์„œ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŠน์ • ํ•„๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ”Œ๋กœํŒ…ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ณผ์ •์—์„œ๋Š” Kibana์˜ ์‹œ๊ฐํ™”๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๊ฐ„๋‹จํ•œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ƒํ™ฉ(์˜ˆ: ํ•„๋“œ ๊ฐ’์„ ์ˆซ์ž์—์„œ ๋‹จ์–ด๋กœ ๋ฐ”๊พธ๋ ค๋Š” ๊ฒฝ์šฐ)์—์„œ๋Š” Logstash ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์† ๊ธฐ์‚ฌ์—์„œ ์šฐ๋ฆฌ๋Š” ์ด ์ž‘์—…์„ ์ง€์†์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค(ํ…”๋ ˆ๊ทธ๋žจ, ํŽ˜์ด์Šค๋ถ, VK, TS ์†”๋ฃจ์…˜ ๋ธ”๋กœ๊ทธ), Yandex.Dzena.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€