Snort 3 ๊ณต๊ฒฉ ํƒ์ง€ ์‹œ์Šคํ…œ ์ถœ์‹œ ํ›„๋ณด

์‹œ์Šค์ฝ” ํšŒ์‚ฌ ๋ฐœํ‘œํ–ˆ๋‹ค. ์™„์ „ํžˆ ์žฌ์„ค๊ณ„๋œ ๊ณต๊ฒฉ ๋ฐฉ์ง€ ์‹œ์Šคํ…œ ์ถœ์‹œ ํ›„๋ณด ๊ฐœ๋ฐœ ์ฝ”๊ณจ์ด 3, Snort++ ํ”„๋กœ์ ํŠธ๋ผ๊ณ ๋„ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ 2005๋…„๋ถ€ํ„ฐ ๊ฐ„ํ—์ ์œผ๋กœ ์ž‘์—…ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋Š” ํ•œ ๋‹ฌ ์ด๋‚ด์— ๊ฒŒ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Snort 3 ๋ธŒ๋žœ์น˜์—์„œ๋Š” ์ œํ’ˆ ์ปจ์…‰์ด ์™„์ „ํžˆ ์žฌ๊ฒ€ํ† ๋˜๊ณ  ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žฌ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Snort 3 ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ ์˜์—ญ ์ค‘์—๋Š” Snort ์„ค์ • ๋ฐ ์‹คํ–‰ ๋‹จ์ˆœํ™”, ๊ตฌ์„ฑ ์ž๋™ํ™”, ๊ทœ์น™ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์–ธ์–ด ๋‹จ์ˆœํ™”, ๋ชจ๋“  ํ”„๋กœํ† ์ฝœ์˜ ์ž๋™ ๊ฐ์ง€, ๋ช…๋ น์ค„์—์„œ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์…ธ ์ œ๊ณต, ๋‹จ์ผ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ณต๋™์œผ๋กœ ์•ก์„ธ์Šคํ•˜๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ ํ˜์‹ ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹จ์ˆœํ™”๋œ ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ตฌ์„ฑ ์‹œ์Šคํ…œ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. LuaJIT๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. LuaJIT ๊ธฐ๋ฐ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ๊ทœ์น™ ๋ฐ ๋กœ๊น… ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜ ๊ตฌํ˜„์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ฒฉ ํƒ์ง€ ์—”์ง„์ด ํ˜„๋Œ€ํ™”๋˜๊ณ , ๊ทœ์น™์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์œผ๋ฉฐ, ๊ทœ์น™์— ๋ฒ„ํผ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ธฐ๋Šฅ(๊ณ ์ • ๋ฒ„ํผ)์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hyperscan ๊ฒ€์ƒ‰ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทœ์น™์˜ ์ •๊ทœ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ํŠธ๋ฆฌ๊ฑฐ๋œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ธ์…˜ ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๋ชจ์Œ์—์„œ ์ง€์›ํ•˜๋Š” ์ƒํ™ฉ์˜ 99%๋ฅผ ๋‹ค๋ฃจ๋Š” HTTP์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์ž์ฒด ๊ฒ€์‚ฌ ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. HTTP ํšŒํ”ผ๊ธฐ. HTTP/2 ํŠธ๋ž˜ํ”ฝ ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ฌ์ธต ํŒจํ‚ท ๊ฒ€์‚ฌ ๋ชจ๋“œ์˜ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํŒจํ‚ท ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด ํŒจํ‚ท ํ”„๋กœ์„ธ์„œ๋กœ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ CPU ์ฝ”์–ด ์ˆ˜์— ๋”ฐ๋ผ ์„ ํ˜• ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋กœ ๋‹ค๋ฅธ ํ•˜์œ„ ์‹œ์Šคํ…œ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๊ณตํ†ต ๊ตฌ์„ฑ ์ €์žฅ์†Œ ๋ฐ ์†์„ฑ ํ…Œ์ด๋ธ”์ด ๊ตฌํ˜„๋˜์–ด ์ •๋ณด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ํฌ๊ฒŒ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • JSON ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ  Elastic Stack๊ณผ ๊ฐ™์€ ์™ธ๋ถ€ ํ”Œ๋žซํผ๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉ๋˜๋Š” ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ ๋กœ๊น… ์‹œ์Šคํ…œ
  • ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๋กœ ์ „ํ™˜ํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ  ๊ต์ฒด ๊ฐ€๋Šฅํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์ฃผ์š” โ€‹โ€‹ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ Snort 3์—๋Š” ์ด๋ฏธ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ตฌํ˜„๋˜์–ด ๋‹ค์–‘ํ•œ ์‘์šฉ ๋ถ„์•ผ๋ฅผ ํฌ๊ด„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ทœ์น™์— ์ž์‹ ๋งŒ์˜ ์ฝ”๋ฑ, ๋‚ด๋ถ€ ๊ฒ€์‚ฌ ๋ชจ๋“œ, ๋กœ๊น… ๋ฐฉ๋ฒ•, ์ž‘์—… ๋ฐ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๋ฏ€๋กœ ํ™œ์„ฑ ๋„คํŠธ์›Œํฌ ํฌํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ๊ด€๋ จ๋œ ์„ค์ •์„ ๋น ๋ฅด๊ฒŒ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด snort_config.lua ๋ฐ SNORT_LUA_PATH์˜ ์‚ฌ์šฉ์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ์ฆ‰์‹œ ์„ค์ • ๋‹ค์‹œ ๋กœ๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ์ฝ”๋“œ๋Š” C++14 ํ‘œ์ค€์— ์ •์˜๋œ C++ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(๋นŒ๋“œ์—๋Š” C++14๋ฅผ ์ง€์›ํ•˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•จ).
  • ์ƒˆ๋กœ์šด VXLAN ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—…๋ฐ์ดํŠธ๋œ ๋Œ€์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜ํ…์ธ ๋ณ„ ์ฝ˜ํ…์ธ  ์œ ํ˜• ๊ฒ€์ƒ‰์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ด์–ด-๋ฌด์–ด ะธ ํ•˜์ดํผ์Šค์บ”;
  • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทœ์น™ ๊ทธ๋ฃน์„ ์ปดํŒŒ์ผํ•˜๋ฉด ์‹œ์ž‘์ด ๊ฐ€์†ํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค, ํ˜ธ์ŠคํŠธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” RNA(์‹ค์‹œ๊ฐ„ ๋„คํŠธ์›Œํฌ ์ธ์‹) ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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