설명
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의 허용을 제거합니다. 해당 연결이 필요하지 않다고 확인한 경우에만 이 변경을 적용하세요.