Ver3.5 ๐ ํด๋ผ์ฐ๋ ๋ณด์ ๊ทธ๋ฃน(Security Group) ์ค์ ์๋ฆฌ

๐ ํด๋ผ์ฐ๋ ๋ณด์ ๊ทธ๋ฃน(Security Group) ์ค์ ์๋ฆฌ
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์๋ฒ๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด ๋ณด์ ๊ทธ๋ฃน(Security Group)์ ํผํ ์ ์๋ ๊ฐ๋
์ด์์.
์ฒ์์ ๋ญ๊ฐ ๋ณต์กํด ๋ณด์ด์ง๋ง, ์๋ฆฌ๋ฅผ ์ ๋๋ก ์ดํดํ๋ฉด ์๊ฐ๋ณด๋ค ์ง๊ด์ ์ด๊ณ ๊ฐ๋ ฅํ ๋๊ตฌ๋ผ๋ ๊ฑธ ์๊ฒ ๋ฉ๋๋ค.
์ค๋์ AWS๋ฅผ ์ค์ฌ์ผ๋ก ๋ณด์ ๊ทธ๋ฃน์ ์ค์ ์๋ฆฌ๋ฅผ ๋ฑ๋ฑ์ด ํํค์ณ ๋ณผ๊ฒ์! ๐ฏ
๋ณด์ ๊ทธ๋ฃน์ ํด๋ผ์ฐ๋ ํ๊ฒฝ(ํนํ AWS)์์ ์ธ์คํด์ค ์์ค์ ๊ฐ์ ๋ฐฉํ๋ฒฝ์ด์์.
์ฝ๊ฒ ๋งํ๋ฉด, ์๋ฒ ์์ ์ธ์๋ ๊ฒฝ๋น์ ๊ฐ์ ์กด์ฌ์
๋๋ค.
"์ด ํฌํธ๋ก ์ค๋ ์ด IP์ ์์ฒญ๋ง ๋ค์ฌ๋ณด๋ด์ค!" ํ๊ณ ๋ช
๋ นํ๋ฉด ๊ทธ๋๋ก ์คํํ๋ ๊ฑฐ์ฃ ใ
ใ
ใ
๊ท์น์ ์์ผ๋ฉด ์๋์ผ๋ก ์ฐจ๋จ โ ์ด๊ฒ ๊ธฐ๋ณธ ๋์ ๋ฐฉ์์ด์์!
AWS์ ๋ณด์ ๊ทธ๋ฃน์ EC2 ์ธ์คํด์ค, RDS, Lambda, ELB ๋ฑ ๋ค์ํ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ ์๊ณ ,
ํ๋์ ์ธ์คํด์ค์ ์ฌ๋ฌ ๋ณด์ ๊ทธ๋ฃน์ ๋์์ ์ ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
(์ต๋ 5๊ฐ๊น์ง ๊ธฐ๋ณธ ์ ์ฉ ๊ฐ๋ฅ, ์์ฒญ ์ ๋๋ฆด ์ ์์)
์ด ๋์ ์ ์ฉ ๋ ๋ฒจ์ด ๋ฌ๋ผ์!
๋ณด์ ๊ทธ๋ฃน โ ์ธ์คํด์ค(์๋ฒ) ๋ ๋ฒจ ๋ฐฉํ๋ฒฝ, Stateful
๋คํธ์ํฌ ACL โ ์๋ธ๋ท ๋ ๋ฒจ ๋ฐฉํ๋ฒฝ, Stateless
Stateful์ด๋? ์ธ๋ฐ์ด๋ ์์ฒญ์ ํ์ฉํ๋ฉด, ๊ทธ ์๋ต ํธ๋ํฝ์ ์์๋ฐ์ด๋ ๊ท์น๊ณผ ๋ฌด๊ดํ๊ฒ ์๋์ผ๋ก ํ์ฉ๋ฉ๋๋ค.
Stateless์ธ NACL์ ์ธ๋ฐ์ด๋/์์๋ฐ์ด๋๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ์ค์ ํด์ผ ํด์.
๋ค์ด์ค๋ ๊ฑฐ = ์ธ๋ฐ์ด๋, ๋๊ฐ๋ ๊ฑฐ = ์์๋ฐ์ด๋!
์ธ๋ฐ์ด๋๋ ์ธ๋ถ์์ ์๋ฒ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ์ ์ดํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์ ์ํ ๋, ๊ทธ ์์ฒญ์ด ์๋ฒ๋ก ๋ค์ด์ค๋ ๋ฐฉํฅ์ด ์ธ๋ฐ์ด๋์์.
SSH๋ก ์๋ฒ์ ์ ์ํ๋ ๊ฒ๋ ์ธ๋ฐ์ด๋ ํธ๋ํฝ์
๋๋ค.
- ํฌํธ 80 (HTTP): ๋ชจ๋ IP(0.0.0.0/0) ํ์ฉ
- ํฌํธ 443 (HTTPS): ๋ชจ๋ IP(0.0.0.0/0) ํ์ฉ
- ํฌํธ 3306 (MySQL): ํน์ ๋ณด์ ๊ทธ๋ฃน ID๋ง ํ์ฉ
์์๋ฐ์ด๋๋ ์๋ฒ์์ ์ธ๋ถ๋ก ๋๊ฐ๋ ํธ๋ํฝ์ ์ ์ดํฉ๋๋ค.
์๋ฒ๊ฐ ์ธ๋ถ API๋ฅผ ํธ์ถํ๊ฑฐ๋, ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ฑฐ๋, DB์ ์ฐ๊ฒฐํ ๋ ๋ฐ์ํ๋ ํธ๋ํฝ์ด์์.
AWS ๊ธฐ๋ณธ ์ค์ ์ ์์๋ฐ์ด๋ ์ ์ฒด ํ์ฉ(All traffic, 0.0.0.0/0)์ด์์.
๋ณด์์ ๊ฐํํ๊ณ ์ถ๋ค๋ฉด ํ์ํ ํฌํธ/IP๋ง ์ด์ด๋๋ ์ต์ ๊ถํ ์์น(Least Privilege)์ ์ ์ฉํ์ธ์!
| ๊ตฌ๋ถ | ๋ฐฉํฅ | ๊ธฐ๋ณธ๊ฐ | ์ฃผ์ ์ฉ๋ |
|---|---|---|---|
| ์ธ๋ฐ์ด๋ | ์ธ๋ถ โ ์๋ฒ | ์ ์ฒด ์ฐจ๋จ | ์น ์ ์, SSH, DB ์ฐ๊ฒฐ |
| ์์๋ฐ์ด๋ | ์๋ฒ โ ์ธ๋ถ | ์ ์ฒด ํ์ฉ | API ํธ์ถ, ํจํค์ง ์ค์น, ์ธ๋ถ DB |
CIDR(Classless Inter-Domain Routing)์ IP ์ฃผ์ ๋ฒ์๋ฅผ ํํํ๋ ๋ฐฉ์์ด์์.
IP์ฃผ์/์ซ์ ํํ๋ก ์ฐ๋๋ฐ, ๋ค์ ์ซ์๊ฐ ํด์๋ก ๋ฒ์๊ฐ ์ข์์ง๋๋ค.
| CIDR ํ๊ธฐ | ์๋ฏธ | IP ๊ฐ์ | ์ฌ์ฉ ์์ |
|---|---|---|---|
0.0.0.0/0 |
๋ชจ๋ IP ํ์ฉ | ์ฝ 43์ต ๊ฐ | ๊ณต๊ฐ ์น์๋ฒ |
192.168.1.0/24 |
192.168.1.0 ~ 192.168.1.255 | 256๊ฐ | ์ฌ๋ด ๋คํธ์ํฌ |
10.0.0.0/16 |
10.0.0.0 ~ 10.0.255.255 | 65,536๊ฐ | VPC ๋ด๋ถ |
203.0.113.5/32 |
๋ฑ ํ๋์ IP๋ง | 1๊ฐ | ํน์ ๊ฐ๋ฐ์ IP |
0.0.0.0/0์ผ๋ก ์ด์ง ๋ง์ธ์!์ ์ธ๊ณ ํด์ปค๋ค์ด 22๋ฒ ํฌํธ ์ค์บ์ 24์๊ฐ ๋๋ฆฌ๊ณ ์๊ฑฐ๋ ์ ๐ฑ
๋ฐ๋์ ๋ณธ์ธ IP(
๋ดIP/32) ๋๋ VPN IP๋ง ํ์ฉํ์ธ์!
์ผ๋ฐ์ ์ธ ์น ์๋ฒ๋ฅผ ์ด์ํ ๋์ ๊ธฐ๋ณธ ๋ณด์ ๊ทธ๋ฃน ์ค์ ์ด์์.
์ด ์ ๋๋ฉด ์ค๋ฌด์์ ๋ฐ๋ก ์จ๋ ๋ ์์ค์
๋๋ค ใ
ใ
# ์ธ๋ฐ์ด๋ ๊ท์น (Inbound Rules)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ ํ โ ํ๋กํ ์ฝ โ ํฌํธ โ ์์ค โ ์ค๋ช
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ SSH โ TCP โ 22 โ ๋ดIP/32 โ ๊ด๋ฆฌ์ SSH โ
โ HTTP โ TCP โ 80 โ 0.0.0.0/0 โ ์น ์ ์ โ
โ HTTPS โ TCP โ 443 โ 0.0.0.0/0 โ ๋ณด์ ์น ์ ์โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# ์์๋ฐ์ด๋ ๊ท์น (Outbound Rules)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ ํ โ ํ๋กํ ์ฝ โ ํฌํธ โ ๋์ โ ์ค๋ช
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ All โ All โ All โ 0.0.0.0/0 โ ์ ์ฒด ํ์ฉ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
DB ์๋ฒ๋ ์ ๋ ์ธํฐ๋ท์ ์ง์ ๋
ธ์ถํ๋ฉด ์ ๋ผ์!
์น ์๋ฒ์ ๋ณด์ ๊ทธ๋ฃน ID๋ง ํ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ค์ ํ๋ ๊ฒ ์ ์์
๋๋ค.
# RDS ์ธ๋ฐ์ด๋ ๊ท์น
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ ํ โ ํ๋กํ ์ฝ โ ํฌํธ โ ์์ค โ ์ค๋ช
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ MySQL/Auroraโ TCP โ 3306 โ sg-์น์๋ฒ๋ณด์๊ทธ๋ฃนID โ ์นโDB โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ํ์ง๋ง ๋ณด์ ๊ทธ๋ฃน ID๋ ๋ณํ์ง ์์ผ๋๊น, ์น ์๋ฒ IP๊ฐ ๋ฐ๋์ด๋ DB ์ ์ ๊ท์น์ ์์ ํ ํ์๊ฐ ์์ด์!
์ด๊ฒ ๋ฐ๋ก ๋ณด์ ๊ทธ๋ฃน ์ฐธ์กฐ(Security Group Reference) ๋ฐฉ์์ ๋๋ค ๐ฏ
์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ 3๊ณ์ธต ๊ตฌ์กฐ์์์ ๋ณด์ ๊ทธ๋ฃน ์ค๊ณ์์.
์น โ ์ฑ โ DB ์์๋ก ํธ๋ํฝ์ด ํ๋ฅด๊ณ , ๊ฐ ๊ณ์ธต์ ์ ๊ณ์ธต์ ๋ณด์ ๊ทธ๋ฃน๋ง ํ์ฉํฉ๋๋ค.
์์๋ฐ์ด๋: 8080 โ ์ฑ ๊ณ์ธต ๋ณด์ ๊ทธ๋ฃน
โ๏ธ ์ฑ ๊ณ์ธต (EC2)
์ธ๋ฐ์ด๋: 8080 โ ์น ๊ณ์ธต ๋ณด์ ๊ทธ๋ฃน๋ง
์์๋ฐ์ด๋: 3306 โ DB ๊ณ์ธต ๋ณด์ ๊ทธ๋ฃน
๐๏ธ DB ๊ณ์ธต (RDS)
์ธ๋ฐ์ด๋: 3306 โ ์ฑ ๊ณ์ธต ๋ณด์ ๊ทธ๋ฃน๋ง
์์๋ฐ์ด๋: ๊ธฐ๋ณธ ํ์ฉ
๋ณด์ ๊ทธ๋ฃน์ด Statefulํ๋ค๋ ๊ฒ ๋ฌด์จ ์๋ฏธ์ธ์ง ์ ๋๋ก ์ดํดํด๋ด
์๋ค.
์ด๊ฒ NACL๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ด๊ณ , ์ค๋ฌด์์ ์์ฒญ ์ค์ํ ๊ฐ๋
์ด์์!
2๏ธโฃ ์ธ๋ฐ์ด๋ ๊ท์น: ํฌํธ 80, 0.0.0.0/0 ํ์ฉ โ โ ํต๊ณผ!
3๏ธโฃ ์๋ฒ๊ฐ ์๋ต์ ๋ณด๋ผ ๋ (์: ํด๋ผ์ด์ธํธ์ ์์ ํฌํธ 54321๋ก)
4๏ธโฃ ์์๋ฐ์ด๋ ๊ท์น์ ํฌํธ 54321์ด ์์ด๋ โ โ ์๋ ํ์ฉ!
์๋๋ฉด? ๋ณด์ ๊ทธ๋ฃน์ด "์ด ์ฐ๊ฒฐ์ ๋ด๊ฐ ํ์ฉํ ์ธ๋ฐ์ด๋ ์์ฒญ์ ์๋ต์ด์ผ"๋ผ๊ณ ์ํ(State)๋ฅผ ๊ธฐ์ตํ๊ธฐ ๋๋ฌธ์ด์์!
๊ทธ๋์ ์ธ๋ฐ์ด๋๋ก 80 ํ์ฉํด๋, ์๋ต ํธ๋ํฝ์ ์ํ ์์๋ฐ์ด๋ ์์ ํฌํธ(1024-65535)๋ ๋ฐ๋ก ์ด์ด์ค์ผ ํฉ๋๋ค.
NACL ์ค์ ํ ๋ ์ด๊ฑฐ ๋ชจ๋ฅด๋ฉด ์ ์ ๋๋์ง ํ์ฐธ ํค๋งค๊ฒ ๋ฉ๋๋ค ใ ใ ใ
ํ์ํ ํฌํธ๋ง, ํ์ํ IP๋ง ์ด์ด๋์ธ์.
"์ผ๋จ ๋ค ์ด์ด๋๊ณ ๋์ค์ ๋ง์"๋ ์๊ฐ์ ์ ๋ ๊ธ๋ฌผ์
๋๋ค ๐ซ
ํนํ 0.0.0.0/0์ผ๋ก ๋ชจ๋ ํฌํธ๋ฅผ ์ฌ๋ ๊ฑด ์์ดํ์์์ ใ
ใ
ํ๋์ ๋ณด์ ๊ทธ๋ฃน์ ๋ชจ๋ ๊ท์น์ ๋๋ ค๋ฃ์ง ๋ง์ธ์.
์ญํ ๋ณ๋ก ๋ถ๋ฆฌํ๋ฉด ๊ด๋ฆฌ๊ฐ ํจ์ฌ ์ฌ์์ง๋๋ค.
sg-bastion: ๋ฐฐ์ค์ฒ ํธ์คํธ์ฉ (SSH ํ์ฉ)-
sg-web: ์น ์๋ฒ์ฉ (80, 443 ํ์ฉ)-
sg-app: ์ฑ ์๋ฒ์ฉ (๋ด๋ถ ํต์ ๋ง)-
sg-db: DB์ฉ (์ฑ ์๋ฒ๋ง ํ์ฉ)-
sg-monitoring: ๋ชจ๋ํฐ๋ง ์์ด์ ํธ์ฉ
๊ท์น๋ง๋ค ์ค๋ช
์ ๊ผญ ์จ๋์ธ์.
6๊ฐ์ ํ์ "์ด ๊ท์น ์ ์๋ ๊ฑฐ์ง?" ํ๋ฉด์ ๋ฉ๋๋ฆฌ๋ ์ํฉ์ ๋ฐฉ์งํ ์ ์์ด์ ใ
ใ
ใ
์: "2024-01 ๊ฐ๋ฐํ ๊น์ฒ ์ ์์ฒญ - ์ฌ๋ฌด์ค IP SSH ์ ์"
์ฌ์ฉํ์ง ์๋ ๊ท์น์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฆฌํ์ธ์.
AWS Config๋ Security Hub๋ฅผ ํ์ฉํ๋ฉด ๋ฏธ์ฌ์ฉ ๋ณด์ ๊ทธ๋ฃน์ด๋ ๊ณผ๋ํ ๊ถํ์ ์๋์ผ๋ก ํ์งํ ์ ์์ด์.
โ RDP(3389๋ฒ) ํฌํธ๋ฅผ 0.0.0.0/0์ผ๋ก ์ด๊ธฐ
โ DB ํฌํธ(3306, 5432, 1433)๋ฅผ ์ธํฐ๋ท์ ์ง์ ๋ ธ์ถ
โ ๋ชจ๋ ํฌํธ(0-65535)๋ฅผ ์ ์ฒด ํ์ฉ
โ ๋ณด์ ๊ทธ๋ฃน ๊ท์น์ ์ค๋ช ์์ด IP๋ง ์ ๊ธฐ
โ ํด์ฌํ ์ง์ IP ๊ท์น ๋ฐฉ์นํ๊ธฐ
์ฝ์ ํด๋ฆญํด๋ฆญ๋ ์ข์ง๋ง, CLI๋ฅผ ์ฐ๋ฉด ์๋ํ์ IaC(Infrastructure as Code)๊ฐ ๊ฐ๋ฅํด์ ธ์.
DevOps ์์ง๋์ด๋ผ๋ฉด CLI ๋ช
๋ น์ด๋ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ์
๋๋ค ใ
ใ
# ๋ณด์ ๊ทธ๋ฃน ์์ฑ
aws ec2 create-security-group \
--group-name my-web-sg \
--description "์น ์๋ฒ์ฉ ๋ณด์ ๊ทธ๋ฃน" \
--vpc-id vpc-xxxxxxxx
# ์ถ๋ ฅ ์์
{
"GroupId": "sg-0123456789abcdef0"
}
# HTTP(80) ์ ์ฒด ํ์ฉ
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
# HTTPS(443) ์ ์ฒด ํ์ฉ
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0
# SSH(22) ํน์ IP๋ง ํ์ฉ
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.5/32
# ํน์ ๋ณด์ ๊ทธ๋ฃน ์์ธ ์กฐํ
aws ec2 describe-security-groups \
--group-ids sg-0123456789abcdef0
# ์ด๋ฆ์ผ๋ก ๊ฒ์
aws ec2 describe-security-groups \
--filters Name=group-name,Values=my-web-sg
# ์ธ๋ฐ์ด๋ ๊ท์น ์ญ์
aws ec2 revoke-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.5/32
์์ฆ ์ค๋ฌด์์๋ ๋ณด์ ๊ทธ๋ฃน์ ์ฝ์์์ ์ง์ ๋ง๋ค๊ธฐ๋ณด๋ค Terraform ๊ฐ์ IaC ๋๊ตฌ๋ก ๊ด๋ฆฌํ๋ ๊ฒ ํธ๋ ๋์์.
์ฝ๋๋ก ๊ด๋ฆฌํ๋ฉด ๋ฒ์ ๊ด๋ฆฌ, ๋ฆฌ๋ทฐ, ์๋ํ๊ฐ ๊ฐ๋ฅํด์ง๊ฑฐ๋ ์ ๐
# main.tf - ์น ์๋ฒ ๋ณด์ ๊ทธ๋ฃน Terraform ์ฝ๋
resource "aws_security_group" "web_sg" {
name = "web-server-sg"
description = "์น ์๋ฒ์ฉ ๋ณด์ ๊ทธ๋ฃน"
vpc_id = aws_vpc.main.id
# ์ธ๋ฐ์ด๋: HTTP ํ์ฉ
ingress {
description = "HTTP from Internet"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# ์ธ๋ฐ์ด๋: HTTPS ํ์ฉ
ingress {
description = "HTTPS from Internet"
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# ์ธ๋ฐ์ด๋: SSH (๊ด๋ฆฌ์ IP๋ง)
ingress {
description = "SSH from Admin"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["203.0.113.5/32"]
}
# ์์๋ฐ์ด๋: ์ ์ฒด ํ์ฉ
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "web-server-sg"
Environment = "production"
ManagedBy = "terraform"
}
}
# DB ๋ณด์ ๊ทธ๋ฃน (์ฑ ์๋ฒ๋ง ํ์ฉ)
resource "aws_security_group" "db_sg" {
name = "database-sg"
description = "RDS ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ ๋ณด์ ๊ทธ๋ฃน"
vpc_id = aws_vpc.main.id
ingress {
description = "MySQL from App Server"
from_port = 3306
to_port = 3306
protocol = "tcp"
security_groups = [aws_security_group.app_sg.id]
}
tags = {
Name = "database-sg"
}
}
aws_security_group_rule ๋ฆฌ์์ค๋ฅผ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๋ฉด ๊ท์น ์ถฉ๋ ๋ฐฉ์ง ๊ฐ๋ฅ-
lifecycle { create_before_destroy = true } ์ค์ ์ผ๋ก ๋ฌด์ค๋จ ์
๋ฐ์ดํธ- ๋ณ์(variables)๋ก IP ๋ชฉ๋ก ๊ด๋ฆฌํ๋ฉด ์ฌ๋ฌ ํ๊ฒฝ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
AWS๋ง ์ฐ๋ ๊ฒ ์๋๋ผ๋ฉด, ๋ค๋ฅธ ํด๋ผ์ฐ๋์์ ๋น์ทํ ๊ฐ๋
์ด ๋ญ์ง ์์๋๋ฉด ์ข์์.
์ด๋ฆ์ ๋ฌ๋ผ๋ ์๋ฆฌ๋ ๊ฑฐ์ ๊ฐ์ต๋๋ค ใ
ใ
| ํด๋ผ์ฐ๋ | AWS | GCP | Azure |
|---|---|---|---|
| ๋ฐฉํ๋ฒฝ ๊ฐ๋ | Security Group | Firewall Rules | NSG (Network Security Group) |
| ์ ์ฉ ๋ ๋ฒจ | ์ธ์คํด์ค | ๋คํธ์ํฌ/์ธ์คํด์ค | ์๋ธ๋ท/NIC |
| Stateful | โ Yes | โ Yes | โ Yes |
| ๊ฑฐ๋ถ ๊ท์น | โ ์์ | โ ์์ | โ ์์ |
| ์ฐ์ ์์ | ์์(๋ชจ๋ ํ์ฉ) | ์ซ์๋ก ์ง์ | ์ซ์๋ก ์ง์ (๋ฎ์์๋ก ์ฐ์ ) |
Allow์ Deny ๊ท์น ๋ชจ๋ ์ง์ํ๊ณ , ์ฐ์ ์์(Priority) ์ซ์๋ก ๊ท์น ์์๋ฅผ ์ ํฉ๋๋ค.
๐ฃ Azure NSG ํน์ง
Azure์ NSG๋ ์๋ธ๋ท์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค(NIC)์ ์ฐ๊ฒฐํด์.
์ธ๋ฐ์ด๋/์์๋ฐ์ด๋ ๋ชจ๋ Allow/Deny ๊ท์น์ ์ง์ํ๊ณ , ์ฐ์ ์์ 100~4096 ๋ฒ์๋ก ์ค์ ํฉ๋๋ค.
๋๋ฒ๊น
ํ๋ ค๊ณ ์ ๊น 0.0.0.0/0์ผ๋ก ์ด์ด๋๊ณ ํด๊ทผํ๋ ๊ฒฝ์ฐ ใ
ใ
ใ
์ด๋ฐ ์์ ๊ท์น์ด ๋ช ๋ฌ์ฉ ๋ฐฉ์น๋๋ ๊ฒฝ์ฐ๊ฐ ์ค๋ฌด์์ ์ ๋ง ๋ง์์.
AWS Config ๊ท์น์ด๋ Lambda ํจ์๋ก ๊ณผ๋ํ ๊ถํ ๊ท์น์ ์๋ ํ์งํ๋ ์์คํ
์ ๋ง๋ค์ด๋์ธ์!
๊ด๋ฆฌํ๊ธฐ ๊ท์ฐฎ๋ค๊ณ ํ๋์ ๋ณด์ ๊ทธ๋ฃน์ ๋ชจ๋ ๊ท์น์ ๋ฃ์ผ๋ฉด,
๋์ค์ ์ด๋ค ์ธ์คํด์ค์ ์ด๋ค ๊ท์น์ด ์ ์ฉ๋๋์ง ํ์
์ด ์ ๋ผ์.
์ญํ ๋ณ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ ์ฅ๊ธฐ์ ์ผ๋ก ํจ์ฌ ํธํฉ๋๋ค.
๋ค๋ฅธ ๋ณด์ ๊ทธ๋ฃน์ ์์ค๋ก ์ฐธ์กฐ๋๊ณ ์๋ ๋ณด์ ๊ทธ๋ฃน์ ์ญ์ ํ๋ ค ํ๋ฉด ์๋ฌ๊ฐ ๋ฉ๋๋ค.
์ญ์ ์ ์ ๋ฐ๋์ ์ด๋ค ๋ฆฌ์์ค๊ฐ ์ฐธ์กฐํ๊ณ ์๋์ง ํ์ธํ์ธ์!
IPv4๋ง ํ์ฉํด๋๊ณ "์ ์ผ๋ถ ์ฌ์ฉ์๋ ์ ์์ด ์ ๋์ง?" ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์.
IPv6 ์ฌ์ฉ์๋ฅผ ์ํด ::/0 ๊ท์น๋ ํจ๊ป ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋ณด์ ๊ทธ๋ฃน ๊ท์น์ ๋ณ๊ฒฝ ์ฆ์ ์ ์ฉ๋ฉ๋๋ค โ ์ด๊ฑด ๋ง์์.
ํ์ง๋ง ๊ธฐ์กด ์ฐ๊ฒฐ(established connection)์ ์ํฅ์ ๋ฐ์ง ์์ ์ ์์ด์.
๊ท์น ๋ณ๊ฒฝ ํ ๊ธฐ์กด ์ธ์
์ ๋์ด์ผ ์ ๊ท์น์ด ์์ ํ ์ ์ฉ๋๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ค์ ๋ง ์ ํด๋๋๋ค๊ณ ๋์ด ์๋์์.
์ง์์ ์ธ ๋ชจ๋ํฐ๋ง๊ณผ ๊ฐ์ฌ๊ฐ ๋ณด์์ ์์ฑ์
๋๋ค ๐ช
์: "SSH๊ฐ 0.0.0.0/0์ผ๋ก ์ด๋ฆฐ ๋ณด์ ๊ทธ๋ฃน ํ์ง" ๊ท์น ์ค์ ๊ฐ๋ฅ
2. AWS Security Hub
CIS AWS Foundations Benchmark ๊ธฐ์ค์ผ๋ก ๋ณด์ ๊ทธ๋ฃน ์ค์ ์ ์๋ ์ ๊ฒํด์ค๋๋ค.
"unrestricted SSH access" ๊ฐ์ ์ทจ์ฝ์ ์ ์๋์ผ๋ก ์ฐพ์์ค์.
3. VPC Flow Logs
์ค์ ๋ก ์ด๋ค ํธ๋ํฝ์ด ํ์ฉ/์ฐจ๋จ๋์๋์ง ๋ก๊ทธ๋ก ํ์ธํ ์ ์์ด์.
CloudWatch Logs๋ S3์ ์ ์ฅํด์ ๋ถ์ ๊ฐ๋ฅํฉ๋๋ค.
4. Amazon GuardDuty
๋น์ ์์ ์ธ ๋คํธ์ํฌ ํธ๋ํฝ ํจํด์ AI๋ก ํ์งํด์ค๋๋ค.
๋ณด์ ๊ทธ๋ฃน์ด ๋ซ๋ ธ์ ๋ ์ด์ ์งํ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ํ ์ ์์ด์.
aws ec2 create-flow-logs --resource-type VPC --resource-ids vpc-xxxxxxxx --traffic-type ALL --log-destination-type cloud-watch-logs --log-group-name /aws/vpc/flowlogs์ด๊ฑธ ์ผ๋๋ฉด ๋ณด์ ๊ทธ๋ฃน์์ ์ด๋ค ํธ๋ํฝ์ด ACCEPT/REJECT ๋๋์ง ๋ค ๋ณผ ์ ์์ด์!
์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํด๋ณผ๊ฒ์!
- โ ๋ณด์ ๊ทธ๋ฃน์ ์ธ์คํด์ค ๋ ๋ฒจ์ ๊ฐ์ ๋ฐฉํ๋ฒฝ โ ํ์ฉ ๊ท์น๋ง ์กด์ฌ
- โ Stateful: ์ธ๋ฐ์ด๋ ํ์ฉ ์ ์๋ต ํธ๋ํฝ ์๋ ํ์ฉ
- โ ์ธ๋ฐ์ด๋(์ธ๋ถโ์๋ฒ) / ์์๋ฐ์ด๋(์๋ฒโ์ธ๋ถ) ๋ฐฉํฅ ๊ตฌ๋ถ
- โ CIDR ํ๊ธฐ๋ฒ์ผ๋ก IP ๋ฒ์ ์ง์ (/32 = ๋จ์ผ IP, /0 = ์ ์ฒด)
- โ ์ต์ ๊ถํ ์์น: ํ์ํ ํฌํธ๋ง, ํ์ํ IP๋ง
- โ ์ญํ ๋ณ ๋ณด์ ๊ทธ๋ฃน ๋ถ๋ฆฌ โ ๊ด๋ฆฌ ํจ์จ UP
- โ ๋ณด์ ๊ทธ๋ฃน ID ์ฐธ์กฐ ๋ฐฉ์์ผ๋ก ๋์ ํ๊ฒฝ ๋์
- โ Terraform์ผ๋ก IaC ๊ด๋ฆฌ โ ๋ฒ์ ๊ด๋ฆฌ + ์๋ํ
- โ AWS Config, Security Hub, VPC Flow Logs๋ก ์ง์ ๋ชจ๋ํฐ๋ง
ํด๋ผ์ฐ๋ ๋ณด์์ ํ ๋ฒ ์ค์ ํ๊ณ ๋๋๋ ๊ฒ ์๋์์.
์ง์์ ์ธ ๊ฒํ ์ ๊ฐ์ ์ด ํ์ํ ์ด์์๋ ํ๋ก์ธ์ค์
๋๋ค.
์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ฌ๋ฌ๋ถ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋ ์์ ํ๊ฒ ๋ง๋ค์ด๋ณด์ธ์! ๐
ํด๋ผ์ฐ๋ ์ํคํ
์ฒ ์ค๊ณ๋ ๋ณด์ ์ค์ ์ ๋ํด ์ ๋ฌธ๊ฐ์ ๋์์ด ํ์ํ๋ค๋ฉด,
์ฌ๋ฅ๋ท์์ ํด๋ผ์ฐ๋/DevOps ์ ๋ฌธ๊ฐ๋ฅผ ์ฐพ์๋ณด๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์์.
๋ค์ํ ์ค๋ฌด ๊ฒฝํ์ ๊ฐ์ง ์ ๋ฌธ๊ฐ๋ค์ด ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ๋ฅผ ๋์์ค ์ ์๋ต๋๋ค ๐
๐ ๋ณด์์ ์ ํ์ด ์๋ ํ์! ์ค๋๋ถํฐ ๋ณด์ ๊ทธ๋ฃน ์ค์ ์ ๋๋ก ํด๋ด
์๋ค ๐ช
๊ถ๊ธํ ์ ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์ โ ๊ฐ์ด ์ฑ์ฅํด์! ๐ฑ
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.