설명
Network ACL의 허용 규칙에 Protocol: -1을 지정하면 해당 방향과 CIDR에 모든 프로토콜을 허용하며 PortRange로 포트를 제한할 수 없습니다. 특정 서비스만 허용해야 하는 경우에는 필요한 프로토콜과 포트 범위를 지정하세요.
TCP, UDP, ICMP 외의 표준 프로토콜도 필요한 용도에 사용할 수 있습니다. 프로토콜 번호만으로 위험을 단정하지 말고 허용·차단 동작, 방향, CIDR과 규칙 순서를 함께 검토하세요. 모든 프로토콜을 대상으로 하는 차단 규칙은 전체 허용과 다릅니다.
잠재적 영향
- 넓은 인바운드 허용은 다른 네트워크 조건도 허용할 때 불필요한 서비스 접근을 열 수 있습니다.
- 넓은 아웃바운드 허용은 침해된 리소스가 외부와 통신하거나 데이터를 전송할 기회를 늘릴 수 있습니다.
해결 방법
- 필요한 프로토콜 번호를 지정하고 TCP·UDP의 포트 또는 ICMP의 타입·코드를 용도에 맞게 제한하세요.
- 출발지·목적지 CIDR과 적용 순서를 검토하고, 꼭 필요한 전체 허용 예외만 유지하세요.
- NACL은 상태를 추적하지 않으므로 응답 트래픽도 별도로 허용해야 합니다. 실제 연결을 시험하며 변경하세요.
예시
MyNacl과 응답 트래픽 규칙은 생략했습니다. 아래는 아웃바운드 규칙의 비교입니다.
변경 전
yaml
Resources:
OutboundRule:
Type: AWS::EC2::NetworkAclEntry
Properties:
NetworkAclId: !Ref MyNacl
RuleNumber: 100
Protocol: -1
Egress: true
RuleAction: allow
CidrBlock: 0.0.0.0/0
모든 IPv4 목적지에 모든 프로토콜을 허용하는 아웃바운드 규칙입니다. 실제 통신에는 라우팅 등 다른 조건도 필요합니다.
변경 후
yaml
Resources:
OutboundRule:
Type: AWS::EC2::NetworkAclEntry
Properties:
NetworkAclId: !Ref MyNacl
RuleNumber: 100
Protocol: 6
Egress: true
RuleAction: allow
CidrBlock: 172.16.0.0/24
PortRange:
From: 443
To: 443
이 규칙의 허용을 172.16.0.0/24의 TCP 443으로 제한합니다. 실제 필요한 목적지인지 확인하고 다른 규칙의 허용도 함께 검토하세요.