AWS 보안 그룹은 허용된 요청의 응답을 상태에 따라 허용하지만, NACL은 응답 방향도 별도로 평가합니다. 서버로 들어가는 TCP 443을 허용했다는 사실만으로 클라이언트 임시 포트로 나가는 응답까지 허용되는 것은 아닙니다.

먼저 어느 쪽이 요청을 시작했는지 정한 뒤 요청·응답의 출발지와 목적지 포트를 뒤집어 적으세요. NACL만 의심해 즉시 규칙을 넓히기보다 해당 서브넷의 양방향 규칙과 순서를 대조해야 합니다.

1. 응답의 목적지 포트는 서버의 443이 아닙니다

연결 구조를 이해하려고 만든 가상 예시입니다. 실제 AWS 자원이나 패킷 기록이 아닙니다.
조건: TCP, 주소·포트 변환 없는 단순 경로
클라이언트가 임시 포트 53024를 선택해 요청 시작

요청: 클라이언트:53024 → 서버:443
응답: 서버:443 → 클라이언트:53024

서버가 있는 서브넷 기준
요청은 inbound, 응답은 outbound

‘HTTPS니까 양쪽 모두 목적지 443’이라고 쓰면 응답 방향을 놓칩니다. 서비스 포트는 서버 쪽 끝점의 포트입니다. 요청 때는 목적지였지만 응답 때는 출발지가 됩니다. 연습할 때 두 끝점을 종이에 적고 화살표만 반대로 그려 보세요. 화살표가 바뀌어도 각 끝점의 포트가 어느 장치에 속하는지는 그대로입니다.

이 예시에서는 클라이언트가 서버 서브넷 밖에 있고, 라우팅과 서버 리스닝은 정상이라고 가정합니다. 실제 장애에서는 이 가정부터 확인해야 합니다. 서버가 응답을 만들지 않았거나 경로가 잘못된 경우까지 NACL의 문제라고 결론 내릴 수는 없습니다. 증상 하나만 듣고 원인을 확정하지 말고 어떤 구간의 증거를 확보했는지 적으세요.

2. 상태를 기억하는 위치와 규칙 적용 범위를 나눕니다

AWS 공식 문서의 기본 동작 비교
항목보안 그룹NACL
적용 대상연결된 인스턴스 등 자원연결된 서브넷의 경계
규칙 종류허용 규칙허용·거부 규칙
허용된 요청의 응답상태에 따라 허용반대 방향 규칙도 별도 평가
규칙 처리관련 허용 규칙을 평가낮은 번호부터 첫 일치 규칙 적용

보안 그룹에서 응답이 허용된다고 NACL 검사를 건너뛰는 것은 아닙니다. 위 예시에서 보안 그룹이 요청을 허용했더라도, 서버 서브넷의 NACL이 클라이언트:53024로 나가는 응답을 거부하면 통신은 완성되지 않습니다. 서로 다른 보안 장치의 결과를 하나의 허용 여부로 뭉치지 않는 것이 핵심입니다.

3. 응답을 실제로 어느 규칙과 비교하는지 풉니다

같은 목적지 클라이언트 범위에 적용되는 교육용 outbound NACL
규칙 번호프로토콜목적지 포트동작
100TCP443ALLOW
*전체전체DENY

응답 패킷의 목적지 포트는 53024이므로 100번의 443과 일치하지 않습니다. 이 가상 규칙표에는 다른 허용이 없으므로 마지막 거부에 도달합니다. 443 허용 규칙이 없어서가 아니라, 그 규칙이 응답의 목적지 포트를 대상으로 하지 않는 것이 문제입니다. 필요한 답은 ‘보안 그룹 outbound를 모두 열기’가 아니라 ‘NACL 응답 방향과 클라이언트 임시 포트 조건을 확인하기’입니다.

규칙 순서도 별도로 봐야 합니다. 가령 80번이 53000–53999를 거부하고 100번이 49152–65535를 허용한다면 53024는 먼저 80번에 걸립니다. 뒤에 넓은 허용 규칙이 있어도 이미 결정된 거부가 뒤집히지 않습니다. 포트가 범위에 들어가는지와 어느 번호가 먼저인지 두 단계를 나누면 표를 읽기 쉬워집니다.

53024는 이번 문제에서 선택한 값이지 모든 클라이언트가 쓰는 고정 포트가 아닙니다. AWS는 요청을 시작하는 클라이언트와 운영체제 등에 따라 임시 포트 범위가 달라진다고 설명합니다. 운영 규칙에서는 실제 클라이언트·중간 장치·주소 변환 조건을 확인해야 합니다. 예시의 포트 하나나 범위를 확인 없이 그대로 복사하지 마세요.

4. 요청을 시작한 쪽부터 점검합니다

  1. 요청 시작 주체를 표시하고 요청·응답의 프로토콜, 주소, 포트를 각각 적습니다.
  2. 서버 서브넷에 실제 연결된 NACL과 해당 자원의 보안 그룹을 확인합니다. 이름이 비슷한 다른 객체를 비교하지 않습니다.
  3. NACL의 inbound와 outbound를 따로 읽고 낮은 번호부터 첫 일치 규칙을 찾습니다. 서비스 포트와 임시 포트를 구분합니다.
  4. 확인된 거부 조건과 아직 확인하지 못한 라우팅·서버 상태를 나눕니다. 변경 권한과 검증 계획 없이 운영 규칙을 넓히지 않습니다.

서브넷 안의 인스턴스가 외부 서버에 먼저 요청하는 경우에는 방향이 반대입니다. 요청은 서브넷 밖으로 나가고, 응답은 인스턴스가 선택한 임시 포트로 들어옵니다. 이때에는 NACL inbound의 응답 허용을 확인해야 합니다. ‘응답은 항상 outbound’라고 외우지 말고 어느 서브넷을 기준으로 말하는지 붙이세요.

정답을 가리고 확인해 보세요

이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.

서버 서브넷 밖의 클라이언트:53024가 서버:443에 요청했고 보안 그룹이 허용했습니다. NACL outbound는 같은 클라이언트에 대해 TCP 목적지 443만 허용하고 나머지는 거부합니다. 응답은 통과하나요?

정답과 해설 확인통과하지 않습니다. 응답의 목적지 포트 53024가 허용된 443과 다르므로 제시된 NACL에서 거부됩니다.

보안 그룹의 응답 허용은 NACL의 별도 평가를 없애지 않습니다. 요청 시작 주체와 서브넷 기준 방향을 먼저 정한 뒤 응답 목적지 포트를 대조합니다.

이 주제의 회상 연습 이어가기