겹치는 Network ACL 포트 규칙

Network ACL의 겹치는 포트 범위를 CIDR, 방향, 프로토콜과 규칙 순서에 맞춰 검토하세요.

설명

Network ACL의 포트 범위가 겹치더라도 같은 트래픽을 대상으로 하지 않으면 충돌하지 않습니다. 같은 NACL의 같은 방향에서 CIDR과 프로토콜까지 함께 해당하는 규칙이 여러 개 있으면, 번호가 가장 작은 규칙이 먼저 적용됩니다.

넓은 허용 규칙 뒤에 더 구체적인 차단을 두면 원하는 차단이 적용되지 않을 수 있습니다. 반대로 의도적으로 구성한 예외나 서로 다른 네트워크의 허용은 포트 범위가 겹쳐도 유효하므로, 겹친다는 이유만으로 제거하지 마세요.

잠재적 영향

  • 규칙 순서를 잘못 이해하면 필요한 차단이 적용되지 않거나 정상 통신이 끊길 수 있습니다.
  • 중복 규칙과 불명확한 목적은 변경 시 영향 범위를 파악하기 어렵게 만듭니다.

해결 방법

  • NACL과 방향별로 CIDR, 프로토콜, 포트 범위와 적용 순서를 함께 확인하세요.
  • 먼저 적용할 예외에는 더 낮은 규칙 번호를 부여하고, 불필요한 중복만 정리하세요.
  • 변경 전후에 필요한 통신과 응답 경로를 테스트하세요. 포트 범위를 줄이면 기존에 허용되던 연결이 끊길 수 있습니다.

예시

MyNacl과 나머지 규칙은 생략되어 있습니다. 아래 두 규칙은 서로 다른 CIDR을 대상으로 하므로 포트 중복만으로 충돌하는 예는 아닙니다.

변경 전

yaml
Resources:
  AllowRangeOne:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 100
      Protocol: 6
      RuleAction: allow
      CidrBlock: 172.16.0.0/24
      PortRange:
        From: 13
        To: 22

  AllowRangeTwo:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 110
      Protocol: 6
      RuleAction: allow
      CidrBlock: 173.20.0.0/24
      PortRange:
        From: 20
        To: 25

포트 20–22가 겹치지만 서로 다른 클라이언트 범위를 허용합니다.

변경 후

yaml
Resources:
  AllowRangeOne:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 100
      Protocol: 6
      RuleAction: allow
      CidrBlock: 172.16.0.0/24
      PortRange:
        From: 13
        To: 19

  AllowRangeTwo:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 110
      Protocol: 6
      RuleAction: allow
      CidrBlock: 173.20.0.0/24
      PortRange:
        From: 20
        To: 25

첫 번째 CIDR에서 포트 20–22의 허용을 제거합니다. 해당 연결이 필요하지 않다고 확인한 경우에만 이 변경을 적용하세요.

참조