본문 바로가기
CSP (Cloud Service Provider)/AWS

네트워크 ACL(NACL) 을 사용하여 서브넷에 대한 트래픽 제어

by 알 수 없는 사용자 2022. 6. 15.

네트워크 ACL(액세스 제어 목록)은 1개 이상의 서브넷 내부와 외부의 트래픽을 제어하기 위한 방화벽 역할을 하는 VPC를 위한 선택적 보안 계층입니다. 보안 그룹과 비슷한 규칙으로 네트워크 ACL을 설정하여 VPC에 보안 계층을 더 추가할 수 있습니다. 보안 그룹과 네트워크 ACL의 차이에 대한 자세한 정보는 이전 포스팅을 참조하세요!

 

네트워크 ACL 기본 사항

다음은 네트워크 ACL에 대해 알아야 할 기본 사항입니다.

  • VPC는 수정 가능한 기본 네트워크 ACL과 함께 자동으로 제공됩니다. 기본적으로 모든 인바운드 및 아웃바운드 IPv4 트래픽을 허용하며, 해당되는 경우 IPv6 트래픽도 허용합니다.
  • 사용자 지정 네트워크 ACL을 생성하여 서브넷과 연결할 수 있습니다. 기본적으로 각 사용자 지정 네트워크 ACL은 규칙을 추가하기 전에는 모든 인바운드 및 아웃바운드 트래픽을 거부합니다.
  • VPC에 있는 각 서브넷을 네트워크 ACL과 연결해야 합니다. 서브넷을 네트워크 ACL에 명시적으로 연결하지 않을 경우, 서브넷은 기본 네트워크 ACL에 자동적으로 연결됩니다.
  • 네트워크 ACL을 여러 서브넷과 연결할 수 있습니다. 그러나 서브넷은 한 번에 하나의 네트워크 ACL에만 연결할 수 있습니다. 네트워크 ACL을 서브넷과 연결하면 이전 연결은 제거됩니다.
  • 네트워크 ACL에는 번호가 매겨진 규칙 목록이 포함되어 있습니다. 가장 낮은 번호가 지정된 규칙부터 시작해서 트래픽이 네트워크 ACL과 연결된 서브넷의 내부 또는 외부로 전달되도록 허용되는지 결정합니다. 규칙에 사용할 수 있는 가장 높은 번호는 32766입니다. 나중에 필요한 곳에 새 규칙을 삽입할 수 있도록, 처음 시작할 때는 증분 방식으로(예: 10 또는 100 단위씩 증분) 규칙을 생성하는 것이 좋습니다.
  • 네트워크 ACL에는 별개의 인바운드 및 아웃바운드 규칙이 있으며, 각 규칙은 트래픽을 허용하거나 거부할 수 있습니다.
  • 네트워크 ACL은 상태 비저장입니다. 즉, 허용되는 인바운드 트래픽에 대한 응답은 아웃바운드 트래픽에 대한 규칙을 따르고, 그 반대의 경우에도 마찬가지입니다.

VPC당 네트워크 ACL 수 및 네트워크 ACL당 규칙 수에 대한 할당량(제한)이 있습니다. 

 

네트워크 ACL 규칙

기본 네트워크 ACL에 규칙을 추가 또는 제거하거나, VPC에 대한 네트워크 ACL을 추가로 생성할 수 있습니다. 네트워크 ACL에서 규칙을 추가하거나 제거할 때 네트워크 ACL이 연결되어 있는 서브넷에 변경 사항이 자동으로 적용됩니다.

다음은 네트워크 ACL 규칙 중 일부입니다.

  • 규칙 번호. 번호가 가장 낮은 규칙부터 평가됩니다. 규칙에 일치하는 트래픽이 있으면 이와 모순되는 상위 규칙이 있더라도 적용됩니다.
  • 유형. 트래픽 유형(예: SSH)입니다. 모든 트래픽 또는 사용자 지정 범위를 지정할 수도 있습니다.
  • 프로토콜 . 표준 프로토콜 번호를 가진 어떤 프로토콜이든 지정할 수 있습니다. 자세한 내용은 프로토콜 번호를 참조하십시오. ICMP를 프로토콜로 지정하면 ICMP 유형과 코드 중 일부 또는 전부를 지정할 수 있습니다.
  • 포트 범위. 트래픽에 대한 수신 포트 또는 포트 범위입니다. 예를 들어, HTTP 트래픽의 경우 80입니다.
  • 소스: . [인바운드 규칙만 해당] 트래픽의 소스(CIDR 범위)입니다.
  • 대상 [아웃바운드 규칙만 해당] 트래픽의 대상(CIDR 범위)입니다.
  • 허용/거부. 지정된 트래픽을 허용 또는 거부 할지 여부입니다.

명령줄 도구 또는 Amazon EC2 API를 사용하여 규칙을 추가하면 CIDR 범위가 표준 형식으로 자동 수정됩니다. 예를 들어 CIDR 범위에 100.68.0.18/18을 지정하면 100.68.0.0/18 CIDR 범위를 가진 규칙이 작성됩니다.

 

 

기본 네트워크 ACL

기본 네트워크 ACL은 연결된 서브넷을 드나드는 트래픽 흐름을 모두 허용하도록 구성되어 있습니다. 각 네트워크 ACL에는 규칙 번호가 별표로 되어 있는 규칙도 포함되어 있습니다. 이 규칙은 패킷이 번호가 매겨진 다른 어떤 규칙과도 일치하지 않을 경우에는 거부되도록 되어 있습니다. 이 규칙을 수정하거나 제거할 수 없습니다.

다음은 IPv4만을 지원하는 VPC에 대한 기본 네트워크 ACL의 예시입니다.


 

인바운드
규칙 # Type 프로토콜 포트 범위 소스 허용/거부
100 All IPv4 traffic 모두 모두 0.0.0.0/0 허용
* All IPv4 traffic 모두 모두 0.0.0.0/0 DENY
           
아웃바운드
규칙 # Type 프로토콜 포트 범위 대상 주소 허용/거부
100 All IPv4 traffic 모두 모두 0.0.0.0/0 허용
* All IPv4 traffic 모두 모두 0.0.0.0/0 DENY

IPv6 CIDR 블록이 있는 VPC를 생성하거나 IPv6 CIDR 블록을 기존 VPC와 연결하는 경우, 모든 IPv6 트래픽이 서브넷으로 그리고 서브넷으로부터 전송되도록 허용하는 규칙이 자동으로 추가됩니다. 또한 규칙 번호가 별표로 되어 있어 패킷이 번호가 매겨진 다른 어떤 규칙과도 일치하지 않을 경우에는 거부되도록 하는 규칙도 추가합니다. 이 규칙은 수정하거나 제거할 수 없습니다. 다음은 IPv4와 IPv6를 지원하는 VPC에 대한 기본 네트워크 ACL의 예시입니다.

 

인바운드



규칙 # Type 프로토콜 포트 범위 소스 허용/거부
100 All IPv4 traffic 모두 모두 0.0.0.0/0 허용
101 모든 IPv6 트래픽 모두 모두 ::/0 허용
* All traffic 모두 모두 0.0.0.0/0 DENY
* 모든 IPv6 트래픽 모두 모두 ::/0 DENY
아웃바운드
규칙 # Type 프로토콜 포트 범위 대상 주소 허용/거부
100 All traffic 모두 모두 0.0.0.0/0 허용
101 모든 IPv6 트래픽 모두 모두 ::/0 허용
* All traffic 모두 모두 0.0.0.0/0 DENY
* 모든 IPv6 트래픽 모두 모두 ::/0 DENY

 

사용자 지정 네트워크 ACL

다음 표는 IPv4만을 지원하는 VPC에 대한 사용자 지정 네트워크 ACL의 예시입니다. 여기에는 HTTP 및 HTTPS 트래픽 수신을 허용하는 규칙이 포함됩니다(인바운드 규칙 100 및 110). 그 인바운드 트래픽에 응답할 수 있도록 해당 아웃바운드 규칙이 있습니다(휘발성 포트 32768-65535를 포함하는 아웃바운드 규칙 140). 적절한 휘발성 포트 범위를 선택하는 방법에 대한 자세한 내용은 휘발성 포트 단원을 참조하십시오.

이 네트워크 ACL에는 서브넷으로의 SSH 및 RDP 트래픽을 허용하는 인바운드 규칙도 포함됩니다. 아웃바운드 규칙 120을 사용하면 응답을 서브넷에서 송신할 수 있습니다.

이 네트워크 ACL에는 서브넷 외부로의 아웃바운드 HTTP 및 HTTPS 트래픽을 허용하는 아웃바운드 규칙(100 및 110)이 있습니다. 그 아웃바운드 트래픽에 응답할 수 있도록 해당 인바운드 규칙이 있습니다(휘발성 포트 32768-65535를 포함하는 인바운드 규칙 140).

참고

각 네트워크 ACL에는 규칙 번호가 별표로 된 기본 규칙이 포함되어 있습니다. 이 규칙은 패킷이 다른 어떤 규칙과도 일치하지 않을 경우에는 거부되도록 되어 있습니다. 이 규칙을 수정하거나 제거할 수 없습니다.

인바운드아웃바운드
규칙 # Type 프로토콜 포트 범위 소스 허용/거부 설명
100 HTTP TCP 80 0.0.0.0/0 허용 어떤 IPv4 주소에서 이루어지는 인바운드 HTTP 트래픽도 모두 허용
110 HTTPS TCP 443 0.0.0.0/0 허용 어떤 IPv4 주소에서 이루어지는 인바운드 HTTPS 트래픽도 모두 허용
120 SSH TCP 22 192.0.2.0/24 허용 홈 네트워크의 퍼블릭 IPv4 주소 범위로부터의 인바운드 SSH 트래픽 허용(인터넷 게이트웨이를 통해)
130 RDP TCP 3389 192.0.2.0/24 허용 홈 네트워크의 퍼블릭 IPv4 주소 범위로부터 웹 서버로의 인바운드 RDP 트래픽 허용(인터넷 게이트웨이를 통해)
140 Custom TCP TCP 32768-65535 0.0.0.0/0 허용 인터넷으로부터의 인바운드 리턴 IPv4 트래픽 허용(즉, 서브넷에서 시작되는 요청에 대해).
이 범위는 예시일 뿐입니다. 적절한 휘발성 포트 범위를 선택하는 방법에 대한 자세한 내용은 휘발성 포트 단원을 참조하십시오.
* All traffic 모두 모두 0.0.0.0/0 DENY 이전 규칙에서 아직 처리하지 않은 모든 인바운드 IPv4 트래픽 거부(수정 불가)
규칙 # Type 프로토콜 포트 범위 대상 주소 허용/거부 설명
100 HTTP TCP 80 0.0.0.0/0 허용 서브넷에서 인터넷으로의 아웃바운드 IPv4 HTTP 트래픽 허용
110 HTTPS TCP 443 0.0.0.0/0 허용 서브넷에서 인터넷으로의 아웃바운드 IPv4 HTTPS 트래픽 허용
120 SSH TCP 1024~65535 192.0.2.0/24 허용 홈 네트워크의 퍼블릭 IPv4 주소 범위로부터의 아웃바운드 SSH 트래픽을 허용합니다(인터넷 게이트웨이를 통해).
140 Custom TCP TCP 32768-65535 0.0.0.0/0 허용 인터넷에서 클라이언트에 대한 아웃바운드 IPv4 응답 허용(예: 서브넷에 있는 웹 서버를 방문하는 사람들에게 웹 페이지 제공).
이 범위는 예시일 뿐입니다. 적절한 휘발성 포트 범위를 선택하는 방법에 대한 자세한 내용은 휘발성 포트 단원을 참조하십시오.
* All traffic 모두 모두 0.0.0.0/0 DENY 이전 규칙에서 아직 처리하지 않은 모든 아웃바운드 IPv4 트래픽 거부(수정 불가)

패킷이 서브넷에 도착할 때, 이를 서브넷이 연결되어 있는 ACL의 인바운드 규칙에 대해 평가합니다(규칙 목록의 맨 위에서 시작하여 맨 아래로 이동). 다음은 패킷이 SSL 포트(443)로 전달되는 경우 평가가 이루어지는 방식입니다. 이 패킷은 처음으로 평가되는 규칙(규칙 100)과 일치하지 않습니다. 이 패킷은 패킷을 서브넷으로 수신되도록 허용하는 두 번째 규칙(110)과도 일치하지 않습니다. 패킷이 포트 139(NetBIOS)로 보내진 경우 어떠한 규칙과도 일치하지 않으며, * 규칙이 최종적으로 해당 패킷을 거부합니다.

광범위한 포트를 합법적으로 열어야 하지만 거부하려는 범위 내에 특정 포트가 있는 경우 거부 규칙을 추가할 수 있습니다. 광범위한 포트 트래픽을 허용하는 규칙보다 거부 규칙을 먼저 테이블에 배치하십시오.

사용 사례에 따라 허용 규칙을 추가합니다. 예를 들어 DNS 확인을 위해 포트 53에서 아웃바운드 TCP 및 UDP 액세스를 허용하는 규칙을 추가할 수 있습니다. 추가하는 모든 규칙에 대해 응답 트래픽을 허용하는 해당 인바운드 또는 아웃바운드 규칙이 있는지 확인합니다.

다음 표는 연결된 IPv6 CIDR 블록이 있는 VPC에 대한 사용자 지정 네트워크 ACL의 동일 예시입니다. 이 네트워크 ACL에는 모든 IPv6 HTTP 및 HTTPS 트래픽에 대한 규칙이 포함됩니다. 이 경우 IPv4 트래픽에 대한 기존 규칙 사이에 새 규칙이 삽입되었습니다. IPv4 규칙 다음에 규칙을 더 높은 번호의 규칙으로 추가할 수도 있습니다. IPv4 및 IPv6 트래픽은 분리되어 있습니다. 따라서 IPv4 트래픽에 대한 규칙 중 어느 것도 IPv6 트래픽에 적용되지 않습니다.

 

 

 




https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports

 

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

Secrets Manager  (0) 2022.06.18
AWS Lambda란?  (0) 2022.06.17
[AWS] MFA  (0) 2022.06.15
Landing Zone & AWS Control Tower  (0) 2022.06.14
[AWS] VPC Peering, Transit Gateway  (0) 2022.06.10

댓글