설명
Network ACL의 deny 규칙이 특정 CIDR만 대상으로 하면 그 범위에 해당하는 트래픽만 차단합니다. 특정 네트워크를 차단하려는 목적이라면 유효한 구성이며, 모든 차단 규칙을 전체 주소 범위로 확대할 필요는 없습니다.
문제는 차단하려는 트래픽이 규칙 범위를 벗어나거나, 번호가 더 작은 허용 규칙이 먼저 적용되는 경우입니다. NACL은 낮은 번호부터 확인해 처음 일치하는 규칙을 적용하고, 어떤 규칙에도 해당하지 않는 트래픽은 차단합니다.
잠재적 영향
- 차단 대상이 다른 허용 규칙을 통해 통과하면 의도하지 않은 접근이 계속될 수 있습니다.
- 차단 범위를 필요 이상으로 넓히면 정상적인 관리나 서비스 통신이 끊길 수 있습니다.
해결 방법
- 차단할 방향, 프로토콜, 포트와 CIDR을 실제 요구사항에 맞게 지정하세요.
- 예외 차단이 넓은 허용보다 먼저 적용되어야 한다면 차단 규칙에 더 낮은 번호를 지정하세요. IPv4와 IPv6도 각각 검토하세요.
- 전체 규칙과 양방향 응답 경로를 확인하고, 변경 후 허용·차단 대상의 연결을 테스트하세요.
예시
MyNacl과 다른 규칙은 생략되어 있습니다. 아래 변경은 TCP 22 인바운드를 모든 IPv4 주소에서 차단하려는 경우에만 적합합니다.
변경 전
yaml
Resources:
InboundDenyRule:
Type: AWS::EC2::NetworkAclEntry
Properties:
NetworkAclId: !Ref MyNacl
RuleNumber: 100
Protocol: 6
RuleAction: deny
CidrBlock: 172.16.0.0/24
PortRange:
From: 22
To: 22
172.16.0.0/24의 TCP 22 트래픽만 대상으로 합니다. 다른 대역의 허용 여부는 나머지 규칙에 달려 있습니다.
변경 후
yaml
Resources:
InboundDenyRule:
Type: AWS::EC2::NetworkAclEntry
Properties:
NetworkAclId: !Ref MyNacl
RuleNumber: 100
Protocol: 6
RuleAction: deny
CidrBlock: 0.0.0.0/0
PortRange:
From: 22
To: 22
차단 범위를 모든 IPv4 주소로 넓힙니다. 더 낮은 번호의 허용 규칙이 먼저 적용되지 않는지 확인하세요.