[Splunk ES] Splunk ES Lab์„ ์œ„ํ•œ ๊ฐ„๋‹จ OS ์„ธํŒ…
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Splunk/Splunk Project

[Splunk ES] Splunk ES Lab์„ ์œ„ํ•œ ๊ฐ„๋‹จ OS ์„ธํŒ…

728x90
๋ฐ˜์‘ํ˜•

๐Ÿฅ AWS Free Tier๋กœ Splunk ๋žฉ ๋งŒ๋“ค๋ฉด์„œ ํ•œ OS ํŠœ๋‹ ์ •๋ฆฌ

์ด๋ฒˆ์—๋Š” AWS Free Tier ํ™˜๊ฒฝ์—์„œ Splunk ๋žฉ์„ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ
OS ํŠœ๋‹์„ ์กฐ๊ธˆ ์ •๋ˆํ•ด๋ดค๋‹ค!!!

 

๋ฌด์—‡์„ ๊ผญ ํ•ด์•ผ ํ•˜๊ณ , ๋ฌด์—‡์€ ์„ ํƒ์ธ์ง€, ๋ฌด์—‡์€ ์•ˆ ํ•ด๋„ ๋˜๋Š”์ง€
ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์„ ํ•œ ๋ฒˆ์— ์ •๋ฆฌ!


1) ๐ŸŽ ํ•„์ˆ˜ OS ์…‹์—… (Must)

์ด๊ฑด ์•ˆ ํ•˜๋ฉด ๊ทธ๋ƒฅ ์•ˆ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ฆ‰ ํ•„์ˆ˜.

[A] Hostname ์„ค์ •

sudo hostnamectl set-hostname splunk-es

 

[B] ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ + ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ค์น˜

sudo yum update -y
sudo yum install -y wget tar curl unzip

[C] splunk ์‚ฌ์šฉ์ž ๊ณ„์ • ์ƒ์„ฑ

sudo useradd splunk

[D] Java 11 ์„ค์น˜ (DBX์šฉ)

sudo dnf install -y java-11-devel

[E] AWS SG ํฌํŠธ ์˜คํ”ˆ

Security Group์—์„œ ํ•„์š”ํ•œ ํฌํŠธ๋งŒ ํ—ˆ์šฉ:

  • 8000 → Splunk Web
  • 22 → SSH
  • (์˜ต์…˜) DB ์—ฐ๊ฒฐ์šฉ TCP
  • (์˜ต์…˜) 9997 → ์ธํ’‹์šฉ

[F] Boot-start ํ™œ์„ฑํ™”  >> Splunk ์„ค์น˜ ์ดํ›„์—!!

sudo /opt/splunk/bin/splunk enable boot-start -user splunk

โžก๏ธ ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ํ•„์ˆ˜ 6๋Œ€์žฅ


2) ๐Ÿง€ ํ•ด๋‘๋ฉด ๋งค์šฐ ์ข‹์€ ํ•ญ๋ชฉ (Should)

์•ˆ ํ•ด๋„ ๋Œ์•„๊ฐ€์ง€๋งŒ ์šด์˜ ์‹œ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋„์›€ ๋˜๋Š” ํ•ญ๋ชฉ๋“ค

[G] ulimit ์กฐ์ •

sudo vi /etc/security/limits.conf

splunk soft nofile 100000
splunk hard nofile 100000

 

 

  • ulimit๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž์›(FD/์Šค๋ ˆ๋“œ/๋ฉ”๋ชจ๋ฆฌ)์˜ ์ƒํ•œ์„ ์ •ํ•ด์„œ ์„œ๋น„์Šค๊ฐ€ ์ž์› ๋ถ€์กฑ์œผ๋กœ ์ฃฝ์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์กฐ์ •ํ•œ๋‹ค.
  • ์„œ๋ฒ„ํ˜• ์›Œํฌ๋กœ๋“œ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด ๋„ˆ๋ฌด ๋‚ฎ์•„ ๊ณ ์„ฑ๋Šฅ I/O·๋‹ค์ค‘ ์—ฐ๊ฒฐ·์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์—์„œ ๋ฐ”๋กœ ๋ณ‘๋ชฉ ๋˜๋Š” ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ๋ณด์•ˆ ๊ด€์ ์—์„œ๋Š” ์ƒํ•œ์„ ๋„ˆ๋ฌด ๋†’๊ฒŒ ๋‘๋ฉด DoS ๊ณต๊ฒฉ ์‹œ ์ž์›์ด ๋ฌด์ œํ•œ ์†Œ๋น„๋  ์ˆ˜ ์žˆ์–ด ํ•ฉ๋ฆฌ์ ์ธ upper bound ์„ค์ •์ด ์œ„ํ—˜ ์™„ํ™” ์ˆ˜๋‹จ์ด ๋œ๋‹ค.
๋”๋ณด๊ธฐ

์ „์ฒด๋ฅผ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋จผ์ € ์š”์•ฝ

 

“์ปค๋„ ํ•œ๋„(fs.file-max) ≥ ์‚ฌ์šฉ์ž ์„ธ์…˜ ํ•œ๋„(limits.conf) ≥ ์‹ค์ œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์“ฐ๋Š” ulimit”
์ด๋ ‡๊ฒŒ ์„ธ ๋ ˆ์ด์–ด๋ฅผ ๋งž์ถฐ์ค˜์•ผ ์„œ๋น„์Šค๊ฐ€ ์ˆจ ์•ˆ ๋ง‰ํžˆ๊ณ  ์ •์ƒ ๋™์ž‘ํ•จ.


1. ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ์ด๋Ÿ‰ ํ™•์ธ


# root ์‚ฌ์šฉ์ž๋กœ ์ „ํ™˜ํ•ด์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
sudo -i

cat /proc/sys/fs/file-nr
sysctl -a | grep fs.file-max

 

์˜๋ฏธ:

  • fs.file-max = ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ „์ฒด๊ฐ€ ์—ด ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ์ตœ๋Œ€์น˜ (OS ์ „์—ญ ํ•œ๋„)
  • file-nr = ํ˜„์žฌ ์—ด๋ ค ์žˆ๋Š” ํŒŒ์ผ ์ˆ˜ / ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ˆ˜ / max ๊ฐ’์„ ํ‘œ์‹œ

์ฆ‰:
OS ์ „์ฒด ์ž์› “์ด ๊ทธ๋ฆ‡ ํฌ๊ธฐ”๋ฅผ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„

 

๋‘˜ ์ค‘ ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™•์ธํ•˜๋ฉด ๋จ!

2. sysctl.conf ์„ค์ •


vi /etc/sysctl.conf
fs.file-max = 3657031
 
 

์˜๋ฏธ:

  • ์œ„์—์„œ ํ™•์ธํ•œ ๊ฐ’ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ์ตœ๋Œ€์น˜๋ฅผ ์ƒํ–ฅ ์กฐ์ •
  • ์„œ๋ฒ„ ์ „์ฒด์˜ ์ตœ๋Œ€ ์—ฐ๊ฒฐ/ํŒŒ์ผ ์˜คํ”ˆ ์—ฌ๋ ฅ์„ ๋Š˜๋ฆผ

์ฆ‰:
“OS ์ „์ฒด ํ•œ๋„” ๋Š˜๋ฆฌ๋Š” ๊ตฌ๊ฐ„

 


3.limits.conf ํ™•์ธ (์ผ๋ฐ˜ ๊ณ„์ •์œผ๋กœ)


 
$ ulimit -a

 

์˜๋ฏธ:

  • ํ˜„์žฌ ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž ์„ธ์…˜์ด ์‹ค์ œ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ•œ๋„๋ฅผ ํ™•์ธ
  • ์—ฌ๊ธฐ์„œ ๋งŽ์ด๋“ค ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒŒ root ๊ณ„์ •์ด ์•„๋‹ˆ๋ผ ์„œ๋น„์Šค ์‚ฌ์šฉ์ž(splunk ๋“ฑ) ๊ธฐ์ค€์œผ๋กœ ๋ด์•ผ ์ ์šฉ ์—ฌ๋ถ€๊ฐ€ ๋ณด์ž„

์ฆ‰:
์‹ค์ œ ์„œ๋น„์Šค๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š” “์‚ฌ์šฉ์ž·์„ธ์…˜ ํ•œ๋„” ํ™•์ธ

 


4. limits.conf ์„ค์ •


 

 
/etc/security/limits.conf
๋˜๋Š”
/etc/security/limits.d/*.conf


## ์„ค์ • ๋‚ด์šฉ ##
root soft nofile 100000
root hard nofile 100000
splunk soft nofile 100000
splunk hard nofile 100000


## ์ด๊ฑด ๊ตณ์ด ์•ˆํ•ด๋„ ๋  ๋“ฏ ##
## AWS Linux ๊ธฐ๋ณธ ๊ฐ’์ด unlimited์•ผ
root soft nproc 100000
root hard nproc 100000
splunk soft nproc 100000
splunk hard nproc 100000

 

์˜๋ฏธ:

  • soft = ๊ธฐ๋ณธ๊ฐ’ (์„ธ์…˜์ด ์šฐ์„ ์ ์œผ๋กœ ์ ์šฉ)
  • hard = ์ ˆ๋Œ€ ์ƒํ•œ (soft๊ฐ€ hard๋ฅผ ๋„˜์„ ์ˆ˜ ์—†์Œ)
  • nofile = ํŒŒ์ผ/์†Œ์ผ“ ์ตœ๋Œ€ FD ์ˆ˜
  • nproc = ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค·์Šค๋ ˆ๋“œ ์ˆ˜

์ฆ‰:
“์‚ฌ์šฉ์ž ๋‹จ์œ„ ์ž์› ์ œํ•œ” ์„ค์ •

์™œ splunk ์‚ฌ์šฉ์ž ๋ณ„๋„๋กœ ์„ค์ •ํ•˜๋‚˜?
→ Splunk ํ”„๋กœ์„ธ์Šค๋Š” root๊ฐ€ ์•„๋‹ˆ๋ผ splunk ๊ณ„์ •์œผ๋กœ ๋Œ๊ธฐ ๋•Œ๋ฌธ

 

 

 


5. sysctl ์ ์šฉ


$ sysctl -p

 

์˜๋ฏธ:

  • sysctl.conf์—์„œ ์ปค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ ๋‹ค์‹œ ๋กœ๋”ฉ
  • ์ฆ‰ ์ปค๋„ ๋ ˆ๋ฒจ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ๊ด€๋ จ ํ•œ๋„ ์ ์šฉ ์™„๋ฃŒ

6. ์žฌ๋กœ๊ทธ์ธ ํ•„์š” ์ด์œ  (CentOS ๋“ฑ)


  • limits.conf๋Š” PAM (Pluggable Authentication Modules)์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ ์„ธ์…˜์— ์ ์šฉ๋˜๋ฏ€๋กœ
  • SSH ๋‹ค์‹œ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ํ•ด์•ผ ๋ฐ˜์˜๋จ

์ฆ‰:
์žฌ๋ถ€ํŒ…๊นŒ์ง€๋Š” ํ•„์š” ์—†์ง€๋งŒ “๋‹ค์‹œ ๋“ค์–ด์˜ฌ ๊ฒƒ” ํ•„์š”

 

 

 

[H] THP Disable

# ํŒŒ์ผ ์ƒ์„ฑ
sudo vi /etc/systemd/system/disable-thp.service

# ๋‚ด์šฉ ๋„ฃ๊ธฐ
[Unit]
Description=Disable Transparent Huge Pages
After=sysinit.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

# ์ ์šฉ
sudo systemctl daemon-reload
sudo systemctl enable --now disable-thp

# ํ™•์ธ
cat /sys/kernel/mm/transparent_hugepage/enabled

[I] ์‹œ๊ฐ„ ๋™๊ธฐํ™” (NTP/Chrony)

sudo yum install -y chrony
sudo systemctl enable --now chronyd


## ํ•œ๊ตญ์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
sudo timedatectl set-timezone Asia/Seoul


## ์ ์šฉ ํ™•์ธ
timedatectl

 

SIEM์—์„œ timestamp๋Š” ๊ฑฐ์˜ ์‹ ๊ฒฉ ์กด์žฌ…

 


[J] SElinux ์„ค์ •

vi /etc/selinux/config
SELINUX=disabled

sudo reboot

getenforce

4) ๐Ÿšซ ์ง€๊ธˆ์€ ์•ˆ ํ•ด๋„ ๋˜๋Š” ๊ฒƒ๋“ค (Don’t)

์ด๋ฒˆ ๋žฉ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถˆํ•„์š”

  • โœ— RAID / MegaCLI (EBS๋Š” RAID ์•„๋‹˜)
  • โœ— Java8/Java17 ๊ณ ๋ฏผ (DBX๋Š” Java11 ์•ˆ์ •)
  • โœ— UDP Buffer Tuning (UDP ์ˆ˜์ง‘ ์—†์Œ)
  • โœ— Queue tuning (๋‹จ์ผ ingest์—์„œ๋Š” ๊ณผํ•จ)
  • โœ— Heavy Forwarder ์„ค์ • (๋ฏธ์‚ฌ์šฉ)

 

๋‹ค์Œ์—๋Š” Splunk ์„ค์น˜ + DB ์ž์‚ฐ ์—ฐ๋™(DBX) + ํ‹ฐ์ผ“/์›Œํฌํ”Œ๋กœ ๊ตฌ์„ฑ๋„ ์ •๋ฆฌํ•ด๋ณผ ์˜ˆ์ •!

 

728x90
๋ฐ˜์‘ํ˜•