๐Ÿ” ํ•ดํ‚น ์‹œ๋„๊ฐ€ ๋Š˜์—ˆ๋‹ค: UFW, Fail2Ban, SSH ํ•˜๋“œ๋‹, auditd๋กœ ์„œ๋ฒ„ ์š”์ƒˆ ๋งŒ๋“ค๊ธฐ

“์ตœ๊ทผ ์„œ๋ฒ„์— ํ•ดํ‚น ์‹œ๋„๊ฐ€ ๊ธ‰์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ฐ•ํ™”๊ฐ€ ์‹œ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.”

๋ณด์•ˆํŒ€์žฅ์˜ ์ด ๋ง๋กœ ๋งˆ์ง€๋ง‰ ๋ฏธ์…˜์ด ์‹œ์ž‘๋์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด ๋ฏธ์…˜ ์ „๊นŒ์ง€๋Š” ๋ฐฉํ™”๋ฒฝ ์„ค์ • ์ •๋„๊ฐ€ ๋ณด์•ˆ์˜ ์ „๋ถ€๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ง์ ‘ ํ•ด๋ณด๊ณ  ๋‚˜์„œ, ๋ณด์•ˆ์€ ์—ฌ๋Ÿฌ ๊ฒน์˜ ๋ฐฉ์–ด์„ ์„ ์Œ“๋Š” ๊ฒƒ์ž„์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ๊ทธ ๋ฐฉ์–ด์„ ๋“ค์„ ์ง์ ‘ ์Œ“์€ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.


๐Ÿ“‹ 4๊ฐ€์ง€ ๋ณด์•ˆ ๋ ˆ์ด์–ด

๋ ˆ์ด์–ด๊ธฐ์ˆ ์—ญํ• 
1๏ธโƒฃUFW (๋ฐฉํ™”๋ฒฝ)ํ—ˆ์šฉ๋œ ํฌํŠธ๋งŒ ์—ด๊ณ  ๋‚˜๋จธ์ง€ ์ „๋ถ€ ์ฐจ๋‹จ
2๏ธโƒฃFail2Ban๋ฐ˜๋ณต ์‹คํŒจ IP ์ž๋™ ํƒ์ง€ ๋ฐ ์ฐจ๋‹จ
3๏ธโƒฃSSH ํ•˜๋“œ๋‹ํ‚ค ์ธ์ฆ + root ์ง์ ‘ ๋กœ๊ทธ์ธ ์ฐจ๋‹จ
4๏ธโƒฃauditd์ค‘์š” ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์‹ค์‹œ๊ฐ„ ๊ฐ์‚ฌ ๊ธฐ๋ก

์ด ๋„ค ๊ฐ€์ง€๋Š” ๊ฐ์ž ๋‹ค๋ฅธ ์œ„ํ˜‘์„ ๋ง‰์Šต๋‹ˆ๋‹ค. UFW๋Š” ์™ธ๋ถ€์—์„œ ๋ฌธ์„ ๋ชป ์—ด๊ฒŒ, Fail2Ban์€ ๋ฌธ์„ ๋‘๋“œ๋ฆฌ๋Š” ์ˆ˜์ƒํ•œ ์‚ฌ๋žŒ์„ ์žก๊ณ , SSH ํ•˜๋“œ๋‹์€ ๋ฌธ ์ž๋ฌผ์‡ ๋ฅผ ๊ต์ฒดํ•˜๊ณ , auditd๋Š” ๋‚ด๋ถ€์—์„œ ๋ˆ„๊ฐ€ ๋ญ˜ ๊ฑด๋“œ๋ ธ๋Š”์ง€ CCTV๋กœ ์ฐ์–ด๋‘๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค.


Step 1: UFW ๋ฐฉํ™”๋ฒฝ โ€” ํ•„์š”ํ•œ ๋ฌธ๋งŒ ์—ด์–ด๋‘๊ธฐ ๐Ÿšช

UFW(Uncomplicated Firewall)๋Š” ๋ฆฌ๋ˆ…์Šค ๋ฐฉํ™”๋ฒฝ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์„ “๋ชจ๋‘ ์ฐจ๋‹จ”์œผ๋กœ ๋‘๊ณ , ํ•„์š”ํ•œ ํฌํŠธ๋งŒ ํ•˜๋‚˜์”ฉ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค.

Rate Limiting ๊ธฐ๋Šฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ufw limit ssh๋Š” SSH ํฌํŠธ์— ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ์—ฐ๊ฒฐ ์‹œ๋„๊ฐ€ ์˜ค๋ฉด ์ž๋™์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

sudo ufw default deny incoming   # ๊ธฐ๋ณธ: ๋“ค์–ด์˜ค๋Š” ๊ฑด ์ „๋ถ€ ์ฐจ๋‹จ
sudo ufw default allow outgoing  # ๊ธฐ๋ณธ: ๋‚˜๊ฐ€๋Š” ๊ฑด ํ—ˆ์šฉ
sudo ufw allow ssh               # SSH (22๋ฒˆ)
sudo ufw allow 80/tcp            # HTTP
sudo ufw allow 443/tcp           # HTTPS
sudo ufw limit ssh               # SSH Rate Limiting ํ™œ์„ฑํ™”
sudo ufw enable

Step 2: Fail2Ban โ€” ๊ณต๊ฒฉ์ž๋ฅผ ์ž๋™์œผ๋กœ ์žก์•„ ๊ฐ€๋‘๊ธฐ ๐Ÿชค

Fail2Ban์€ ๋กœ๊ทธ ํŒŒ์ผ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค. ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ๋กœ๊ทธ์ธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹คํŒจํ•˜๋Š” IP๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด, ์ž๋™์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ทธ IP๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

sudo apt update && sudo apt install fail2ban -y

์„ค์ •์€ jail.conf๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  jail.local์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ ํŒŒ์ผ์„ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ์Šต๊ด€์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์„ค์ • ๋‚ด์šฉ:

[DEFAULT]
bantime = 1h       # ์ฐจ๋‹จ ์‹œ๊ฐ„: 1์‹œ๊ฐ„
findtime = 10m     # ๊ฐ์‹œ ๊ธฐ๊ฐ„: ์ตœ๊ทผ 10๋ถ„
maxretry = 5       # ์ตœ๋Œ€ ํ—ˆ์šฉ ์‹คํŒจ ํšŸ์ˆ˜: 5ํšŒ

# ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ โ€” ๊ด€๋ฆฌ์ž๋Š” ์ ˆ๋Œ€ ์ฐจ๋‹จ๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค!
ignoreip = 127.0.0.1/8 192.168.56.1 192.168.10.0/24

banaction = ufw    # UFW ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ์ฐจ๋‹จ ์ˆ˜ํ–‰

[sshd]

enabled = true port = ssh maxretry = 3 # SSH๋Š” ์œ„ํ—˜๋„๊ฐ€ ๋†’์œผ๋ฏ€๋กœ 3ํšŒ๋งŒ ํ—ˆ์šฉ bantime = 24h # SSH ๊ณต๊ฒฉ์ž๋Š” 24์‹œ๊ฐ„ ์ฐจ๋‹จ

ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ(ignoreip)๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๊ฐ€ ์‹ค์ˆ˜๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ‹€๋ ธ์„ ๋•Œ ๋ณธ์ธ์ด ์ฐจ๋‹จ๋˜๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ์„ ๋ง‰์•„์ค๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋ฐฉ๋ฒ•:

# ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
sudo fail2ban-client status
# ๊ฒฐ๊ณผ: Jail list: sshd  โ† SSH ๊ฐ์˜ฅ ํ™œ์„ฑํ™” ํ™•์ธ

# ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์ ์šฉ ํ™•์ธ
sudo fail2ban-client get sshd ignoreip
# ๊ฒฐ๊ณผ: 192.168.10.0/24 ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ

์„ค์ • ํ•ญ๋ชฉ๋ณ„ ์˜๋ฏธ:

ํ•ญ๋ชฉ์„ค์ •๊ฐ’ํšจ๊ณผ
ignoreip192.168.10.0/24 ๋“ฑ๊ด€๋ฆฌ์ž ๋„คํŠธ์›Œํฌ๋Š” ์ฐจ๋‹จ ๋ฉด์ œ
banactionufwUFW๋ฅผ ํ†ตํ•ด ์ฐจ๋‹จ ๊ทœ์น™ ์ƒ์„ฑ
bantime (SSH)24hSSH ๊ณต๊ฒฉ์ž๋Š” ํ•˜๋ฃจ ๋™์•ˆ ์ ‘๊ทผ ๋ถˆ๊ฐ€
maxretry (SSH)33ํšŒ ์‹คํŒจ ์‹œ ์ฆ‰์‹œ ์ฐจ๋‹จ

Step 3: SSH ํ•˜๋“œ๋‹ โ€” ์ž๋ฌผ์‡ ๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ์—์„œ ์—ด์‡ ๋กœ ๊ต์ฒดํ•˜๊ธฐ ๐Ÿ”‘

๊ธฐ๋ณธ SSH๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ‚ค ํŒŒ์ผ์€ ์ถ”์ธก ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

SSH ํ•˜๋“œ๋‹์˜ ํ•ต์‹ฌ ์„ค์ • ํ•ญ๋ชฉ๋“ค:

# /etc/ssh/sshd_config ์ˆ˜์ • ์‚ฌํ•ญ

PermitRootLogin no          # root ์ง์ ‘ ๋กœ๊ทธ์ธ ๊ธˆ์ง€
PasswordAuthentication no   # ๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ ๊ธˆ์ง€ (ํ‚ค ์ธ์ฆ๋งŒ ํ—ˆ์šฉ)
PubkeyAuthentication yes    # ๊ณต๊ฐœํ‚ค ์ธ์ฆ ํ™œ์„ฑํ™”
MaxAuthTries 3              # ์ธ์ฆ ์‹œ๋„ ์ตœ๋Œ€ 3ํšŒ
LoginGraceTime 30           # ๋กœ๊ทธ์ธ ๋Œ€๊ธฐ ์‹œ๊ฐ„ 30์ดˆ๋กœ ์ œํ•œ

PermitRootLogin no๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ root ๊ณ„์ •์œผ๋กœ ์ง์ ‘ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์„ ์›์ฒœ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ น root ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋„ ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ์ฃผ์˜: PasswordAuthentication no๋กœ ์„ค์ •ํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ SSH ํ‚ค๋ฅผ ๋จผ์ € ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ž์‹ ๋„ ์„œ๋ฒ„์— ์ ‘์†ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


Step 4: auditd โ€” ๋‚ด๋ถ€ CCTV ์„ค์น˜ํ•˜๊ธฐ ๐Ÿ“น

์™ธ๋ถ€ ๊ณต๊ฒฉ์€ Fail2Ban๊ณผ UFW๊ฐ€ ๋ง‰์ง€๋งŒ, ๋‚ด๋ถ€์—์„œ ๋ˆ„๊ตฐ๊ฐ€ ์„ค์ • ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฐ๋‹ค๋ฉด? ์ด๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒŒ auditd(๊ฐ์‚ฌ ์‹œ์Šคํ…œ) ์ž…๋‹ˆ๋‹ค. ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ํŒŒ์ผ ์ ‘๊ทผ/๋ณ€๊ฒฝ ํ–‰์œ„๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ๊ทœ์น™(security.rules) ํ•ต์‹ฌ ๋‚ด์šฉ:

# 1. ๊ณ„์ • ์ •๋ณด ๋ณ€๊ฒฝ ๊ฐ์‹œ (passwd, shadow ๋“ฑ)
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity

# 2. ๊ด€๋ฆฌ์ž ๊ถŒํ•œ(sudo) ์„ค์ • ๋ณ€๊ฒฝ ๊ฐ์‹œ
-w /etc/sudoers -p wa -k sudoers

# 3. SSH ์„œ๋ฒ„ ์„ค์ • ๋ณ€๊ฒฝ ๊ฐ์‹œ
-w /etc/ssh/sshd_config -p wa -k sshd_config

# 4. ํŒŒ์ผ ์‚ญ์ œ/์ด๋ฆ„ ๋ณ€๊ฒฝ ํ–‰์œ„ ๊ฐ์‹œ
-a always,exit -F arch=b64 -S unlink -S rename -k delete

-w ํŒŒ์ผ๊ฒฝ๋กœ -p wa๋Š” ํ•ด๋‹น ํŒŒ์ผ์„ ์“ฐ๊ฑฐ๋‚˜(w) ์†์„ฑ์„ ๋ณ€๊ฒฝ(a)ํ•  ๋•Œ ๊ธฐ๋กํ•˜๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. -k ํƒœ๊ทธ๋ช…์€ ๋‚˜์ค‘์— ๊ฒ€์ƒ‰ํ•  ๋•Œ ์“ธ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

๊ฒ€์ฆ ์‹œ๋‚˜๋ฆฌ์˜ค: ์ค‘์š” ํŒŒ์ผ์„ ๊ฑด๋“œ๋ ค์„œ auditd๊ฐ€ ์ œ๋Œ€๋กœ ๊ธฐ๋กํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

# ์ผ๋ถ€๋Ÿฌ passwd ํŒŒ์ผ ๊ฑด๋“œ๋ฆฌ๊ธฐ
touch /etc/passwd

# ๋กœ๊ทธ ํ™•์ธ
sudo ausearch -k identity

๋กœ๊ทธ์—์„œ ํ•ต์‹ฌ ์ •๋ณด:

  • auid: ์‹ค์ œ ์ˆ˜ํ–‰ ๊ณ„์ • (minsoo โ€” sudo๋กœ ์‹คํ–‰ํ•ด๋„ ์›๋ž˜ ๊ณ„์ • ์ถ”์  ๊ฐ€๋Šฅ)
  • exe: ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด (/usr/bin/touch)
  • path: ๋Œ€์ƒ ํŒŒ์ผ (/etc/passwd)

root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ํ•ด๋„ ์›๋ž˜ ๊ณ„์ •์„ ์ •ํ™•ํžˆ ์‹๋ณ„ํ•œ๋‹ค๋Š” ์ ์ด auditd์˜ ํ•ต์‹ฌ ๊ฐ€์น˜์ž…๋‹ˆ๋‹ค.


๐Ÿ ์ตœ์ข… ๊ฒ€์ฆ ๊ฒฐ๊ณผ

๊ตฌ๋ถ„ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ๊ฒฐ๊ณผ
Fail2Ban์„œ๋น„์Šค ์ƒํƒœโœ… Active (running)
Fail2BanSSH ๊ฐ์˜ฅ ํ™œ์„ฑํ™”โœ… sshd ๊ฐ์˜ฅ ๋™์ž‘ ์ค‘
Fail2Banํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์ ์šฉโœ… 192.168.10.0/24 ๋“ฑ๋ก ํ™•์ธ
auditd๊ฐ์‚ฌ ๊ทœ์น™ ๋กœ๋“œโœ… auditctl -l ๊ทœ์น™ ์ ์šฉ ํ™•์ธ
auditd๋กœ๊ทธ ๊ธฐ๋ก ํ…Œ์ŠคํŠธโœ… touch /etc/passwd ์‹œ auid=minsoo ๊ธฐ๋ก๋จ

๐Ÿ’ก ๋ฏธ์…˜์„ ๋งˆ์น˜๋ฉฐ: ๋ณด์•ˆ์€ ๊ฒน๊ฒน์ด ์Œ“๋Š” ๊ฒƒ

์ด๋ฒˆ ๋ฏธ์…˜์„ ๋งˆ์น˜๊ณ  ๋‚˜์„œ ๋ณด์•ˆ์„ ๋ฐ”๋ผ๋ณด๋Š” ์‹œ๊ฐ์ด ์™„์ „ํžˆ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.

UFW๋กœ ๋ฌธ์„ ์ž ๊ทธ๊ณ , Fail2Ban์œผ๋กœ ๋ฌธ์„ ๋‘๋“œ๋ฆฌ๋Š” ์ˆ˜์ƒํ•œ ์‚ฌ๋žŒ์„ ์ซ“๊ณ , SSH ํ•˜๋“œ๋‹์œผ๋กœ ์ž๋ฌผ์‡ ๋ฅผ ๋” ๊ฐ•ํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ๊ณ , auditd๋กœ ๋‚ด๋ถ€๋ฅผ CCTV๋กœ ๊ธฐ๋กํ•˜๋Š” โ€” ์ด ๋„ค ๊ฒน์˜ ๋ฐฉ์–ด์„ ์ด ๋ชจ๋‘ ๊ฐ–์ถฐ์ ธ์•ผ ๋น„๋กœ์†Œ “๋ณด์•ˆ์„ ์‹ ๊ฒฝ ์“ด ์„œ๋ฒ„”๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ์€ ํŠน์ • ๋„๊ตฌ ํ•˜๋‚˜๊ฐ€ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฒน์˜ ๋ฐฉ์–ด์„ ์ด ์„œ๋กœ ๋ณด์™„ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋‹ค์„ฏ ๋ฒˆ์˜ ๋”ฅ๋‹ค์ด๋ธŒ๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„๋ถ€ํ„ฐ ๋ณด์•ˆ๊นŒ์ง€, ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ์ดˆ ์ธํ”„๋ผ ์ „์ฒด๋ฅผ ์ง์ ‘ ์†์œผ๋กœ ๊ตฌ์ถ•ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ก ์œผ๋กœ๋งŒ ์•Œ๋˜ ๊ฐœ๋…๋“ค์ด ์†์— ์žกํžˆ๋Š” ๊ฒฝํ—˜์œผ๋กœ ๋ฐ”๋€ ๊ฒƒ, ๊ทธ๊ฒŒ ์ด๋ฒˆ ๋”ฅ๋‹ค์ด๋ธŒ์˜ ๊ฐ€์žฅ ํฐ ์ˆ˜ํ™•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”