다음을 통해 공유


프록시 연결 추적 사용

프록시 연결 추적은 Windows 8 이상 버전의 Windows에서 지원됩니다.

이 WFP 기능을 사용하면 연결의 초기 리디렉션에서 대상에 대한 최종 연결로의 리디렉션 "레코드"를 쉽게 추적할 수 있습니다. 또한 WFP를 사용하면 설명선 드라이버가 연결을 리디렉션할 수 있습니다.

프록시 연결 추적

여러 프록시(예: 다른 ISV에서 개발됨)가 있는 경우 한 당사자가 최종 대상과 통신하는 데 사용하는 연결이 제2 당사자에 의해 리디렉션될 수 있습니다. 새 연결을 원래 당사자가 다시 리디렉션할 수 있습니다. 연결 추적이 없으면 원래 연결이 무한 프록시 루프에서 중단되므로 최종 대상에 도달하지 못할 수 있습니다.

연결 추적을 지원하기 위한 데이터 필드 식별자에 추가된 내용은 다음과 같습니다.

FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
프록시 연결에 대한 원래 애플리케이션의 전체 경로입니다. 애플리케이션이 프록시되지 않은 경우 이 경로는 xxx_ALE_APP_ID 동일합니다.

FWPS_FIELD_Xxx_PACKAGE_ID
패키지 식별자는 연결된 AppContainer 프로세스를 식별하는 SID(보안 식별자)입니다.

연결 리디렉션

설명선 드라이버는 FwpsRedirectHandleCreate0 함수를 호출하여 TCP 연결을 리디렉션하는 데 사용할 수 있는 핸들을 만듭니다.

이 단원에 포함된 항목은 다음과 같습니다.

리디렉션 핸들 사용

리디렉션 상태 쿼리

리디렉션 핸들 사용

ALE 연결 리디렉션 설명선이 로컬 프로세스로 연결을 리디렉션하려면 먼저 FwpsRedirectHandleCreate0 함수를 사용하여 리디렉션 핸들을 가져와서 FWPS_CONNECT_REQUEST0 구조에 핸들을 배치해야 합니다. 설명선은 ALE 연결 리디렉션 계층에 대한 classifyFn의 구조를 수정합니다.

FWPS_CONNECT_REQUEST0 구조에는 리디렉션을 위한 다음 멤버가 포함됩니다.

용어 Description

localRedirectHandle

FwpsRedirectHandleCreate0 함수를 호출하여 설명선 드라이버가 만든 리디렉션 핸들입니다.

localRedirectContext

ExAllocatePoolWithTag 함수를 호출하여 설명선 드라이버가 할당한 설명선 드라이버 컨텍스트 영역입니다.

localRedirectContextSize

설명선 제공 컨텍스트 영역의 크기(바이트)입니다.

설명선 드라이버가 리디렉션 핸들 사용을 완료한 후 FwpsRedirectHandleDestroy0 함수를 호출하여 핸들을 삭제해야 합니다.

리디렉션 상태 쿼리

설명선 드라이버는 FwpsQueryConnectionRedirectState0 함수를 호출하여 연결의 리디렉션 상태를 가져옵니다. FWPS_CONNECTION_REDIRECT_STATE 열거형은 FwpsQueryConnectionRedirectState0 함수 호출에 대한 반환 형식입니다.

리디렉션 상태 FWPS_CONNECTION_NOT_REDIRECTED 경우 ALE_CONNECT_REDIRECT 콜아웃에서 연결을 프록시로 진행할 수 있습니다.

리디렉션 상태 FWPS_CONNECTION_REDIRECTED_BY_SELF 경우 ALE_CONNECT_REDIRECT 콜아웃은 FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE 반환해야 합니다.

리디렉션 상태 FWPS_CONNECTION_REDIRECTED_BY_OTHER 경우 ALE_CONNECT_REDIRECT 호출이 다른 검사자의 결과를 신뢰하지 않는 경우 연결을 프록시로 진행할 수 있습니다.

리디렉션 상태 FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF 경우 다른 검사자의 결과가 허용되지 않더라도 ALE_CONNECT_REDIRECT 설명선이 리디렉션을 수행하지 않아야 합니다. 이 경우 ALE_AUTH_CONNECT 계층에서 연결을 허용하거나 차단해야 합니다.