※ 공부 중이라 틀린 부분이 있을 수도 있습니다.
TL;DR (결론)
둘 다 보안을 위한 방화벽 기능을 갖고 있지만
Security Group 는 "인스턴스" 단위를 설정하는 Firewall(방화벽) 기능이다.
Network ACL 는 "서브넷" 단위의 전체 인스턴스에 적용하는 Firewall(방화벽) 기능이다.
Security Group → EC2 Instance
Network ACL → Subnet
비교 요약
Security Groups | Network ACLs | |
적용 수준 | 인스턴스 (네트워크 인터페이스) | 서브넷 |
상태 관리 | 상태 저장(Stateful) inbound를 허용하면 outbound도 허용 |
상태 비저장(Stateless) inbound를 허용해도 outbound는 별로로 허용해야함 |
기본 설정 | 기본으로 모든 트래픽을 일단 차단, 허용 규칙만 설정 가능 |
허용 규칙과 차단 규칙을 설정 가능 |
규칙 적용 방식 | 모든 규칙을 적용 | 번호 순서대로 규칙을 적용 |
변경 적용 | 즉시 적용 | 즉시 적용 |
주요 사용 사례 | 인스턴스 수준의 세부적인 보안 설정 | 서브넷 수준의 기본 네트워크 트래픽 필터링 |
좀더 자세히 알아보자!
보안 그룹
Security Group
Security Group은 인스턴스을 위한 방화벽이다.
인스턴스에 들어오는 인바운드(inbound) 와 외부로 나가는 아웃바운드(outbound) 의 트래픽을 제어해주는 보안 장치이다.
외부에서 들어 오는 트레픽을 허용(Accept)하는 방식이다. (반대로 특정 IP를 막지를 못한다)
- 기본 설정: 모든 인바운드 통신을 거부하고, 모든 아웃바운드 통신을 허용.
- 여기서 관리자가 외부에서 들어 오는 특정 IP를 추가하여 통신을 허용하는 방식.
- 반대로 특정 IP 를 막을 수는 없다. 들어오는거 허용만 가능.
- 그러나 Network ACL은 특정 IP를 막을 수 있다.
Security Group의 Inbound 예시)
Type | Protocol | Port Range | Source | Description |
SSH | TCP | 22 | 0.0.0.0/0 (Anywhere) | All Traffic |
HTTP | TCP | 80 | 102.34.11.134 | Seoul Home |
- "0.0.0.0/0" 는 인터넷에서 들어오는 모든 트래픽을 허용한다는 뜻이다.
- Source에 적혀있는 IP 주소만 접속 가능하다. 안 적혀있으면 접속 불가.
- 1개의 Security Group 당 최대 60개 적을 수 있다.
"Network Access Control List"
Network ACL
Network ACL은 VPC의 서브넷(Subnet) 수준에서 작동하는 방화벽이다.
인바운드(inbound)와 아웃바운드(outbound) 트래픽에 대한 규칙을 정의하여 특정 서브넷에 대한 보안 정책을 설정한다.
Security Group과 달리 허용 규칙(Allow)과 거부 규칙(Deny)을 모두 설정할 수 있다
- 기본 설정: 인바운드 통신, 아웃바운드 통신 모두 모든 통신이 허용한다.
- IP 주소를 기준으로 허용 규칙(Allow)과 거부 규칙(Deny)을 모두 설정할 수 있다.
- 규칙은 사용자가 부여한 규칙 번호의 순서대로 평가되며, 규칙 간에 모순이 있는 경우 규칙 번호가 작은 숫자의 규칙부터 적용된다
- 예시) 규칙 번호: 100, 110, 120, 130, *
- 네트워크 ACL은 통신 상태를 관리하지 않는 "Stateless" 방화벽이다. 통신의 관련성을 고려하지 않으므로, 인바운드/아웃바운드 모두에 허용 설정이 필요합니다.
- 예시) 인바운드에서 특정 요청의 수락을 허용하더라도, 아웃바운드에서 응답의 송신을 허용하지 않으면 정상적으로 통신할 수 없습니다.
Network ACL의 Inbound 예시)
Rule Number | Traffic Type | Port | Source | Allow/Deny |
100 | HTTP (TCP) | 80 | 0.0.0.0/0 | Allow |
110 | HTTPS (TCP) | 443 | 0.0.0.0/0 | Allow |
120 | SSH (TCP) | 22 | 192.168.1.0/24 | Allow |
130 | All Traffic | All | 0.0.0.0/0 | Deny |
Network ACL의 Outbound 예시)
Rule Number | Traffic Type | Port | Destination | Allow/Deny |
100 | HTTP (TCP) | 80 | 0.0.0.0/0 | Allow |
110 | HTTPS (TCP) | 443 | 0.0.0.0/0 | Allow |
120 | All Traffic | All | 0.0.0.0/0 | Deny |
보안그룹과 네트워크 ACL의 설계 차이
🤔 SAA-C03 문제
네트워크 ACL의 인바운드 규칙이 이미지 상태일 때, 올바른 것은 무엇인가요?
Rule Number | Traffic Type | Protocol | Port | Source | Allow/Deny |
100 | HTTPS (443) | TCP(6) | 443 | 0.0.0.0/0 | Allow |
200 | All TCP | TCP(6) | All | 0.0.0.0/0 | Deny |
300 | HTTP (80) | TCP(6) | 80 | 0.0.0.0/0 | Allow |
* | All Traffic | All | All | 0.0.0.0/0 | Deny |
- 모든 인바운드 통신이 거부된다.
- HTTPS만 인바운드 통신이 허용된다.
- 모든 TCP만 인바운드 통신이 거부된다.
- HTTP, HTTPS만 인바운드 통신이 허용된다.
정답
2번. HTTPS만 인바운드 통신이 허용된다.
다음과 같은 네트워크 ACL 규칙이 있다:
- 규칙 번호 100: HTTPS를 허용
- 규칙 번호 200: 모든 TCP를 거부
- 규칙 번호 300: HTTP를 허용
- 규칙 번호 *: 모든 트래픽을 거부
네트워크 ACL에서는 규칙 번호가 작은 순서대로 규칙이 적용된다.
(이 문제에서는 규칙 번호 100 → 규칙 번호 200 → 규칙 번호 300 → 규칙 번호 *의 순서로 적용).
규칙 간에 충돌이 있을 경우, 작은 규칙 번호의 규칙이 우선된다.
이 문제의 경우 규칙 번호 200과 300이 충돌하지만, 규칙 번호 200이 우선적으로 적용된다.
(1) 규칙 번호 100에서 HTTPS가 허용됩니다.
(2) 규칙 번호 200에서 모든 TCP(HTTP를 포함하여)가 거부됩니다.
(3) 규칙 번호 300은 (2)에서 HTTP가 이미 거부되었으므로 적용되지 않습니다.
(4) 규칙 번호 *에서 모든 트래픽이 거부됩니다.
(1)~(4)의 규칙을 적용하면, HTTPS만 허용되고, 그 외의 모든 트래픽은 거부된다.
🤔 문제
VPN을 통해 회사 데이터 센터와 연결된 VPC가 있습니다. IP 주소가 172.31.16.139인 Amazon EC2 인스턴스가 VPC의 프라이빗 서브넷에 있습니다. SysOps 관리자가 IP 주소 203.0.113.12를 가진 온프레미스 컴퓨터에서 해당 EC2 인스턴스로 ping 명령을 실행했지만 응답을 받지 못했습니다.
VPC Flow Logs가 활성화되었으며 다음과 같은 로그가 기록되었습니다:
2 123456789010 eni-1235b8ca 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
2 123456789010 eni-1235b8ca 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK
문제 해결을 위한 올바른 조치는 무엇인가요?
- EC2 보안 그룹(Security Group) 규칙을 수정하여 온프레미스 컴퓨터에서 들어오는 트래픽을 허용한다.
- EC2 보안 그룹 규칙을 수정하여 온프레미스 컴퓨터로 나가는 트래픽을 허용한다.
- VPC 네트워크 ACL(Network ACL) 규칙을 수정하여 온프레미스 컴퓨터에서 들어오는 트래픽을 허용한다.
- VPC 네트워크 ACL(Network ACL) 규칙을 수정하여 온프레미스 컴퓨터로 나가는 트래픽을 허용한다.
정답
정답 4번
VPC Flow Log에서 인바운드 트래픽이 성공적으로 들어왔다.
보안 그룹은 상태 저장(Stateful)이므로 응답 트래픽도 자동으로 허용된다.
네트워크 ACL은 상태 비저장(Stateless)이므로 응답 트래픽이 별도로 허용되지 않으면 차단된다.
'클라우드(AWS)' 카테고리의 다른 글
클라우드 컴퓨팅 서비스(SaaS, PaaS, IaaS, FaaS) 간단하게 개념 정리 & 설명 (0) | 2023.10.14 |
---|---|
[AWS] Serverless 란 쉽게 개념 정리 (0) | 2023.10.07 |
What is AWS CodePipeline (CodeCommit, CodeBuild, CodeDeploy) (0) | 2023.04.27 |
CRON expressions 표현식 (0) | 2023.04.24 |
[AWS] [Elastic Container Service] ECS의 구조와 특징 쉽게 이해하기 (0) | 2023.03.28 |