Windows 필터링 플랫폼 확장 가능 도우미 클래스
WFP(Windows Filtering Platform)에는 FPHC(Filtering Platform 도우미 클래스)라는 NDF(네트워크 진단 프레임워크) 도우미 클래스가 포함되어 있습니다. FPHC는 WFP로 인한 연결 문제의 근본 원인을 식별하는 데 도움이 될 수 있습니다. 타사 방화벽 개발자는 자체 NDF 도우미 클래스를 구현할 수 있습니다. FPHC 확장성을 사용하면 진단 중에 이러한 타사 도우미 클래스를 호출할 수 있습니다.
이 항목에서는 WFP API에 대해 잘 알고 있다고 가정합니다.
FPHC를 확장하는 이유
WFP API를 호출하는 애플리케이션을 작성하는 모든 개발자는 FPHC를 확장하는 NDF 도우미 클래스를 작성해야 합니다.
FPHC는 연결 문제의 원인으로 WFP를 식별할 수 있습니다. 사용 가능한 경우 FPHC는 네트워크 트래픽을 차단하는 필터를 만든 공급자를 식별할 수도 있습니다. FPHC는 이 정보를 NDF에 전달합니다. 그러면 WFP가 연결 문제를 유발하고 있음을 사용자에게 알리고 트래픽을 차단하는 공급자의 이름을 지정할 수 있습니다.
그러나 FPHC는 사용자에게 수정 작업을 제안할 수 없으며 필터가 사용자에 대한 트래픽을 차단하는 이유를 제공할 수 없습니다. FPHC 확장만 해당 작업을 수행할 수 있습니다.
WFP API를 호출하는 타사 방화벽 애플리케이션을 고려합니다. 타사 방화벽이 FPHC 확장을 구현하는 경우 NDF로 식별되는 연결 문제를 처리하기 위해 사용자 지정 작업을 구현할 수 있습니다. NDF가 타사 방화벽에 의해 애플리케이션이 차단되었다고 진단하면 FPHC 확장에서 차단 이벤트를 처리할 수 있습니다. FPHC 확장에서 이벤트를 처리할 수 있는 한 가지 방법은 사용자에게 방화벽을 사용하여 프로그램 차단을 해제한 다음 사용자 확인 시 프로그램 차단을 해제하라는 메시지를 표시하는 것입니다. 또는 FPHC 확장은 애플리케이션이 차단된 이유(예: 애플리케이션이 방화벽에 의해 맬웨어로 간주되어 차단된 이유)를 사용자에게 알려 이벤트를 처리할 수 있습니다.
WFP 진단 정보
네트워크 문제를 진단하기 위해 NDF가 호출되면 도우미 클래스에 문의하여 문제의 원인을 확인합니다. 상위 수준 도우미 클래스가 WFP로 인해 네트워크 오류가 발생할 수 있다고 판단하는 경우 사용 가능한 정보를 기반으로 FPHC에 대한 가설을 생성합니다. NDF는 여러 이벤트 특성의 형태로 이 가설을 FPHC에 전달합니다. 이러한 특성은 아래 FPHC 이벤트 특성 섹션에 자세히 설명되어 있습니다.
네트워크 문제는 특정 연결 시도에 영향을 주는 연결 문제로 설명할 수 있습니다. 예를 들어 사용자가 실수로 허용 안 을 클릭하여 애플리케이션을 차단했을 수 있습니다. 그러면 방화벽이 애플리케이션이 모든 포트에 바인딩되지 않도록 차단합니다. 애플리케이션이 차단되는 이유를 모르는 사용자는 애플리케이션에서 제공하는 진입점을 통해 문제를 진단하려고 할 수 있습니다. FPHC는 로그를 살펴보고 일치하는 항목을 찾으면 해당 특정 필터의 필터 ID 및 공급자 ID를 검색합니다. 이 시점에서 FPHC는 해당 필터의 소유자가 누구인지 알고 있으며 추가 진단을 위해 진단 프로세스를 적절한 도우미 클래스에 전달합니다.
특성과 일치하는 WFP 이벤트 로그의 가장 최근 이벤트는 네트워크 문제와 관련된 것으로 선택됩니다. 일치하는 이벤트를 찾을 수 없고 이벤트가 발생한 시간이 WFP 로그에 포함되는 경우 FPHC는 NDF에 정상임을 나타냅니다. 일치하는 이벤트가 없고 WFP 로그에 이벤트가 발생한 시간이 포함되지 않으면 FPHC는 확정되지 않은 상태 NDF로 반환합니다.
일치하는 이벤트가 발견되면 FPHC는 필터의 공급자 ID를 사용하여 이벤트가 연결을 차단한 보안 규칙의 공급자를 식별하게 합니다. 그런 다음 FPHC는 해당 공급자에 대한 도우미 클래스 확장이 있는지 여부를 검사. 이 경우 FPHC는 해당 공급자에 대한 가설을 생성한 다음 NDF가 확장을 호출합니다. 확장은 사용자에게 유용한 진단 및 복구 정보를 반환해야 합니다.
도우미 클래스 등록
NDF 도우미 클래스 확장 등록에 설명된 대로 FPHC 확장을 등록해야 합니다. 도우미 클래스를 구현하는 개발자는 적절한 경우 NDF에서 확장을 호출하도록 해당 확장을 등록해야 합니다. 아래에 설명된 일치 특성은 레지스트리의 HKLM\System\CurrentControlSet\Control\NetDiagFx\VendorName\HostDLLs\도우미 클래스 DLL\HelperClasses\도우미 클래스 이름\MatchAttributes 아래에 저장되어야 합니다.
다음 표에서는 WFP 이벤트 로그의 진단 사용할 가설을 식별하는 데 사용되는 일치 특성을 보여줍니다.
이름 | 형식 | 설명 |
---|---|---|
ProviderID | REG_SZ | FPHC 확장의 GUID입니다. 이 값은 WFP 공급자 GUID와 동일해야 합니다. 이 문자열은 대/소문자를 구분합니다. 대문자로 묶인 중괄호와 하이픈을 사용하여 레지스트리에 저장해야 합니다. 예를 들어 {C200E360-38C5-11CE-AE62-08002B2B79EF}는 유효한 ProviderID입니다. |
차단 필터의 ProviderID가 등록된 도우미 클래스의 공급자 ID와 일치하면 FPHC는 NDF에 해당 도우미 클래스를 호출하도록 알려 FPHC의 진단 기능을 확장합니다.
FPHC 이벤트 특성
다음 표에서는 일치하는 각 이벤트와 연결된 이벤트 특성을 나열합니다. 각 이벤트 특성은 HELPER_ATTRIBUTE 구조에 저장됩니다. 이러한 특성은 일치하는 이벤트가 발견되면 NDF에서 FPHC로 전달됩니다. 이러한 확장은 FPHC 확장에 전달될 수 있습니다.
Attribute | ATTRIBUTE_TYPE 값 | 설명 |
---|---|---|
공급자 GUID | AT_GUID | 필터와 연결된 공급자의 GUID입니다. |
타임스탬프 | AT_OCTET_STRING | 이벤트가 발생한 시간을 지정하는 FILETIME 형식의 버퍼입니다. 이 타임스탬프는 이벤트를 고유하게 식별하는 데 사용할 수 있습니다. |
ipProtocol | AT_UINT32 | UINT8 형식의 전송 계층 프로토콜입니다. |
LocalAddr | AT_SOCKADDR | DIAG_SOCKADDR 구조에 저장된 로컬 IP 주소 및 포트입니다. |
RemoteAddr | AT_SOCKADDR | DIAG_SOCKADDR 구조에 저장된 원격 IP 주소 및 포트입니다. |
userId | AT_OCTET_STRING | userid를 나타내는 SID 형식의 버퍼입니다. userId 길이가 0이면 SID를 사용할 수 없습니다. |
appId | AT_STRING | 검색된 애플리케이션 식별자를 저장하는 버퍼입니다. appId의 값이 L""인 경우 애플리케이션 식별자를 사용할 수 없습니다. |
FPHC 이벤트 처리
사용자에게 진단 및 복구 정보를 제안하기 전에 FPHC 확장은 FPHC 알림에서 제공하는 것보다 더 많은 데이터를 수집해야 합니다. 이 데이터는 WFP 이벤트 관리 함수에서 가져올 수 있습니다. 이러한 함수는 Net 이벤트 표시 샘플에 설명되어 있습니다.
자세한 이벤트 관리 샘플은 SDK에 포함되어 있습니다. 샘플의 소스 코드는 C:\Program Files\Microsoft SDKs\Windows<\version number>\Samples\NetDs\WFP\DiagEvents 아래의 SDK 설치 위치에서 찾을 수 있습니다. Windows Vista SDK는 다운로드 센터에서 사용할 수 있습니다.
기본 제공 FPHC 진단
FPHC 확장이 없는 경우 FPHC는 아래에 나열된 시나리오를 진단할 수 있습니다. FPHC로 진단된 대부분의 연결 오류는 방화벽이 트래픽을 차단하기 때문에 발생합니다. IPsec 시나리오는 덜 일반적입니다.
다음 표에서는 NDF에 전달된 설명 및 복구 정보와 함께 FPHC에서 진단할 수 있는 연결 오류를 일으키는 몇 가지 시나리오를 보여 줍니다.
시나리오 | 낮은 상태 설명 | 복구 정보 |
---|---|---|
방화벽 삭제 | 이 컴퓨터의 방화벽 설정이 연결을 차단하고 있습니다. | 방화벽 설정을 확인합니다. |
주 모드 오류 | IPsec 보안 정책 불일치로 인해 연결할 수 없습니다. | IPsec 정책 소유자에게 문의하세요. |
빠른 모드 오류 | IPsec 보안 정책 불일치로 인해 연결할 수 없습니다. | IPsec 정책 소유자에게 문의하세요. |
사용자 모드 오류 | IPsec 보안 정책 불일치로 인해 연결할 수 없습니다. | IPsec 정책 소유자에게 문의하세요. |
자격 증명 실패 | 이 컴퓨터의 루트 CA(인증 기관)가 원격 컴퓨터의 루트 CA와 일치하지 않으므로 연결할 수 없습니다. | 신뢰할 수 있는 루트 인증서를 업데이트합니다. |
만료된 인증서 | IPsec 인증에 사용되는 인증서가 만료되었습니다. | 인증서를 요청합니다. |
기타 인증서 오류 | IPsec 인증에 유효한 인증서를 찾을 수 없습니다. | 인증서를 요청합니다. |
Kerberos 오류 | 컴퓨터는 이 작업의 일부가 아닙니다기본. | 이 컴퓨터를 할 일기본 조인합니다. |
미리 공유된 키 | 미리 공유된 키를 다시 설정합니다. | 미리 공유된 키를 다시 설정합니다. |