네트워크 방화벽 은 Stateless Engine 과 Stateful Engine 두가지의 트래픽 처리를 위한 Engine 을 포함하고 있습니다.
각 엔진의 가장 큰 차이점은 Connection 의 연결상태를 참조하는지 여부이며 이에 따라 Connection 상태를 참조하지 않는 Stateless Engine 은 네트워크 방화벽 으로 유입되는 모든 패킷을 검사하게 됩니다. 이에 반해 Stateful Engine 은 Connection 연결 상태를 참조하며 관리자의 설정에 따라 Layer 4 이상의 패킷 정보를 검사한 후 트래픽을 탐지 및 차단하는 기능을 제공합니다.
또한, Stateless Engine 은 IP/Port 정보 이외에 TCP 의 경우 TCP Flag 에 기반한 규칙을 지원하며 Stateful Engine 은 Deep Packet Inspectdion 을 지원합니다.
네트워크 방화벽 Engine 의 규칙 검사 순서
- Gateway Load Balancer Endpoint 를 통하여 네트워크 방화벽 으로 트래픽이 유입되면 가장 먼저 Stateless Engine 이 트래픽을 검사하게 됩니다.
- Stateless 규칙 그룹 내의 규칙들은 Priority 를 통해 규칙 검사의 우선 순위가 결정되게 되며 이 때 각 규칙의 Action 은 우선 순위와 관계가 없습니다. 따라서, 네트워크 방화벽 은 패킷이 유입되면 유입된 패킷을 낮은 수(높은 Priority)의 Priority 가 설정된 순서에 따라 트래픽을 검사하게 되며 이 때, 매칭되는 규칙의 Action 에 따라 패킷 처리를 결정합니다.
- Pass = 더 이상 규칙 검사를 수행하지 않고 해당 패킷을 허용 합니다.
- Drop = 더 이상 규칙 검사를 수행하지 않고 해당 패킷을 차단 합니다.
- Foreward = 더 이상 규칙 검사를 수행하지 않고 해당 패킷을 Stateful Engine 으로 전달 합니다.
각 Stateless 규칙은 Custom Action 을 지정할 수 있으며 Custom Action 이 설정된 규칙에 매칭되는 Packet 의 정보(갯수)를 CloudWatch Metric 을 통해 확인할 수 있습니다.
- 만일 Stateless Engine 에 설정된 모든 규칙에 매칭되는 규칙이 없을 경우 Default Action 을 따르게 되며 Default Action (Pass, Drop, Forward) 은 Stateless 규칙의 Action 과 동일하게 동작합니다.
- Stateful Engine 으로 유입된 패킷은 Default Action Order 에 따라 처리되게 됩니다.
아래는 선택 가능한 Default Action Order 중 하나인 Action Order 를 선택했을 때의 규칙 검사 순서입니다.
- 설정된 규칙 중 Pass 규칙을 가장 먼저 검사합니다.
- 매칭되는 Pass 규칙이 없는 경우 Drop 규칙을 검사합니다.
- 매칭되는 Drop 규칙이 없는 경우 Reject 규칙을 검사합니다.
- 매칭되는 Reject 규칙이 없는 경우 Alert 규칙을 검사합니다.
- 매칭되는 Reject 규칙이 있다면 매칭된 규칙에 따라 차단 후 Reset 패킷을 전송합니다.
- 매칭되는 Drop 혹은 Alert 규칙이 있었다면 매칭된 규칙에 따라 Drop(로깅 후 차단) 혹은 Alert(로깅) 처리합니다.
- 매칭되는 규칙이 없는 경우 Default Action 을 따르게 되며 Standard Order 의 Default Action 은 Pass 입니다.