siklog
[NCP/Security] ACG, NACL 설정 간 유의할 사항 본문
NCP에서 기본적으로 제공하는 접근제어는 두 가지가 있다.(VPC 기준)
ACG, NACL
ACG와 NACL은 작동하는 위치 부터 스펙, 구성 등 여러 차이 점이 있는데,
그 중 오늘 포스팅할 내용은 접근제어의 상태유지/무상태 차이에 대해 작성해 보려고 한다.
간단하게 Stateful과 Stateless의 차이점은 서버가 클라이언트의 세션 상태 및 세션 정보를 유지하고 있느냐 않느냐의 차이라고 볼 수 있다.
[ACG : Stateful(상태유지) 방식]
클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존함을 의미한다.
아래와 같이 Server1으로 응답이 간다면 Server1에서 이전 클라이언트 세션 정보를 저장하고 있어 Server1에서 응답을 준다.
[NACL : Stateless(무상태) 방식]
클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다.
아래와 같이 Stateless 구조는 클라이언트와의 세션 정보가 저장되지 않으므로, Server1으로 요청이 와도 Server1으로 응답이 다시 나간다는 보장은 없다.
먼저, 예를 들어 ALB를 구성 시 자신의 IP에서만 80포트 접근이 가능하도록 구성을 원할 경우 아래와 같이 접근제어를 구성하였다고 가정한다.
[ACG rule - inbound]
- 자신의 IP 80포트 허용
- LB 서브넷 대역 80포트 허용
[ACG rule - outbound]
- 자신의 IP 80포트 허용
- LB 서브넷 대역 80포트 허용
[NACL rule - inbound]
- 우선순위1 : 자신의 IP 80포트 허용
- 우선순위2 : Target VM IP 80포트 허용
- 우선순위3 : LB 서브넷 대역 80포트 허용
- 우선순위10 : 0.0.0.0/0 80포트 차단
[NACL rule - outbound]
- 우선순위1 : 자신의 IP 80포트 허용
- 우선순위2 : Target VM IP 80포트 허용
- 우선순위3 : LB 서브넷 대역 80포트 허용
- 우선순위10 : 0.0.0.0/0 80포트 차단
이렇게 설정하여도 연결은 될 수도 있으나 대부분 HealthCheck 실패로 인한 TCP TIMEOUT이 발생하여 503 에러를 볼 수 있다.
그 이유는 Subnet단에서 NACL 필터링에 걸린 것이기 때문이다.
VPC 환경에서 대략적인 트래픽 흐름은 다음과 같다고 볼 수 있는데,
외부 <--> LB <--> VPC (Route Table) <--> Subnet (NACL 필터링) <--> (ACG 필터링) Server
NACL의 경우 Stateless(무상태) 방식이기 때문에 요청이 들어온 IP와 포트로 다시 응답이 나간다는 보장이 없어 NACL 필터링에 의해 통신이 차단되어 있기 때문이다.
따라서, NACL 규칙에 1024~65535 포트 대역도 같이 오픈하여 사용해야 정상적으로 사용이 가능하다.
물론 3 - way hand shake에 따라 ack를 보내지 못하면 통신이 불가하기 때문에 inbound 룰 뿐아니라 outbound 룰도 같이 적용해줘야 한다.
'클라우드 > NCP' 카테고리의 다른 글
[NCP/Terraform] Terraform으로 구현하는 NCP 인프라 구성 Part1 (1) | 2022.09.12 |
---|---|
[NCP/Load Balancer] LB 내 바인딩된 Target VM에서 동일 LB로 재호출하는 경우 (0) | 2022.08.31 |
[Server/FTP] FTP Active, PassiveMode 차이점 (0) | 2022.06.19 |
[NCP/Containers] NKS 생성 및 접근 방법 (0) | 2022.05.17 |
[NCP/Security] NCP CDN Security Token 발급 및 사용 방법 (0) | 2022.05.09 |