다음을 통해 공유


필터 중재

필터 중재는 네트워크 트래픽 필터링 결정을 내릴 때 필터가 서로 상호 작용하는 방식을 결정하는 데 사용되는 WFP(Windows 필터링 플랫폼)에 기본 제공되는 논리입니다.

중재 동작 필터링

다음 동작은 필터 중재 시스템의 특징을 지정합니다.

  • 모든 트래픽을 검사할 수 있습니다. 트래픽은 지정된 계층에서 필터를 바이패스할 수 없습니다.
  • 우선 순위가 높은 필터가 허용된 경우에도 Veto 를 통해 콜아웃 필터로 트래픽을 차단할 수 있습니다.
  • 여러 공급자가 동일한 계층에서 트래픽을 검사할 수 있습니다. 예를 들어 방화벽 다음에는 IDS(침입 감지 시스템) 필터 또는 IPsec과 QoS(서비스 품질) 필터가 차례로 따라 동일한 계층에서 트래픽을 검사할 수 있습니다.

필터링 모델

각 필터 계층은 우선 순위(가중치라고도 함)로 정렬된 하위 계층으로 나뉩니다. 네트워크 트래픽은 하위 계층을 가장 높은 우선 순위에서 가장 낮은 우선 순위로 트래버스합니다. 하위 계층은 개발자가 WFP API를 사용하여 만들고 관리합니다.

각 하위 계층 내에서 필터는 가중치별로 정렬됩니다. 네트워크 트래픽은 가장 높은 가중치에서 가장 낮은 가중치까지 일치하는 필터에 표시됩니다.

필터 중재 알고리즘은 계층 내의 모든 하위 계층에 적용되며 모든 하위 계층이 평가된 후 최종 필터링 결정이 내려집니다. 이렇게 하면 여러 일치 기능이 제공됩니다.

하위 계층 내에서 필터 중재는 다음과 같이 수행됩니다.

  • 가장 높은 필터에서 가장 낮은 가중치로 정렬된 일치 필터 목록을 계산합니다.
  • "허용" 또는 "블록"이 반환될 때까지 또는 목록이 소진될 때까지 일치 필터를 순서대로 평가합니다(필터는 "계속"을 반환할 수도 있음).
  • 나머지 필터를 건너뛰고 마지막으로 평가된 필터에서 작업을 반환합니다.

계층 내에서 필터 중재는 다음과 같이 수행됩니다.

  • 가장 높은 우선 순위에서 가장 낮은 우선 순위까지 모든 하위 계층에서 필터 중재를 수행합니다.
  • 우선 순위가 높은 하위 계층이 트래픽을 차단하기로 결정한 경우에도 모든 하위 계층을 평가합니다.
  • 다음 섹션에 설명된 정책 규칙에 따라 결과 작업을 반환합니다.

아래 다이어그램은 샘플 하위 계층 구성을 보여 줍니다. 외부 상자는 레이어를 나타냅니다. 내부 상자는 필터가 포함된 하위 계층을 나타냅니다. 필터의 와일드카드(*)는 모든 트래픽이 필터와 일치한다는 것을 의미합니다.

샘플 하위 계층 구성

필터를 무시할 수 있는 유일한 방법은 더 높은 가중치 필터가 동일한 하위 계층 내의 트래픽을 허용하거나 차단한 경우입니다. 반대로 필터가 항상 계층 내의 모든 트래픽을 볼 수 있도록 하는 한 가지 방법은 모든 트래픽과 일치하는 단일 필터가 포함된 하위 계층을 추가하는 것입니다.

구성 가능한 재정의 정책

아래에 설명된 규칙은 계층 내의 중재 결정을 제어합니다. 이러한 규칙은 필터 엔진에서 네트워크 트래픽에 적용되는 하위 계층 작업 중 하나를 결정하는 데 사용됩니다.

기본 정책은 다음과 같습니다.

  • 작업은 가장 높은 우선 순위에서 가장 낮은 우선 순위까지 하위 계층의 우선 순위 순서로 평가됩니다.
  • "Block"은 "Permit"를 재정의합니다.
  • "Block"은 최종(재정의할 수 없음)이며 평가를 중지합니다. 패킷이 삭제됩니다.

기본 정책은 방화벽에서 재정의되지 않는 예외 시나리오를 지원하지 않습니다. 이러한 유형의 시나리오의 일반적인 예는 다음과 같습니다.

  • 타사 방화벽이 있는 경우에도 원격 관리 포트를 열어야 합니다.
  • 작동하기 위해 포트를 열어야 하는 구성 요소(예: 유니버설 플러그 앤 플레이 UPnP). 관리자가 구성 요소를 명시적으로 사용하도록 설정한 경우 방화벽이 트래픽을 자동으로 차단해서는 안 됩니다.

위의 시나리오를 지원하려면 작업 재정의 권한을 관리하여 다른 필터링 결정보다 필터링 결정을 재정의하기가 더 어려워야 합니다. 이 권한은 FWPS_RIGHT_ACTION_WRITE 플래그로 구현되며 필터별로 설정됩니다.

평가 알고리즘은 FWPS_RIGHT_ACTION_WRITE 플래그와 함께 현재 작업("허용" 또는 "블록")을 유지 관리합니다. 플래그는 우선 순위가 낮은 하위 계층이 작업을 재정의할 수 있는지 여부를 제어합니다. 공급자는 FWPS_CLASSIFY_OUT0 구조에서 FWPS_RIGHT_ACTION_WRITE 플래그를 설정하거나 다시 설정하여 작업을 재정의할 수 있거나 재정의할 수 없는 방법을 제어합니다. 플래그가 설정되면 작업을 재정의할 수 있음을 나타냅니다. 플래그가 없으면 작업을 재정의할 수 없습니다.

작업 재정의 허용(FWPS_RIGHT_ACTION_WRITE 설정됨) Description
허용 Yes 트래픽은 다른 하위 계층에서 차단할 수 있습니다. 이를 소프트 허가라고 합니다.
허용 No 트래픽은 콜아웃 Veto에 의해서만 다른 하위 계층에서 차단할 수 있습니다. 이를 하드 허가라고 합니다.
차단 Yes 트래픽은 다른 하위 계층에서 허용될 수 있습니다. 이를 소프트 블록이라고 합니다.
차단 No 트래픽은 다른 하위 계층에서 허용될 수 없습니다. 이를 하드 블록이라고 합니다.

필터 작업은 구조체 FWPM_ACTION0 형식 멤버를 FWP_ACTION_BLOCK 또는 FWP_ACTION_PERMIT 설정하여 설정할 수 있습니다. 필터는 작업 유형과 함께 플래그 FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT 노출합니다. 이 플래그가 지워지면 작업 유형이 어렵고 나중에 설명한 대로 Hard Permit가 Veto 에 의해 재정의되는 경우를 제외하고는 재정의할 수 없습니다. 그렇지 않으면 우선 순위가 높은 작업에 의해 재정의될 수 있는 소프트입니다.

다음 표에서는 필터 및 콜아웃 작업에 대한 기본 동작을 나열합니다.

작업 기본 동작
필터 허용 소프트 허가
콜아웃 허가 소프트 허가
필터 블록 하드 블록
콜아웃 블록 소프트 블록

Veto는 필터를 호출하기 전에 FWPS_RIGHT_ACTION_WRITE 플래그가 다시 설정되었을 때 필터에서 반환하는 "차단" 작업입니다. Veto는 하드 허가로 허용된 트래픽을 차단합니다.

Veto가 발급되면 구성에서 충돌이 발생합니다. 충돌을 완화하기 위해 다음 작업을 수행합니다.

  • 트래픽이 차단됩니다.

  • 감사 이벤트가 생성됩니다.

  • 알림이 생성됩니다.

    참고

    알림을 구독한 모든 엔터티에서 알림을 받습니다. 여기에는 일반적으로 방화벽(잘못된 구성을 검색하기 위해) 또는 애플리케이션(특정 필터가 재정의되었는지 감지하기 위해)이 포함됩니다.

    참고

    "하드 허용" 필터를 재정의하면 필수 UI(사용자 인터페이스)가 인스턴스화되지 않습니다. 재정의 알림은 수신하도록 등록된 공급자에게 전송되며, 이를 통해 방화벽 또는 "허용" 필터를 만든 애플리케이션이 사용자 작업을 요청하는 UI를 표시할 수 있습니다. 자동으로 차단하지 않으려는 방화벽 ISV가 WFP의 다른 위치에 등록하거나(선호도가 낮은) 호출 드라이버에서 모든 논리를 처리할 수 있으므로 이러한 재정의 이벤트에 대한 플랫폼 UI 알림을 갖는 것은 아무런 가치가 없습니다. 사용자에게 메시지를 표시하는 것이 좋은 생각이라고 생각하는 ISV는 사용자 환경을 소유하고 자체 UI를 만들고자 합니다.

위에서 설명한 완화 동작은 "하드 허용" 필터가 "차단" 필터에 의해 자동으로 재정의되지 않도록 하고, 방화벽에서 원격 관리 포트를 차단할 수 없는 시나리오를 다룹니다. "하드 허용" 필터를 자동으로 재정의하려면 방화벽이 우선 순위가 높은 하위 계층 내에 필터를 추가해야 합니다.

참고

계층 간 중재가 없으므로 "하드 허가"로 허용되는 트래픽은 다른 계층에서 여전히 차단될 수 있습니다. 필요한 경우 각 계층에서 트래픽이 허용되도록 하는 것은 정책 작성자의 책임입니다.

열 포트를 요청하는 사용자 애플리케이션은 우선 순위가 낮은 하위 계층에 재정의 가능한 필터를 추가합니다. 방화벽은 필터 추가 알림 이벤트를 구독하고 사용자(또는 정책) 유효성 검사 후에 일치하는 필터를 추가할 수 있습니다.

필터 가중치 할당