Windows Filtering Platform 콜아웃을 통한 사용자 표시용 인터셉션 페이지 구현

Sun Ji Soo 40 평판 포인트
2026-04-27T03:39:39.3233333+00:00

현재 자체 기업용 엔드포인트 보안 솔루션을 개발하는 프로젝트에서, 우리는 Windows Filtering Platform 을 활용하여 승인되지 않은 웹 트래픽을 가로채고 차단하고 있습니다. 패킷을 드롭하거나 연결을 차단하는 것은 문제없이 수행되지만, 사용자에게 일반적인 “Connection Reset” 오류를 보여주는 대신 맞춤형 알림 페이지로 브라우저를 리디렉션하는 깔끔한 방법을 찾는 데 어려움을 겪고 있습니다.

WFP 커널 수준에서 차단 동작이 트리거될 때, 특정 HTTP 응답을 주입하거나 TCP 스트림을 로컬에서 호스팅되는 안내 페이지로 유도하는 표준적인 프로그래밍 워크플로를 설명해 주실 수 있을까요?

비즈니스용 Windows | Windows Server | 디바이스 및 배포 | 설정, 설치 또는 업그레이드
댓글 0개 설명 없음

질문 작성자가 수락한 답변
Harry Phan 33,720 평판 포인트 독립 자문가
2026-04-27T04:23:02.66+00:00

"심슨 씨가 좋아해.

WFP 자체는 애플리케이션 계층의 콘텐츠를 생성하거나 주입할 수 없고, 패킷 및 스트림 계층에서만 동작합니다. 따라서 브라우저에 “연결 재설정” 오류 대신 사용자 정의 알림 페이지를 보여주려면 WFP 차단과 함께 HTTP 처리를 담당하는 사용자 모드 콜아웃을 결합해야 합니다. 일반적인 워크플로우는 ALE 계층(FWPM_LAYER_ALE_AUTH_CONNECT_V4/V6)에서 아웃바운드 TCP 연결을 가로채고 정책 위반을 감지했을 때 패킷을 드롭하는 대신 목적지를 127.0.0.1:포트로 재작성하여 로컬 루프백 리스너로 리디렉션하는 방식입니다. 브라우저는 로컬 서비스와 TCP 핸드셰이크를 완료하고, 해당 서비스가 HTTP/1.1 200 OK와 HTML 콘텐츠를 반환하면 정상적인 알림 페이지가 표시됩니다.

DNS 조작을 피하고 싶다면 스트림 계층(FWPM_LAYER_STREAM_V4) 콜아웃을 사용해 원래 연결을 종료하고 FwpsStreamInjectAsync0 API를 통해 합성된 HTTP 응답을 직접 TCP 스트림에 삽입할 수 있습니다. 다만 이 경우 시퀀스 번호와 버퍼 관리가 까다롭기 때문에 Microsoft 공식 문서에서도 사용자 모드 콜아웃을 통한 안전한 버퍼 처리와 주입을 권장합니다. 가장 안정적이고 유지보수하기 쉬운 접근 방식은 ALE 연결 리디렉션을 통해 로컬 웹 서비스로 보내는 방법이며, 이는 저수준 스트림 주입의 복잡성을 피하면서 브라우저 경험을 일관되게 유지할 수 있습니다.

위의 답변이 질문 해결에 도움이 되었다면, "답변 채택(Accept Answer)"을 눌러 주시기 바랍니다. 그러면 동일한 문제를 겪는 다른 커뮤니티 구성원들이 쉽게 해결책을 찾을 수 있습니다. 여러분의 기여에 진심으로 감사드립니다.

해리.

이 대답이 도움이 되었나요?

댓글 0개 설명 없음

0 추가 답변

정렬 기준: 가장 유용함

답변

질문 작성자는 답변을 '승인됨'으로 표시하고, 중재자는 답변을 '추천됨'으로 표시할 수 있습니다. 이를 통해 사용자는 해당 답변이 작성자의 문제를 해결했다는 것을 알 수 있습니다.