Ver3.5 ๐ก๏ธ ํฌํธ ์ค์บ๋ ํ์ง ๋ฐ ๋ฐฉ์ด ๊ธฐ๋ฒ: ํด์ปค์ ๋์ ํผํ๋ ๋ฒ

๐ก๏ธ ํฌํธ ์ค์บ๋ ํ์ง ๋ฐ ๋ฐฉ์ด ๊ธฐ๋ฒ: ํด์ปค์ ๋์ ํผํ๋ ๋ฒ
๋คํธ์ํฌ ๋ณด์์ ์ฒซ ๋ฒ์งธ ๊ด๋ฌธ, ํฌํธ ์ค์บ ๊ณต๊ฒฉ์ ์์ ํ ์ดํดํ๊ณ ๋ง์๋ณด์!
์ผ ์์งํ ๋งํด์ ํฌํธ ์ค์บ๋์ด ๋ญ์ง ๋ชจ๋ฅด๋ฉด ๋ณด์ ๊ณต๋ถ ์์๋ ๋ชป ํ๋ค๊ณ ๋ด์ผ ํด ใ
ใ
ใ
ํด์ปค๋ค์ด ๊ณต๊ฒฉ ์ ์ ์ ์ผ ๋จผ์ ํ๋ ๊ฒ ๋ฐ๋ก ์ด๊ฑฐ๊ฑฐ๋ . ๋ง์น ๋๋์ด ์ง์ ๋ค์ด์ค๊ธฐ ์ ์ ์ฐฝ๋ฌธ์ด๋ ๋ฌธ์ด ์ ๊ฒผ๋์ง ํ๋ํ๋ ํ์ธํ๋ ๊ฒ์ฒ๋ผ, ํด์ปค๋ค๋ ์๋ฒ์ ์ด๋ค ํฌํธ๊ฐ ์ด๋ ค ์๋์ง ๋จผ์ ์ค์บํด.
์ค๋์ ์ด ํฌํธ ์ค์บ๋์ด ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ด๋ป๊ฒ ํ์งํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ๋ง๋์ง๊น์ง ์น ๋ค ํํค์ณ๋ณผ ๊ฑฐ์ผ. ๊ฐ๋ฐ์๋ผ๋ฉด ์ง์ง ์์์ผ ํ๋ ๋ด์ฉ์ด๋๊น ์ง์คํด์ค! ๐ฏ
ํฌํธ ์ค์บ๋(Port Scanning)์ ๋คํธ์ํฌ ์์ ํน์ ํธ์คํธ์์ ์ด๋ค ํฌํธ๊ฐ ์ด๋ ค ์๋์ง, ๋ซํ ์๋์ง, ํํฐ๋ง๋์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๊ธฐ์ ์ด์ผ.
ํฌํธ๋ 0๋ฒ๋ถํฐ 65535๋ฒ๊น์ง ์ด 65536๊ฐ๊ฐ ์๋๋ฐ, ์ด ์ค์์ 0~1023๋ฒ์ "์ ์๋ ค์ง ํฌํธ(Well-Known Port)"๋ผ๊ณ ํด์ ํน์ ์๋น์ค๋ค์ด ๊ณ ์ ์ ์ผ๋ก ์ฌ์ฉํด. ์๋ฅผ ๋ค๋ฉด:
| ํฌํธ ๋ฒํธ | ์๋น์ค | ํ๋กํ ์ฝ |
|---|---|---|
| 21 | FTP (ํ์ผ ์ ์ก) | TCP |
| 22 | SSH (๋ณด์ ์๊ฒฉ ์ ์) | TCP |
| 80 | HTTP (์น) | TCP |
| 443 | HTTPS (๋ณด์ ์น) | TCP |
| 3306 | MySQL (DB) | TCP |
| 6379 | Redis (์บ์ DB) | TCP |
ํด์ปค ์ ์ฅ์์ ํฌํธ ์ค์บ๋์ "์ด ์๋ฒ์์ ์ด๋ค ์๋น์ค๊ฐ ๋์๊ฐ๊ณ ์๋?" ๋ฅผ ํ์ ํ๋ ์ฒซ ๋ฒ์งธ ์ ์ฐฐ ๋จ๊ณ์ผ. ์ด๋ฆฐ ํฌํธ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํด๋น ์๋น์ค์ ์ทจ์ฝ์ ์ ๋ ธ๋ฆฌ๋ ๊ฑฐ์ง. ์ง์ง ๋ฌด์์ด ๊ฒ ์ด๊ฒ ํฉ๋ฒ์ ์ธ ๋๊ตฌ๋ก๋ ํ ์ ์๋ค๋ ๊ฑฐ์ผ ใ ใ ใ
ํฌํธ ์ค์บ๋ ์์ฒด๋ ๋คํธ์ํฌ ๊ด๋ฆฌ์๋ ์๊ธฐ ์๋ฒ ์ ๊ฒํ ๋ ์ฐ๋ ๊ธฐ์ ์ด์ผ. ๋ฌธ์ ๋ ํ๊ฐ ์์ด ๋จ์ ์๋ฒ๋ฅผ ์ค์บํ๋ ๊ฒ์ธ๋ฐ, ์ด๊ฑด ๋๋ถ๋ถ์ ๊ตญ๊ฐ์์ ๋ถ๋ฒ์ด์ผ. ์ฐ๋ฆฌ๋๋ผ๋ ์ ๋ณดํต์ ๋ง๋ฒ ์๋ฐ์ด ๋ ์ ์์ด.
ํด์ปค๋ค์ด ์ฐ๋ ํฌํธ ์ค์บ๋ ๊ธฐ๋ฒ์ ์๊ฐ๋ณด๋ค ๋ค์ํด. ๊ฐ๊ฐ ํน์ง์ด ๋ค๋ฅด๊ณ ํ์ง ๋์ด๋๋ ๋ฌ๋ผ. ํ๋์ฉ ๋ฏ์ด๋ณด์!
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์์ด์ผ. TCP 3-way handshake๋ฅผ ์์ ํ ์๋ฃํด์ ํฌํธ๊ฐ ์ด๋ ค ์๋์ง ํ์ธํด.
SYN โ SYN-ACK โ ACK ์ด ์ธ ๋จ๊ณ๋ฅผ ๋ค ๊ฑฐ์น๋ ๊ฑฐ์ผ.
nmap -sT 192.168.1.1์ฅ์ : ๊ตฌํ์ด ์ฝ๊ณ ์ ํํด.
๋จ์ : ๋ก๊ทธ์ ์์ ํ ๋จ์์ ํ์ง๊ฐ ์ฌ์. ๐จ
TCP ์ฐ๊ฒฐ์ ์์ ํ ๋งบ์ง ์๊ณ SYN ํจํท๋ง ๋ณด๋ด์ ์๋ต์ ํ์ธํ๋ ๋ฐฉ์์ด์ผ.
ํฌํธ๊ฐ ์ด๋ ค ์์ผ๋ฉด SYN-ACK๊ฐ ์ค๊ณ , ๋ซํ ์์ผ๋ฉด RST๊ฐ ์. ๊ทธ๋ฌ๋ฉด ํด์ปค๋ ACK๋ฅผ ๋ณด๋ด์ง ์๊ณ RST๋ฅผ ๋ณด๋ด์ ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ ค.
nmap -sS 192.168.1.1์ฅ์ : ์ฐ๊ฒฐ์ด ์์ฑ๋์ง ์์์ ์ผ๋ถ ๋ก๊ทธ์ ์ ๋จ์ ์ ์์ด.
๋จ์ : ํ๋ IDS๋ ๋ค ์ก์๋ ใ
ใ
ใ
๋ฐฉ์ฌํ๋ฉด ์ ๋ผ.
UDP ํ๋กํ ์ฝ์ ์ด์ฉํ ์ค์บ์ด์ผ. UDP๋ ์ฐ๊ฒฐ ์งํฅ์ด ์๋๋ผ์ ์๋ต์ด ์์ผ๋ฉด ํฌํธ๊ฐ ์ด๋ ค ์์ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , ICMP "Port Unreachable" ๋ฉ์์ง๊ฐ ์ค๋ฉด ๋ซํ ์๋ ๊ฑฐ์ผ.
nmap -sU 192.168.1.1DNS(53), SNMP(161), DHCP(67/68) ๊ฐ์ UDP ์๋น์ค๋ฅผ ์ฐพ์ ๋ ์จ. ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์ด.
์ด๊ฑด ์ข ๊ต๋ฌํ ๋ฐฉ์์ด์ผ. TCP ํ๋๊ทธ๋ฅผ ๋น์ ์์ ์ผ๋ก ์ค์ ํด์ ๋ฐฉํ๋ฒฝ์ ์ฐํํ๋ ค๋ ์๋์ผ.
| ์ค์บ ์ข ๋ฅ | TCP ํ๋๊ทธ | ํน์ง |
|---|---|---|
| FIN ์ค์บ | FIN๋ง ์ค์ | ์ฐ๊ฒฐ ์ข ๋ฃ ํจํท์ฒ๋ผ ์์ฅ |
| NULL ์ค์บ | ํ๋๊ทธ ์์ | ์๋ฌด ํ๋๊ทธ๋ ์๋ ๋น์ ์ ํจํท |
| Xmas ์ค์บ | FIN+PSH+URG | ํฌ๋ฆฌ์ค๋ง์ค ํธ๋ฆฌ์ฒ๋ผ ํ๋๊ทธ ๋ค ์ผฌ ๐ |
RFC 793 ํ์ค์ ๋ฐ๋ฅด๋ฉด ๋ซํ ํฌํธ๋ RST๋ก ์๋ตํ๊ณ , ์ด๋ฆฐ ํฌํธ๋ ์๋ต ์์์ด์ผ. ๊ทผ๋ฐ Windows ์์คํ ์ ์ด ๊ท์น์ ๋ค๋ฅด๊ฒ ๊ตฌํํด์ ์ด ์ค์บ์ด ์ ์ ๋จนํ๊ธฐ๋ ํด ใ ใ
์ฌ๋ฌ IP์์ ์กฐ๊ธ์ฉ ๋๋ ์ ์ค์บํ๋ ๋ฐฉ์์ด์ผ. ๋จ์ผ IP์์ ๋๋์ ์ค์บ ํจํท์ด ์ค๋ฉด ๋ฐ๋ก ํ์ง๋๋๊น, ๋ด๋ท์ ์ด์ฉํด์ ์ฌ๋ฌ ๊ณณ์์ ์กฐ๊ธ์ฉ ์ค์บํ๋ ๊ฑฐ์ง. ํ์ง๊ฐ ์ง์ง ์ด๋ ค์์ ๊ณ ๊ธ ๊ธฐ๋ฒ์ผ๋ก ๋ถ๋ฅ๋ผ.
์์์ ์ค๋ช ํ ์ค์บ ๊ธฐ๋ฒ๋ค์ ๋ฐฉ์ด ๋ชฉ์ ์ ์ดํด๋ฅผ ์ํ ๊ฒ์ด์ผ. ํ๊ฐ ์์ด ํ์ธ์ ์์คํ ์ ์ฌ์ฉํ๋ฉด ๋ฒ์ ์ฒ๋ฒ์ ๋ฐ์ ์ ์์ด. ํญ์ ์์ ์ด ์์ ํ๊ฑฐ๋ ํ๊ฐ๋ฐ์ ์์คํ ์์๋ง ํ ์คํธํด!
์ด์ ์ง์ง ์ค์ํ ๋ถ๋ถ์ด์ผ. ํด์ปค๊ฐ ์ค์บํ๋ ๊ฑธ ์ด๋ป๊ฒ ์ก์๋ผ ์ ์์๊น? ํ์ง ๊ธฐ๋ฒ์ ์์์ผ ์ ๋๋ก ๋ฐฉ์ดํ ์ ์์ด!
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ด์ผ. ํน์ ์๊ฐ ๋ด์ ํ๋์ 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_SCANFIN, 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;)์ด๊ฑด ์ง์ง ์ค๋งํธํ ๋ฐฉ๋ฒ์ด์ผ! ์ค์ ๋ก ์๋น์คํ์ง ์๋ ํฌํธ๋ฅผ ์ด์ด๋๊ณ , ๊ฑฐ๊ธฐ์ ์ ๊ทผํ๋ IP๋ฅผ ์ค์บ๋๋ก ๊ฐ์ฃผํ๋ ๊ฑฐ์ผ.
์ ์์ ์ธ ์ฌ์ฉ์๋ ์๋ ค์ง ์๋น์ค ํฌํธ์๋ง ์ ๊ทผํ์ง, ๋๋คํ ํฌํธ์ ์ ๊ทผํ์ง ์๊ฑฐ๋ . ๊ทธ๋ฌ๋๊น ์ด์ํ ํฌํธ์ ์ ๊ทผํ๋ฉด "์ ์ค์บํ๊ณ ์๊ตฌ๋!" ํ๊ณ ๋ฐ๋ก ์ก์ ์ ์์ด.
Snort, Suricata ๊ฐ์ ์คํ์์ค IDS(์นจ์
ํ์ง ์์คํ
)๋ฅผ ์ฌ์ฉํ๋ฉด ํฌํธ ์ค์บ์ ์๋์ผ๋ก ํ์งํ ์ ์์ด.
IDS๋ ํ์ง๋ง ํ๊ณ , IPS๋ ํ์ง + ์ฐจ๋จ๊น์ง ํด.
| ๋๊ตฌ | ์ข ๋ฅ | ํน์ง |
|---|---|---|
| Snort | IDS/IPS | ๋ฃฐ ๊ธฐ๋ฐ ํ์ง, ์คํ์์ค, ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ |
| Suricata | IDS/IPS | ๋ฉํฐ์ค๋ ๋ ์ง์, ๊ณ ์ฑ๋ฅ, ์คํ์์ค |
| Zeek (Bro) | ๋คํธ์ํฌ ๋ถ์ | ๋คํธ์ํฌ ํธ๋ํฝ ๋ก๊ทธ ๋ถ์์ ํนํ |
| OSSEC | HIDS | ํธ์คํธ ๊ธฐ๋ฐ ์นจ์ ํ์ง, ๋ก๊ทธ ๋ถ์ |
์ต๊ทผ์๋ AI/ML์ ํ์ฉํ ์ด์ ํ์ง๊ฐ ๋ง์ด ์ฐ์ฌ. ์ ์ ํธ๋ํฝ ํจํด์ ํ์ต์์ผ๋๊ณ , ๊ฑฐ๊ธฐ์ ๋ฒ์ด๋๋ ํจํด์ ์๋์ผ๋ก ํ์งํ๋ ๋ฐฉ์์ด์ผ.
๋ถ์ฐ ์ค์บ์ฒ๋ผ ์๊ณ๊ฐ ๊ธฐ๋ฐ์ผ๋ก๋ ์ก๊ธฐ ์ด๋ ค์ด ๊ณต๊ฒฉ๋ ML๋ก๋ ํ์ง ๊ฐ๋ฅํด. ๋ค๋ง ๊ตฌ์ถ ๋น์ฉ์ด ๋๊ณ false positive(์คํ)๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๋จ์ ์ด ์์ด.
์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ๋ณด์ ์ ๋ฌธ๊ฐ๋ฅผ ์ฐพ์๋ณด๋ฉด IDS ๊ตฌ์ถ์ด๋ ๋ณด์ ์ปจ์คํ ์ ์ ๊ณตํ๋ ๋ถ๋ค์ด ๋ง์. ํผ์ ๋ค ํ๊ธฐ ์ด๋ ต๋ค๋ฉด ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ!
ํ์ง๋ ์ค์ํ์ง๋ง ์ ์ด์ ์ค์บ ์์ฒด๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ค๊ฑฐ๋, ์ค์บํด๋ ์ ๋ณด๋ฅผ ๋ชป ์ป๊ฒ ํ๋ ๋ฐฉ์ด ๊ธฐ๋ฒ๋ ์์์ผ ํด!
๋ฐฉํ๋ฒฝ์ ํฌํธ ์ค์บ ๋ฐฉ์ด์ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ์ด์ผ. ํ์ํ ํฌํธ๋ง ์ด๊ณ ๋๋จธ์ง๋ ๋ค ๋ซ๋ ํ์ดํธ๋ฆฌ์คํธ ๋ฐฉ์์ด ์ ์ผ ์์ ํด.
# 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 # ๋ฐฉํ๋ฒฝ ํ์ฑํ์ด๊ฑด ์ง์ง ์ ๊ธฐํ ๊ธฐ๋ฒ์ด์ผ! ํน์ ํฌํธ๋ค์ ์ ํด์ง ์์๋ก "๋
ธํฌ"(์ ๊ทผ ์๋)ํด์ผ๋ง ์ค์ ์๋น์ค ํฌํธ๊ฐ ์ด๋ฆฌ๋ ๋ฐฉ์์ด์ผ.
์๋ฅผ ๋ค์ด 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 = synSSH๋ฅผ 22๋ฒ ๋์ 22222๋ฒ์ด๋ ๋ค๋ฅธ ํฌํธ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ด์ผ. ์๋ฒฝํ ๋ฐฉ์ด๋ ์๋์ง๋ง ์๋ํ๋ ์ค์บ ๋๊ตฌ์ ๊ณต๊ฒฉ์ ์๋นํ ์ค์ฌ์ค.
ํนํ 22, 3389(RDP) ๊ฐ์ ์ ์๋ ค์ง ํฌํธ๋ ํญ์ ๊ณต๊ฒฉ ๋์์ด ๋๋๊น ๋ณ๊ฒฝํ๋ ๊ฒ ์ข์.
# SSH ํฌํธ ๋ณ๊ฒฝ (/etc/ssh/sshd_config)
Port 22222 # ๊ธฐ๋ณธ 22์์ ๋ณ๊ฒฝ
PermitRootLogin no # root ์ง์ ๋ก๊ทธ์ธ ๊ธ์ง
MaxAuthTries 3 # ์ธ์ฆ ์๋ ํ์ ์ ํ๋จ์ผ 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์๋ฒ ๋คํธ์ํฌ๋ฅผ ์ฌ๋ฌ ๊ตฌ์ญ์ผ๋ก ๋๋ ์ ํ ๊ตฌ์ญ์ด ๋ซ๋ ค๋ ๋ค๋ฅธ ๊ตฌ์ญ์ผ๋ก ๋ชป ๋์ด์ค๊ฒ ํ๋ ๋ฐฉ์์ด์ผ.
DMZ(๋น๋ฌด์ฅ์ง๋) ๊ฐ๋
์ ํ์ฉํด์ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ ์๋ฒ(์น์๋ฒ)์ ๋ด๋ถ ์๋ฒ(DB์๋ฒ)๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ ๊ธฐ๋ณธ์ด์ผ.
์ค์บ๋์๊ฒ ์๋ต์ ๋งค์ฐ ๋๋ฆฌ๊ฒ ๋ณด๋ด์ ์ค์บ ์๋๋ฅผ ๊ทน๋๋ก ๋ฆ์ถ๋ ๋ฐฉ์์ด์ผ. ์ค์บ๋ ์ ์ฅ์์๋ ํ์์์์ด ๊ณ์ ๋ฐ์ํด์ ์ค์บํ๊ธฐ ์์ฒญ ํ๋ค์ด์ ธ ใ ใ ใ
# iptables tarpit ์ค์ (xtables-addons ํ์)
iptables -A INPUT -p tcp -j TARPIT --tarpitNmap์ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ํฌํธ ์ค์บ๋์ผ. ํด์ปค๋ ์ฐ๊ณ ๋ณด์ ๊ด๋ฆฌ์๋ ์จ. ์๊ธฐ ์๋ฒ ์ ๊ฒํ ๋ ์ง์ง ์ ์ฉํด!
# ๊ธฐ๋ณธ ํฌํธ ์ค์บ (์์ 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.1Nmap ์ค์บ ๊ฒฐ๊ณผ์์ ํฌํธ ์ํ๋ ํฌ๊ฒ ์ธ ๊ฐ์ง์ผ:
| ์ํ | ์๋ฏธ | ๋์ ๋ฐฉ๋ฒ |
|---|---|---|
| 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 -10fail2ban์ ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ค๊ฐ ํน์ ํ์ ์ด์ ์คํจํ๋ฉด ์๋์ผ๋ก 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 sshdElasticsearch + Logstash + Kibana(ELK) ์คํ์ ํ์ฉํ๋ฉด ์ค์๊ฐ ๋ณด์ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋๋ฅผ ๋ง๋ค ์ ์์ด. ๋ก๊ทธ๋ฅผ ์๊ฐํํด์ ์ด์ ํจํด์ ํ๋์ ๋ณผ ์ ์๊ฑฐ๋ .
๊ท๋ชจ๊ฐ ํฐ ์๋น์ค๋ผ๋ฉด SIEM(Security Information and Event Management) ์๋ฃจ์
๋์
๋ ๊ณ ๋ คํด๋ด. Splunk, IBM QRadar, Microsoft Sentinel ๊ฐ์ ๊ฒ๋ค์ด ์์ด.
ํฌํธ ์ค์บ๋ ๋ฐฉ์ด๋ฅผ ์ง์ ์ค์ตํ๊ณ ์ถ๋ค๋ฉด VirtualBox๋ VMware๋ก ๊ฐ์ ํ๊ฒฝ์ ๊ตฌ์ถํด์ ํ ์คํธํด๋ด. Kali Linux(๊ณต๊ฒฉ์)์ Ubuntu(์๋ฒ)๋ฅผ ๊ฐ์ ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐํด์ ์ค์ตํ๋ฉด ์ง์ง ๋ง์ด ๋ฐฐ์ธ ์ ์์ด. ์ฌ๋ฅ๋ท์์ ๋ณด์ ์ค์ต ๊ฐ์๋ฅผ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ!
์ด๋ก ์ ์ถฉ๋ถํ ๋ฐฐ์ ์ผ๋๊น ์ค์ ๋ก ๋ด ์๋ฒ์ ์ ์ฉํ ์ ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ ๋ฆฌํด์ค๊ฒ!
| ๋ถ๋ฅ | ํญ๋ชฉ | ์ฐ์ ์์ |
|---|---|---|
| ๋ฐฉํ๋ฒฝ | ๋ถํ์ํ ํฌํธ ๋ชจ๋ ์ฐจ๋จ (filtered ์ํ) | ๐ด ๋์ |
| ๋ฐฉํ๋ฒฝ | ํ์ดํธ๋ฆฌ์คํธ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด ์ค์ | ๐ด ๋์ |
| SSH | ๊ธฐ๋ณธ ํฌํธ(22) ๋ณ๊ฒฝ | ๐ก ์ค๊ฐ |
| SSH | root ์ง์ ๋ก๊ทธ์ธ ๋นํ์ฑํ | ๐ด ๋์ |
| 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
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.

๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.