์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿ›ก๏ธ ํฌํŠธ ์Šค์บ๋‹ ํƒ์ง€ ๋ฐ ๋ฐฉ์–ด ๊ธฐ๋ฒ•: ํ•ด์ปค์˜ ๋ˆˆ์„ ํ”ผํ•˜๋Š” ๋ฒ•
๐Ÿ” ๋ณด์•ˆ ยท ํ”„๋กœ๊ทธ๋žจ๊ฐœ๋ฐœ

๐Ÿ›ก๏ธ ํฌํŠธ ์Šค์บ๋‹ ํƒ์ง€ ๋ฐ ๋ฐฉ์–ด ๊ธฐ๋ฒ•: ํ•ด์ปค์˜ ๋ˆˆ์„ ํ”ผํ•˜๋Š” ๋ฒ•

๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์˜ ์ฒซ ๋ฒˆ์งธ ๊ด€๋ฌธ, ํฌํŠธ ์Šค์บ” ๊ณต๊ฒฉ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ๋ง‰์•„๋ณด์ž!

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

์˜ค๋Š˜์€ ์ด ํฌํŠธ ์Šค์บ๋‹์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ ํƒ์ง€ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ๋ง‰๋Š”์ง€๊นŒ์ง€ ์‹น ๋‹ค ํŒŒํ—ค์ณ๋ณผ ๊ฑฐ์•ผ. ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ง„์งœ ์•Œ์•„์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ด๋‹ˆ๊นŒ ์ง‘์ค‘ํ•ด์ค˜! ๐ŸŽฏ

ํฌํŠธ ์Šค์บ๋‹ ๊ณต๊ฒฉ ํ๋ฆ„๋„ ๐Ÿ‘พ ๊ณต๊ฒฉ์ž (ํ•ด์ปค) SYN ํŒจํ‚ท ์ „์†ก ๐Ÿ–ฅ๏ธ ํƒ€๊ฒŸ ์„œ๋ฒ„ 80 443 22 3306 ์—ด๋ฆฐ ํฌํŠธ ๋‹ซํžŒ ํฌํŠธ SYN-ACK ์‘๋‹ต ๐Ÿ”ฅ ๋ฐฉํ™”๋ฒฝ/IDS ํƒ์ง€ & ์ฐจ๋‹จ โš ๏ธ ๊ฒฝ๋ณด ๋ฐœ๋ น ๐Ÿ‘จโ€๐Ÿ’ป ๊ด€๋ฆฌ์ž ๋Œ€์‘! โ‘  ํ•ด์ปค๊ฐ€ SYN ํŒจํ‚ท์œผ๋กœ ํฌํŠธ ์ƒํƒœ ํƒ์ƒ‰ โ†’ โ‘ก ์„œ๋ฒ„ ์‘๋‹ต์œผ๋กœ ์—ด๋ฆฐ ํฌํŠธ ํŒŒ์•… โ†’ โ‘ข IDS/๋ฐฉํ™”๋ฒฝ์ด ํƒ์ง€ โ†’ โ‘ฃ ๊ด€๋ฆฌ์ž ๋Œ€์‘ ํฌํŠธ ์Šค์บ๋‹์€ ๋ชจ๋“  ์‚ฌ์ด๋ฒ„ ๊ณต๊ฒฉ์˜ ์ •์ฐฐ ๋‹จ๊ณ„ (Reconnaissance Phase)
๐Ÿ” ํฌํŠธ ์Šค์บ๋‹์ด ๋ญ”๋ฐ? ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์žก์ž

ํฌํŠธ ์Šค์บ๋‹(Port Scanning)์€ ๋„คํŠธ์›Œํฌ ์ƒ์˜ ํŠน์ • ํ˜ธ์ŠคํŠธ์—์„œ ์–ด๋–ค ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€, ๋‹ซํ˜€ ์žˆ๋Š”์ง€, ํ•„ํ„ฐ๋ง๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ธฐ์ˆ ์ด์•ผ.

ํฌํŠธ๋Š” 0๋ฒˆ๋ถ€ํ„ฐ 65535๋ฒˆ๊นŒ์ง€ ์ด 65536๊ฐœ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ์ค‘์—์„œ 0~1023๋ฒˆ์€ "์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ(Well-Known Port)"๋ผ๊ณ  ํ•ด์„œ ํŠน์ • ์„œ๋น„์Šค๋“ค์ด ๊ณ ์ •์ ์œผ๋กœ ์‚ฌ์šฉํ•ด. ์˜ˆ๋ฅผ ๋“ค๋ฉด:

ํฌํŠธ ๋ฒˆํ˜ธ์„œ๋น„์Šคํ”„๋กœํ† ์ฝœ
21FTP (ํŒŒ์ผ ์ „์†ก)TCP
22SSH (๋ณด์•ˆ ์›๊ฒฉ ์ ‘์†)TCP
80HTTP (์›น)TCP
443HTTPS (๋ณด์•ˆ ์›น)TCP
3306MySQL (DB)TCP
6379Redis (์บ์‹œ DB)TCP

ํ•ด์ปค ์ž…์žฅ์—์„œ ํฌํŠธ ์Šค์บ๋‹์€ "์ด ์„œ๋ฒ„์—์„œ ์–ด๋–ค ์„œ๋น„์Šค๊ฐ€ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋‚˜?" ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ •์ฐฐ ๋‹จ๊ณ„์•ผ. ์—ด๋ฆฐ ํฌํŠธ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค์˜ ์ทจ์•ฝ์ ์„ ๋…ธ๋ฆฌ๋Š” ๊ฑฐ์ง€. ์ง„์งœ ๋ฌด์„œ์šด ๊ฒŒ ์ด๊ฒŒ ํ•ฉ๋ฒ•์ ์ธ ๋„๊ตฌ๋กœ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑฐ์•ผ ใ…‹ใ…‹ใ…‹

๐Ÿ’ก ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๊ฒƒ!
ํฌํŠธ ์Šค์บ๋‹ ์ž์ฒด๋Š” ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž๋„ ์ž๊ธฐ ์„œ๋ฒ„ ์ ๊ฒ€ํ•  ๋•Œ ์“ฐ๋Š” ๊ธฐ์ˆ ์ด์•ผ. ๋ฌธ์ œ๋Š” ํ—ˆ๊ฐ€ ์—†์ด ๋‚จ์˜ ์„œ๋ฒ„๋ฅผ ์Šค์บ”ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๊ฑด ๋Œ€๋ถ€๋ถ„์˜ ๊ตญ๊ฐ€์—์„œ ๋ถˆ๋ฒ•์ด์•ผ. ์šฐ๋ฆฌ๋‚˜๋ผ๋„ ์ •๋ณดํ†ต์‹ ๋ง๋ฒ• ์œ„๋ฐ˜์ด ๋  ์ˆ˜ ์žˆ์–ด.
โš”๏ธ ํฌํŠธ ์Šค์บ๋‹ ๊ธฐ๋ฒ•์˜ ์ข…๋ฅ˜

ํ•ด์ปค๋“ค์ด ์“ฐ๋Š” ํฌํŠธ ์Šค์บ๋‹ ๊ธฐ๋ฒ•์€ ์ƒ๊ฐ๋ณด๋‹ค ๋‹ค์–‘ํ•ด. ๊ฐ๊ฐ ํŠน์ง•์ด ๋‹ค๋ฅด๊ณ  ํƒ์ง€ ๋‚œ์ด๋„๋„ ๋‹ฌ๋ผ. ํ•˜๋‚˜์”ฉ ๋œฏ์–ด๋ณด์ž!

1. TCP Connect ์Šค์บ” (์ „์ฒด ์—ฐ๊ฒฐ ์Šค์บ”)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹์ด์•ผ. TCP 3-way handshake๋ฅผ ์™„์ „ํžˆ ์™„๋ฃŒํ•ด์„œ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•ด.
SYN โ†’ SYN-ACK โ†’ ACK ์ด ์„ธ ๋‹จ๊ณ„๋ฅผ ๋‹ค ๊ฑฐ์น˜๋Š” ๊ฑฐ์•ผ.

nmap -sT 192.168.1.1

์žฅ์ : ๊ตฌํ˜„์ด ์‰ฝ๊ณ  ์ •ํ™•ํ•ด.
๋‹จ์ : ๋กœ๊ทธ์— ์™„์ „ํžˆ ๋‚จ์•„์„œ ํƒ์ง€๊ฐ€ ์‰ฌ์›Œ. ๐Ÿšจ

2. SYN ์Šค์บ” (Half-Open ์Šค์บ”) โญ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ž„

TCP ์—ฐ๊ฒฐ์„ ์™„์ „ํžˆ ๋งบ์ง€ ์•Š๊ณ  SYN ํŒจํ‚ท๋งŒ ๋ณด๋‚ด์„œ ์‘๋‹ต์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ.
ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์œผ๋ฉด SYN-ACK๊ฐ€ ์˜ค๊ณ , ๋‹ซํ˜€ ์žˆ์œผ๋ฉด RST๊ฐ€ ์™€. ๊ทธ๋Ÿฌ๋ฉด ํ•ด์ปค๋Š” ACK๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ  RST๋ฅผ ๋ณด๋‚ด์„œ ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ ค.

nmap -sS 192.168.1.1

์žฅ์ : ์—ฐ๊ฒฐ์ด ์™„์„ฑ๋˜์ง€ ์•Š์•„์„œ ์ผ๋ถ€ ๋กœ๊ทธ์— ์•ˆ ๋‚จ์„ ์ˆ˜ ์žˆ์–ด.
๋‹จ์ : ํ˜„๋Œ€ IDS๋Š” ๋‹ค ์žก์•„๋ƒ„ ใ…‹ใ…‹ใ…‹ ๋ฐฉ์‹ฌํ•˜๋ฉด ์•ˆ ๋ผ.

3. UDP ์Šค์บ”

UDP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•œ ์Šค์บ”์ด์•ผ. UDP๋Š” ์—ฐ๊ฒฐ ์ง€ํ–ฅ์ด ์•„๋‹ˆ๋ผ์„œ ์‘๋‹ต์ด ์—†์œผ๋ฉด ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ณ , ICMP "Port Unreachable" ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๋ฉด ๋‹ซํ˜€ ์žˆ๋Š” ๊ฑฐ์•ผ.

nmap -sU 192.168.1.1

DNS(53), SNMP(161), DHCP(67/68) ๊ฐ™์€ UDP ์„œ๋น„์Šค๋ฅผ ์ฐพ์„ ๋•Œ ์จ. ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด.

4. FIN / NULL / Xmas ์Šค์บ” (์Šคํ…”์Šค ์Šค์บ”)

์ด๊ฑด ์ข€ ๊ต๋ฌ˜ํ•œ ๋ฐฉ์‹์ด์•ผ. TCP ํ”Œ๋ž˜๊ทธ๋ฅผ ๋น„์ •์ƒ์ ์œผ๋กœ ์„ค์ •ํ•ด์„œ ๋ฐฉํ™”๋ฒฝ์„ ์šฐํšŒํ•˜๋ ค๋Š” ์‹œ๋„์•ผ.

์Šค์บ” ์ข…๋ฅ˜TCP ํ”Œ๋ž˜๊ทธํŠน์ง•
FIN ์Šค์บ”FIN๋งŒ ์„ค์ •์—ฐ๊ฒฐ ์ข…๋ฃŒ ํŒจํ‚ท์ฒ˜๋Ÿผ ์œ„์žฅ
NULL ์Šค์บ”ํ”Œ๋ž˜๊ทธ ์—†์Œ์•„๋ฌด ํ”Œ๋ž˜๊ทธ๋„ ์—†๋Š” ๋น„์ •์ƒ ํŒจํ‚ท
Xmas ์Šค์บ”FIN+PSH+URGํฌ๋ฆฌ์Šค๋งˆ์Šค ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ํ”Œ๋ž˜๊ทธ ๋‹ค ์ผฌ ๐ŸŽ„

RFC 793 ํ‘œ์ค€์— ๋”ฐ๋ฅด๋ฉด ๋‹ซํžŒ ํฌํŠธ๋Š” RST๋กœ ์‘๋‹ตํ•˜๊ณ , ์—ด๋ฆฐ ํฌํŠธ๋Š” ์‘๋‹ต ์—†์Œ์ด์•ผ. ๊ทผ๋ฐ Windows ์‹œ์Šคํ…œ์€ ์ด ๊ทœ์น™์„ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•ด์„œ ์ด ์Šค์บ”์ด ์ž˜ ์•ˆ ๋จนํžˆ๊ธฐ๋„ ํ•ด ใ…‹ใ…‹

5. ๋ถ„์‚ฐ ์Šค์บ” (Distributed Scanning)

์—ฌ๋Ÿฌ IP์—์„œ ์กฐ๊ธˆ์”ฉ ๋‚˜๋ˆ ์„œ ์Šค์บ”ํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ. ๋‹จ์ผ IP์—์„œ ๋Œ€๋Ÿ‰์˜ ์Šค์บ” ํŒจํ‚ท์ด ์˜ค๋ฉด ๋ฐ”๋กœ ํƒ์ง€๋˜๋‹ˆ๊นŒ, ๋ด‡๋„ท์„ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์กฐ๊ธˆ์”ฉ ์Šค์บ”ํ•˜๋Š” ๊ฑฐ์ง€. ํƒ์ง€๊ฐ€ ์ง„์งœ ์–ด๋ ค์›Œ์„œ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์œผ๋กœ ๋ถ„๋ฅ˜๋ผ.

โš ๏ธ ์ฃผ์˜!
์œ„์—์„œ ์„ค๋ช…ํ•œ ์Šค์บ” ๊ธฐ๋ฒ•๋“ค์€ ๋ฐฉ์–ด ๋ชฉ์ ์˜ ์ดํ•ด๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด์•ผ. ํ—ˆ๊ฐ€ ์—†์ด ํƒ€์ธ์˜ ์‹œ์Šคํ…œ์— ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ•์  ์ฒ˜๋ฒŒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด. ํ•ญ์ƒ ์ž์‹ ์ด ์†Œ์œ ํ•˜๊ฑฐ๋‚˜ ํ—ˆ๊ฐ€๋ฐ›์€ ์‹œ์Šคํ…œ์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ•ด!
TCP SYN ์Šค์บ” vs TCP Connect ์Šค์บ” ๋น„๊ต SYN ์Šค์บ” (Half-Open) ๊ณต๊ฒฉ์ž ์„œ๋ฒ„ โ‘  SYN โ‘ก SYN-ACK (์—ด๋ฆฐ ํฌํŠธ!) โ‘ข RST (์—ฐ๊ฒฐ ๋Š๊ธฐ) โ†’ ์—ฐ๊ฒฐ ๋ฏธ์™„์„ฑ, ์ผ๋ถ€ ๋กœ๊ทธ ํšŒํ”ผ ๊ฐ€๋Šฅ Connect ์Šค์บ” (Full-Open) ๊ณต๊ฒฉ์ž ์„œ๋ฒ„ โ‘  SYN โ‘ก SYN-ACK โ‘ข ACK (์—ฐ๊ฒฐ ์™„์„ฑ!) โ†’ ์™„์ „ํ•œ ์—ฐ๊ฒฐ, ๋กœ๊ทธ์— 100% ๊ธฐ๋ก๋จ ๐Ÿšจ ์Šค์บ” ๊ธฐ๋ฒ• ๋น„๊ต ์š”์•ฝ ํ•ญ๋ชฉ SYN ์Šค์บ” Connect ์Šค์บ” UDP ์Šค์บ” ์†๋„ ๋น ๋ฆ„ โšก ๋ณดํ†ต ๋А๋ฆผ ๐Ÿข ํƒ์ง€ ๋‚œ์ด๋„ ์ค‘๊ฐ„ ์‰ฌ์›€ (๋กœ๊ทธ ๋‚จ์Œ) ์–ด๋ ค์›€ ์ •ํ™•๋„ ๋†’์Œ ๋†’์Œ ๋‚ฎ์Œ (๋ถˆํ™•์‹ค) ๊ถŒํ•œ ํ•„์š” root ํ•„์š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž root ํ•„์š”
๐Ÿ•ต๏ธ ํฌํŠธ ์Šค์บ๋‹ ํƒ์ง€ ๊ธฐ๋ฒ•

์ด์ œ ์ง„์งœ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด์•ผ. ํ•ด์ปค๊ฐ€ ์Šค์บ”ํ•˜๋Š” ๊ฑธ ์–ด๋–ป๊ฒŒ ์žก์•„๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ? ํƒ์ง€ ๊ธฐ๋ฒ•์„ ์•Œ์•„์•ผ ์ œ๋Œ€๋กœ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ์–ด!

1. ์ž„๊ณ„๊ฐ’ ๊ธฐ๋ฐ˜ ํƒ์ง€ (Threshold-based Detection)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์ด์•ผ. ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ํ•˜๋‚˜์˜ IP์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ ํฌํŠธ์— ์ ‘๊ทผํ•˜๋ฉด ์Šค์บ”์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฑฐ์•ผ.

์˜ˆ๋ฅผ ๋“ค์–ด "1์ดˆ ์•ˆ์— 10๊ฐœ ์ด์ƒ์˜ ํฌํŠธ์— SYN ํŒจํ‚ท์„ ๋ณด๋‚ด๋ฉด ์Šค์บ”์œผ๋กœ ํƒ์ง€" ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ทœ์น™์„ ์„ค์ •ํ•ด.

# iptables๋กœ ํฌํŠธ ์Šค์บ” ํƒ์ง€ ๋ฐ ์ฐจ๋‹จ ์˜ˆ์‹œ
iptables -N PORT_SCAN
iptables -A PORT_SCAN -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
iptables -A PORT_SCAN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j PORT_SCAN
2. ๋น„์ •์ƒ ํŒจํ‚ท ํƒ์ง€

FIN, NULL, Xmas ์Šค์บ”์ฒ˜๋Ÿผ ๋น„์ •์ƒ์ ์ธ TCP ํ”Œ๋ž˜๊ทธ ์กฐํ•ฉ์„ ๊ฐ€์ง„ ํŒจํ‚ท์„ ํƒ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ. ์ •์ƒ์ ์ธ ํ†ต์‹ ์—์„œ๋Š” ์ด๋Ÿฐ ํŒจํ‚ท์ด ๊ฑฐ์˜ ์•ˆ ๋‚˜์˜ค๊ฑฐ๋“ .

# Snort ๊ทœ์น™ ์˜ˆ์‹œ - NULL ์Šค์บ” ํƒ์ง€
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"NULL ์Šค์บ” ํƒ์ง€"; flags:0; sid:1000001;)

# Xmas ์Šค์บ” ํƒ์ง€
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Xmas ์Šค์บ” ํƒ์ง€"; flags:FPU; sid:1000002;)
3. ํ—ˆ๋‹ˆํŒŸ(Honeypot) ํ™œ์šฉ ํƒ์ง€ ๐Ÿฏ

์ด๊ฑด ์ง„์งœ ์Šค๋งˆํŠธํ•œ ๋ฐฉ๋ฒ•์ด์•ผ! ์‹ค์ œ๋กœ ์„œ๋น„์Šคํ•˜์ง€ ์•Š๋Š” ํฌํŠธ๋ฅผ ์—ด์–ด๋†“๊ณ , ๊ฑฐ๊ธฐ์— ์ ‘๊ทผํ•˜๋Š” IP๋ฅผ ์Šค์บ๋„ˆ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฑฐ์•ผ.

์ •์ƒ์ ์ธ ์‚ฌ์šฉ์ž๋Š” ์•Œ๋ ค์ง„ ์„œ๋น„์Šค ํฌํŠธ์—๋งŒ ์ ‘๊ทผํ•˜์ง€, ๋žœ๋คํ•œ ํฌํŠธ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ฑฐ๋“ . ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ด์ƒํ•œ ํฌํŠธ์— ์ ‘๊ทผํ•˜๋ฉด "์–˜ ์Šค์บ”ํ•˜๊ณ  ์žˆ๊ตฌ๋‚˜!" ํ•˜๊ณ  ๋ฐ”๋กœ ์žก์„ ์ˆ˜ ์žˆ์–ด.

4. IDS/IPS ์‹œ์Šคํ…œ ํ™œ์šฉ

Snort, Suricata ๊ฐ™์€ ์˜คํ”ˆ์†Œ์Šค IDS(์นจ์ž… ํƒ์ง€ ์‹œ์Šคํ…œ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌํŠธ ์Šค์บ”์„ ์ž๋™์œผ๋กœ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์–ด.
IDS๋Š” ํƒ์ง€๋งŒ ํ•˜๊ณ , IPS๋Š” ํƒ์ง€ + ์ฐจ๋‹จ๊นŒ์ง€ ํ•ด.

๋„๊ตฌ์ข…๋ฅ˜ํŠน์ง•
SnortIDS/IPS๋ฃฐ ๊ธฐ๋ฐ˜ ํƒ์ง€, ์˜คํ”ˆ์†Œ์Šค, ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ
SuricataIDS/IPS๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ง€์›, ๊ณ ์„ฑ๋Šฅ, ์˜คํ”ˆ์†Œ์Šค
Zeek (Bro)๋„คํŠธ์›Œํฌ ๋ถ„์„๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋กœ๊ทธ ๋ถ„์„์— ํŠนํ™”
OSSECHIDSํ˜ธ์ŠคํŠธ ๊ธฐ๋ฐ˜ ์นจ์ž… ํƒ์ง€, ๋กœ๊ทธ ๋ถ„์„
5. ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์ด์ƒ ํƒ์ง€ ๐Ÿค–

์ตœ๊ทผ์—๋Š” AI/ML์„ ํ™œ์šฉํ•œ ์ด์ƒ ํƒ์ง€๊ฐ€ ๋งŽ์ด ์“ฐ์—ฌ. ์ •์ƒ ํŠธ๋ž˜ํ”ฝ ํŒจํ„ด์„ ํ•™์Šต์‹œ์ผœ๋†“๊ณ , ๊ฑฐ๊ธฐ์„œ ๋ฒ—์–ด๋‚˜๋Š” ํŒจํ„ด์„ ์ž๋™์œผ๋กœ ํƒ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ.

๋ถ„์‚ฐ ์Šค์บ”์ฒ˜๋Ÿผ ์ž„๊ณ„๊ฐ’ ๊ธฐ๋ฐ˜์œผ๋กœ๋Š” ์žก๊ธฐ ์–ด๋ ค์šด ๊ณต๊ฒฉ๋„ ML๋กœ๋Š” ํƒ์ง€ ๊ฐ€๋Šฅํ•ด. ๋‹ค๋งŒ ๊ตฌ์ถ• ๋น„์šฉ์ด ๋†’๊ณ  false positive(์˜คํƒ)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด.

๐Ÿ’ก ์‹ค๋ฌด ํŒ!
์žฌ๋Šฅ๋„ท ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€๋ฅผ ์ฐพ์•„๋ณด๋ฉด IDS ๊ตฌ์ถ•์ด๋‚˜ ๋ณด์•ˆ ์ปจ์„คํŒ…์„ ์ œ๊ณตํ•˜๋Š” ๋ถ„๋“ค์ด ๋งŽ์•„. ํ˜ผ์ž ๋‹ค ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด ์ „๋ฌธ๊ฐ€์˜ ๋„์›€์„ ๋ฐ›๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์•ผ!
๐Ÿ›ก๏ธ ํฌํŠธ ์Šค์บ๋‹ ๋ฐฉ์–ด ๊ธฐ๋ฒ•

ํƒ์ง€๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ์• ์ดˆ์— ์Šค์บ” ์ž์ฒด๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜, ์Šค์บ”ํ•ด๋„ ์ •๋ณด๋ฅผ ๋ชป ์–ป๊ฒŒ ํ•˜๋Š” ๋ฐฉ์–ด ๊ธฐ๋ฒ•๋„ ์•Œ์•„์•ผ ํ•ด!

1. ๋ฐฉํ™”๋ฒฝ ์„ค์ • ๊ฐ•ํ™”

๋ฐฉํ™”๋ฒฝ์€ ํฌํŠธ ์Šค์บ” ๋ฐฉ์–ด์˜ ๊ธฐ๋ณธ ์ค‘์˜ ๊ธฐ๋ณธ์ด์•ผ. ํ•„์š”ํ•œ ํฌํŠธ๋งŒ ์—ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‹ค ๋‹ซ๋Š” ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์ด ์ œ์ผ ์•ˆ์ „ํ•ด.

# UFW (Ubuntu Firewall) ๊ธฐ๋ณธ ์„ค์ •
ufw default deny incoming    # ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์ธ๋ฐ”์šด๋“œ ์ฐจ๋‹จ
ufw default allow outgoing   # ์•„์›ƒ๋ฐ”์šด๋“œ๋Š” ํ—ˆ์šฉ
ufw allow 22/tcp             # SSH๋งŒ ํ—ˆ์šฉ
ufw allow 80/tcp             # HTTP ํ—ˆ์šฉ
ufw allow 443/tcp            # HTTPS ํ—ˆ์šฉ
ufw enable                   # ๋ฐฉํ™”๋ฒฝ ํ™œ์„ฑํ™”
2. ํฌํŠธ ๋…ธํ‚น(Port Knocking) ๊ธฐ๋ฒ• ๐Ÿšช

์ด๊ฑด ์ง„์งœ ์‹ ๊ธฐํ•œ ๊ธฐ๋ฒ•์ด์•ผ! ํŠน์ • ํฌํŠธ๋“ค์„ ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ "๋…ธํฌ"(์ ‘๊ทผ ์‹œ๋„)ํ•ด์•ผ๋งŒ ์‹ค์ œ ์„œ๋น„์Šค ํฌํŠธ๊ฐ€ ์—ด๋ฆฌ๋Š” ๋ฐฉ์‹์ด์•ผ.

์˜ˆ๋ฅผ ๋“ค์–ด 1234 โ†’ 5678 โ†’ 9012 ์ˆœ์„œ๋กœ ์ ‘๊ทผํ•˜๋ฉด SSH ํฌํŠธ(22)๊ฐ€ ์—ด๋ฆฌ๋Š” ์‹์ด์•ผ. ์Šค์บ๋„ˆ๋Š” ์ด ๊ทœ์น™์„ ๋ชจ๋ฅด๋‹ˆ๊นŒ SSH ํฌํŠธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์–ด!

# knockd ์„ค์ • ํŒŒ์ผ ์˜ˆ์‹œ (/etc/knockd.conf)
[options]
UseSyslog

[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn

[closeSSH]
sequence    = 9000,8000,7000
seq_timeout = 5
command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn
3. ํฌํŠธ ์œ„์žฅ (Port Obfuscation)

SSH๋ฅผ 22๋ฒˆ ๋Œ€์‹  22222๋ฒˆ์ด๋‚˜ ๋‹ค๋ฅธ ํฌํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ. ์™„๋ฒฝํ•œ ๋ฐฉ์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ž๋™ํ™”๋œ ์Šค์บ” ๋„๊ตฌ์˜ ๊ณต๊ฒฉ์„ ์ƒ๋‹นํžˆ ์ค„์—ฌ์ค˜.
ํŠนํžˆ 22, 3389(RDP) ๊ฐ™์€ ์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ๋Š” ํ•ญ์ƒ ๊ณต๊ฒฉ ๋Œ€์ƒ์ด ๋˜๋‹ˆ๊นŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒŒ ์ข‹์•„.

# SSH ํฌํŠธ ๋ณ€๊ฒฝ (/etc/ssh/sshd_config)
Port 22222    # ๊ธฐ๋ณธ 22์—์„œ ๋ณ€๊ฒฝ
PermitRootLogin no    # root ์ง์ ‘ ๋กœ๊ทธ์ธ ๊ธˆ์ง€
MaxAuthTries 3        # ์ธ์ฆ ์‹œ๋„ ํšŸ์ˆ˜ ์ œํ•œ
4. ์†๋„ ์ œํ•œ (Rate Limiting)

๋‹จ์ผ IP์—์„œ ์˜ค๋Š” ์—ฐ๊ฒฐ ์‹œ๋„ ์†๋„๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ. ํฌํŠธ ์Šค์บ”์€ ๋น ๋ฅธ ์†๋„๋กœ ๋งŽ์€ ํฌํŠธ๋ฅผ ์Šค์บ”ํ•˜๋Š” ํŠน์„ฑ์ด ์žˆ์–ด์„œ ์ด๊ฑธ ์ œํ•œํ•˜๋ฉด ํšจ๊ณผ์ ์ด์•ผ.

# iptables๋กœ ์†๋„ ์ œํ•œ ์„ค์ •
# 1๋ถ„์— ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ 25๊ฐœ ์ด์ƒ์ด๋ฉด ์ฐจ๋‹จ
iptables -A INPUT -p tcp --syn -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# fail2ban์œผ๋กœ SSH ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฐฉ์–ด
# /etc/fail2ban/jail.conf
[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
5. ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  (Network Segmentation) ๐Ÿ—๏ธ

์„œ๋ฒ„ ๋„คํŠธ์›Œํฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋ˆ ์„œ ํ•œ ๊ตฌ์—ญ์ด ๋šซ๋ ค๋„ ๋‹ค๋ฅธ ๊ตฌ์—ญ์œผ๋กœ ๋ชป ๋„˜์–ด์˜ค๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์ด์•ผ.

DMZ(๋น„๋ฌด์žฅ์ง€๋Œ€) ๊ฐœ๋…์„ ํ™œ์šฉํ•ด์„œ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„(์›น์„œ๋ฒ„)์™€ ๋‚ด๋ถ€ ์„œ๋ฒ„(DB์„œ๋ฒ„)๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒŒ ๊ธฐ๋ณธ์ด์•ผ.

6. ์‘๋‹ต ์ง€์—ฐ (Tarpit) ๊ธฐ๋ฒ•

์Šค์บ๋„ˆ์—๊ฒŒ ์‘๋‹ต์„ ๋งค์šฐ ๋А๋ฆฌ๊ฒŒ ๋ณด๋‚ด์„œ ์Šค์บ” ์†๋„๋ฅผ ๊ทน๋„๋กœ ๋Šฆ์ถ”๋Š” ๋ฐฉ์‹์ด์•ผ. ์Šค์บ๋„ˆ ์ž…์žฅ์—์„œ๋Š” ํƒ€์ž„์•„์›ƒ์ด ๊ณ„์† ๋ฐœ์ƒํ•ด์„œ ์Šค์บ”ํ•˜๊ธฐ ์—„์ฒญ ํž˜๋“ค์–ด์ ธ ใ…‹ใ…‹ใ…‹

# iptables tarpit ์„ค์ • (xtables-addons ํ•„์š”)
iptables -A INPUT -p tcp -j TARPIT --tarpit
๐Ÿ›ก๏ธ ๋‹ค์ธต ๋ฐฉ์–ด ์•„ํ‚คํ…์ฒ˜ (Defense in Depth) ์ธํ„ฐ๋„ท ๐ŸŒ ๐Ÿ”ฅ ๋ฐฉํ™”๋ฒฝ 1์ฐจ ๋ฐฉ์–ด ๐Ÿ” IDS/IPS 2์ฐจ ํƒ์ง€ DMZ ๊ตฌ์—ญ ์›น ์„œ๋ฒ„ ๐ŸŒ ๋ฉ”์ผ ์„œ๋ฒ„ ๐Ÿ“ง ๐Ÿ”’ ๋‚ด๋ถ€ ๋ฐฉํ™”๋ฒฝ 3์ฐจ ๋ฐฉ์–ด ๋‚ด๋ถ€ ์„œ๋ฒ„ DB ์„œ๋ฒ„ ๐Ÿ—„๏ธ ๋‚ด๋ถ€ API ๐Ÿ”ง ๊ฐ ๊ณ„์ธต๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ๋ฐฉ์–ด ์ฒด๊ณ„ ๊ตฌ์ถ• โ†’ ํ•œ ๊ณ„์ธต์ด ๋šซ๋ ค๋„ ๋‹ค์Œ ๊ณ„์ธต์—์„œ ์ฐจ๋‹จ 1๋‹จ๊ณ„: ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด ๋ฐฉํ™”๋ฒฝ, ACL, ๋ผ์šฐํ„ฐ ํ•„ํ„ฐ๋ง ๋ถˆํ•„์š” ํฌํŠธ ์ฐจ๋‹จ 2๋‹จ๊ณ„: ํƒ์ง€ ๋ ˆ์ด์–ด IDS/IPS, ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ์ด์ƒ ํŠธ๋ž˜ํ”ฝ ํƒ์ง€ 3๋‹จ๊ณ„: ํ˜ธ์ŠคํŠธ ๋ ˆ์ด์–ด OS ๋ณด์•ˆ ์„ค์ •, ํŒจ์น˜ ๊ด€๋ฆฌ ๋ถˆํ•„์š” ์„œ๋น„์Šค ๋น„ํ™œ์„ฑํ™” 4๋‹จ๊ณ„: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ WAF, ์ธ์ฆ/์ธ๊ฐ€ ๊ฐ•ํ™” ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ
๐Ÿ”ง ์‹ค์ „! Nmap์œผ๋กœ ๋‚ด ์„œ๋ฒ„ ์ ๊ฒ€ํ•˜๊ธฐ

Nmap์€ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ํฌํŠธ ์Šค์บ๋„ˆ์•ผ. ํ•ด์ปค๋„ ์“ฐ๊ณ  ๋ณด์•ˆ ๊ด€๋ฆฌ์ž๋„ ์จ. ์ž๊ธฐ ์„œ๋ฒ„ ์ ๊ฒ€ํ•  ๋•Œ ์ง„์งœ ์œ ์šฉํ•ด!

๊ธฐ๋ณธ ์Šค์บ” ๋ช…๋ น์–ด
# ๊ธฐ๋ณธ ํฌํŠธ ์Šค์บ” (์ƒ์œ„ 1000๊ฐœ ํฌํŠธ)
nmap 192.168.1.1

# ์ „์ฒด ํฌํŠธ ์Šค์บ” (0-65535)
nmap -p- 192.168.1.1

# ์„œ๋น„์Šค ๋ฒ„์ „ ํƒ์ง€ (-sV)
nmap -sV 192.168.1.1

# OS ํƒ์ง€ (-O)
nmap -O 192.168.1.1

# ์Šคํ…”์Šค SYN ์Šค์บ” + ์„œ๋น„์Šค ๋ฒ„์ „ + OS ํƒ์ง€
nmap -sS -sV -O 192.168.1.1

# ์Šคํฌ๋ฆฝํŠธ ์—”์ง„์œผ๋กœ ์ทจ์•ฝ์  ์Šค์บ”
nmap --script vuln 192.168.1.1

# ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅ
nmap -oN result.txt 192.168.1.1
Nmap ๊ฒฐ๊ณผ ํ•ด์„

Nmap ์Šค์บ” ๊ฒฐ๊ณผ์—์„œ ํฌํŠธ ์ƒํƒœ๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€์•ผ:

์ƒํƒœ์˜๋ฏธ๋Œ€์‘ ๋ฐฉ๋ฒ•
openํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ๊ณ  ์„œ๋น„์Šค ์ค‘ํ•„์š”ํ•œ ํฌํŠธ์ธ์ง€ ํ™•์ธ, ๋ถˆํ•„์š”ํ•˜๋ฉด ๋‹ซ๊ธฐ
closedํฌํŠธ๊ฐ€ ๋‹ซํ˜€ ์žˆ์Œ (RST ์‘๋‹ต)์ •์ƒ ์ƒํƒœ, ํ•˜์ง€๋งŒ IP๋Š” ๋…ธ์ถœ๋จ
filtered๋ฐฉํ™”๋ฒฝ์ด ํŒจํ‚ท์„ ์ฐจ๋‹จ ์ค‘๊ฐ€์žฅ ์ด์ƒ์ ์ธ ์ƒํƒœ โœ…

filtered ์ƒํƒœ๊ฐ€ ๊ฐ€์žฅ ์•ˆ์ „ํ•ด! closed๋Š” ํฌํŠธ๊ฐ€ ๋‹ซํ˜€ ์žˆ์–ด๋„ ์„œ๋ฒ„๊ฐ€ RST ํŒจํ‚ท์„ ๋ณด๋‚ด์„œ ์„œ๋ฒ„ ์กด์žฌ ์ž์ฒด๋Š” ๋…ธ์ถœ๋˜๊ฑฐ๋“ . filtered๋Š” ๋ฐฉํ™”๋ฒฝ์ด ํŒจํ‚ท์„ ๊ทธ๋ƒฅ ๋ฒ„๋ ค์„œ ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š”์ง€์กฐ์ฐจ ์•Œ๊ธฐ ์–ด๋ ค์›Œ.

์ž๋™ํ™”๋œ ๋ณด์•ˆ ์ ๊ฒ€ ์Šคํฌ๋ฆฝํŠธ
#!/bin/bash
# ๋‚ด ์„œ๋ฒ„ ๋ณด์•ˆ ์ ๊ฒ€ ์Šคํฌ๋ฆฝํŠธ

TARGET="localhost"
echo "=== ํฌํŠธ ์Šค์บ” ์‹œ์ž‘: $TARGET ==="

# ์—ด๋ฆฐ ํฌํŠธ ํ™•์ธ
echo "[*] ์—ด๋ฆฐ ํฌํŠธ ๋ชฉ๋ก:"
nmap -sS -p- --open $TARGET 2>/dev/null | grep "open"

# ๋ถˆํ•„์š”ํ•œ ์„œ๋น„์Šค ํ™•์ธ
echo "[*] ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค:"
ss -tlnp | grep LISTEN

# ๋ฐฉํ™”๋ฒฝ ์ƒํƒœ ํ™•์ธ
echo "[*] UFW ๋ฐฉํ™”๋ฒฝ ์ƒํƒœ:"
ufw status verbose

echo "=== ์ ๊ฒ€ ์™„๋ฃŒ ==="
๐Ÿ“Š ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊ทธ ๋ถ„์„

ํƒ์ง€์™€ ๋ฐฉ์–ด๋ฅผ ํ–ˆ๋‹ค๋ฉด ์ด์ œ ์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ํ•„์š”ํ•ด. ํฌํŠธ ์Šค์บ” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ๋Š”์ง€ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž!

์‹œ์Šคํ…œ ๋กœ๊ทธ์—์„œ ์Šค์บ” ํ”์  ์ฐพ๊ธฐ
# /var/log/auth.log์—์„œ SSH ์ ‘๊ทผ ์‹œ๋„ ํ™•์ธ
grep "Invalid user" /var/log/auth.log | tail -20

# iptables ๋กœ๊ทธ์—์„œ ์ฐจ๋‹จ๋œ ํŒจํ‚ท ํ™•์ธ
grep "DROPPED" /var/log/syslog | tail -20

# ํŠน์ • IP์˜ ์ ‘๊ทผ ์‹œ๋„ ํšŸ์ˆ˜ ์นด์šดํŠธ
grep "192.168.1.100" /var/log/auth.log | wc -l

# ๊ฐ€์žฅ ๋งŽ์ด ์ ‘๊ทผ ์‹œ๋„ํ•œ IP ์ƒ์œ„ 10๊ฐœ
grep "Failed password" /var/log/auth.log | \
awk '{print $11}' | sort | uniq -c | sort -rn | head -10
fail2ban ์„ค์ •์œผ๋กœ ์ž๋™ ์ฐจ๋‹จ

fail2ban์€ ๋กœ๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‹ค๊ฐ€ ํŠน์ • ํšŸ์ˆ˜ ์ด์ƒ ์‹คํŒจํ•˜๋ฉด ์ž๋™์œผ๋กœ IP๋ฅผ ์ฐจ๋‹จํ•ด์ฃผ๋Š” ๋„๊ตฌ์•ผ. ์ง„์งœ ํŽธํ•ด ใ…‹ใ…‹ใ…‹

# fail2ban ์„ค์น˜
apt-get install fail2ban

# /etc/fail2ban/jail.local ์„ค์ •
[DEFAULT]
bantime  = 3600      # 1์‹œ๊ฐ„ ์ฐจ๋‹จ
findtime = 600       # 10๋ถ„ ๋‚ด์—
maxretry = 5         # 5๋ฒˆ ์‹คํŒจํ•˜๋ฉด ์ฐจ๋‹จ

[sshd]
enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log

[nginx-http-auth]
enabled = true
filter  = nginx-http-auth
port    = http,https
logpath = /var/log/nginx/error.log

# fail2ban ์ƒํƒœ ํ™•์ธ
fail2ban-client status
fail2ban-client status sshd
ELK ์Šคํƒ์œผ๋กœ ๋ณด์•ˆ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ•

Elasticsearch + Logstash + Kibana(ELK) ์Šคํƒ์„ ํ™œ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด. ๋กœ๊ทธ๋ฅผ ์‹œ๊ฐํ™”ํ•ด์„œ ์ด์ƒ ํŒจํ„ด์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๊ฑฐ๋“ .

๊ทœ๋ชจ๊ฐ€ ํฐ ์„œ๋น„์Šค๋ผ๋ฉด SIEM(Security Information and Event Management) ์†”๋ฃจ์…˜ ๋„์ž…๋„ ๊ณ ๋ คํ•ด๋ด. Splunk, IBM QRadar, Microsoft Sentinel ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์–ด.

๐Ÿ’ก ๋ณด์•ˆ ๊ณต๋ถ€ ํŒ!
ํฌํŠธ ์Šค์บ๋‹ ๋ฐฉ์–ด๋ฅผ ์ง์ ‘ ์‹ค์Šตํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด VirtualBox๋‚˜ VMware๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด์„œ ํ…Œ์ŠคํŠธํ•ด๋ด. Kali Linux(๊ณต๊ฒฉ์ž)์™€ Ubuntu(์„œ๋ฒ„)๋ฅผ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์‹ค์Šตํ•˜๋ฉด ์ง„์งœ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด. ์žฌ๋Šฅ๋„ท์—์„œ ๋ณด์•ˆ ์‹ค์Šต ๊ฐ•์˜๋ฅผ ์ฐพ์•„๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด์•ผ!
โœ… ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ: ์ง€๊ธˆ ๋‹น์žฅ ํ™•์ธํ•ด์•ผ ํ•  ๊ฒƒ๋“ค

์ด๋ก ์€ ์ถฉ๋ถ„ํžˆ ๋ฐฐ์› ์œผ๋‹ˆ๊นŒ ์‹ค์ œ๋กœ ๋‚ด ์„œ๋ฒ„์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ฆฌํ•ด์ค„๊ฒŒ!

๋ถ„๋ฅ˜ํ•ญ๋ชฉ์šฐ์„ ์ˆœ์œ„
๋ฐฉํ™”๋ฒฝ๋ถˆํ•„์š”ํ•œ ํฌํŠธ ๋ชจ๋‘ ์ฐจ๋‹จ (filtered ์ƒํƒœ)๐Ÿ”ด ๋†’์Œ
๋ฐฉํ™”๋ฒฝํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด ์„ค์ •๐Ÿ”ด ๋†’์Œ
SSH๊ธฐ๋ณธ ํฌํŠธ(22) ๋ณ€๊ฒฝ๐ŸŸก ์ค‘๊ฐ„
SSHroot ์ง์ ‘ ๋กœ๊ทธ์ธ ๋น„ํ™œ์„ฑํ™”๐Ÿ”ด ๋†’์Œ
SSHํŒจ์Šค์›Œ๋“œ ์ธ์ฆ ๋น„ํ™œ์„ฑํ™”, ํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‚ฌ์šฉ๐Ÿ”ด ๋†’์Œ
์„œ๋น„์Šค๋ถˆํ•„์š”ํ•œ ์„œ๋น„์Šค ๋น„ํ™œ์„ฑํ™”๐ŸŸก ์ค‘๊ฐ„
์„œ๋น„์Šค์„œ๋น„์Šค ๋ฒ„์ „ ์ •๋ณด ๋…ธ์ถœ ์ตœ์†Œํ™”๐ŸŸก ์ค‘๊ฐ„
๋ชจ๋‹ˆํ„ฐ๋งfail2ban ์„ค์น˜ ๋ฐ ์„ค์ •๐Ÿ”ด ๋†’์Œ
๋ชจ๋‹ˆํ„ฐ๋งIDS/IPS ์„ค์น˜ (Snort/Suricata)๐ŸŸก ์ค‘๊ฐ„
์—…๋ฐ์ดํŠธOS ๋ฐ ์„œ๋น„์Šค ์ •๊ธฐ ํŒจ์น˜๐Ÿ”ด ๋†’์Œ
๋„คํŠธ์›ŒํฌDMZ ๊ตฌ์„ฑ์œผ๋กœ ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ๐ŸŸข ๋‚ฎ์Œ
์ ๊ฒ€์ •๊ธฐ์ ์ธ ์ž์ฒด ํฌํŠธ ์Šค์บ” ์ ๊ฒ€๐ŸŸก ์ค‘๊ฐ„
โš ๏ธ ์ค‘์š”ํ•œ ํฌ์ธํŠธ!
๋ณด์•ˆ์€ ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๊ณ  ๋์ด ์•„๋‹ˆ์•ผ. ์ƒˆ๋กœ์šด ์ทจ์•ฝ์ ์ด ๊ณ„์† ๋ฐœ๊ฒฌ๋˜๊ณ  ๊ณต๊ฒฉ ๊ธฐ๋ฒ•๋„ ์ง„ํ™”ํ•˜๊ฑฐ๋“ . ์ •๊ธฐ์ ์ธ ์ ๊ฒ€๊ณผ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง„์งœ ์ค‘์š”ํ•ด. ์ตœ์†Œ ์›” 1ํšŒ ์ด์ƒ ๋ณด์•ˆ ์ ๊ฒ€์„ ์Šต๊ด€ํ™”ํ•˜์ž!
๐ŸŽฏ ๋งˆ๋ฌด๋ฆฌ: ํฌํŠธ ์Šค์บ๋‹ ๋ฐฉ์–ด์˜ ํ•ต์‹ฌ ์›์น™

์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋ผ:

1. ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ (Principle of Least Privilege)
ํ•„์š”ํ•œ ํฌํŠธ๋งŒ ์—ด์–ด. ์“ฐ์ง€ ์•Š๋Š” ์„œ๋น„์Šค๋Š” ๋‹ค ๊บผ๋ฒ„๋ ค. ๊ณต๊ฒฉ ํ‘œ๋ฉด(Attack Surface)์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒŒ ํ•ต์‹ฌ์ด์•ผ.

2. ์‹ฌ์ธต ๋ฐฉ์–ด (Defense in Depth)
๋ฐฉํ™”๋ฒฝ ํ•˜๋‚˜๋งŒ ๋ฏฟ์ง€ ๋งˆ. ๋ฐฉํ™”๋ฒฝ โ†’ IDS/IPS โ†’ ํ˜ธ์ŠคํŠธ ๋ณด์•ˆ โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ๊นŒ์ง€ ์—ฌ๋Ÿฌ ๊ณ„์ธต์œผ๋กœ ๋ฐฉ์–ดํ•ด์•ผ ํ•ด.

3. ๊ฐ€์‹œ์„ฑ ํ™•๋ณด (Visibility)
๋ชจ๋‹ˆํ„ฐ๋ง ์—†์ด๋Š” ๊ณต๊ฒฉ์„ ์•Œ ์ˆ˜ ์—†์–ด. ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ์ฒด๊ณ„๋ฅผ ๊ฐ–์ถฐ์•ผ ํ•ด.

4. ์ง€์†์ ์ธ ์—…๋ฐ์ดํŠธ
๋ณด์•ˆ์€ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณผ์ •์ด์•ผ. ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ ๊ฒ€ํ•ด์•ผ ํ•ด.

ํฌํŠธ ์Šค์บ๋‹์€ ๋ชจ๋“  ์‚ฌ์ด๋ฒ„ ๊ณต๊ฒฉ์˜ ์‹œ์ž‘์ ์ด์•ผ. ์ด๊ฑธ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ณด์•ˆ์˜ ๊ธฐ์ดˆ๋Š” ํ™•์‹คํžˆ ๋‹ค์ง„ ๊ฑฐ์•ผ. ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ž๊ธฐ๊ฐ€ ๋งŒ๋“  ์„œ๋น„์Šค๋ฅผ ์ง€ํ‚ค๋Š” ๊ฑด ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜๋ผ๋Š” ๊ฑฐ ์žŠ์ง€ ๋งˆ! ๐Ÿ’ช

๋Œ“๊ธ€ ์ž‘์„ฑ

์ด ๊ธ€์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ๊ฐ์„ ๋“ค๋ ค์ฃผ์„ธ์š”

๋Œ“๊ธ€ 0