프록시 연결 추적 사용
프록시 연결 추적은 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 계층에서 연결을 허용하거나 차단해야 합니다.