.. _cwp-not-shown:

차단단말이 CWP페이지 Redirection이 되지 않는 문제
===================================================

Genian ZTNA는 회사의 보안 정책을 준수하지 않은 사용자가 브라우저로 네트워크 접속을 시도할 때 CWP를 통해 준수해야 하는 보안 정책을 보여 줍니다.
사용자에게 접속인증페이지를 표시하기 위해 Genian ZTNA은 사용자 PC가 네트워크 통신 프로세스를 모니터링하고 사용자가 액세스하려는 페이지 대신 Genian ZTNA의 CWP 페이지를 볼 수 있도록합니다.

Genian ZTNA가 제어하는 PC에서 CWP 페이지에 연결되어 있지 않습니다. 또는 웹브라우저에 "연결이 비공개입니다." 라는 문구만 표시되는 경우가 있습니다

이 문제는 보안 정책을 준수하지 않는 사용자가 HTTPS 서비스를 사용하여 특정 사이트에 연결할 때 발생합니다.  
Genian ZTNA는 기본적으로 단말에서 발생하는 패킷을 우회시켜 사용자에게 CWP 화면을 표시하지만 HSTS 및 HPKP(브라우저의 인증서 확인)라는 브라우저의 기능으로 CWP 페이지 리다이렉션이 되지 않을 수 있습니다.
아래 내용들을 확인하여 ZTNA의 차단 페이지 동작방식을 이해할 수 있습니다.

.. _hsts-hpkp:

HTTP 통신을 시도하는 PC에 CWP 페이지를 표시하는 방식
----------------------------------------------------

Genian ZTNA가 HTTPS 통신을 하려는 PC에 CWP 페이지를 표시하는 방법입니다. 차단된 단말이 WEB 브라우저로 통신을 시도할때 GENIAN ZTNA CWP 페이지가 표시되는 원리를 이해할 수 있습니다. 


**이 방법은 단말의 패킷을 가로채는 방법을 사용합니다.**

보안 정책을 준수하지 않는 PC는 ARP 테이블이 변조된 상태에 있습니다. 모든 통신은 네트워크센서를 통해 이루어집니다. 웹 서버와 통신 할 때 네트워크센서는 웹 서버 대신 통신합니다.

.. image:: /images/mitm-attack.jpg
   :width: 600px
 
| 여기서 중요한 점은 서버 인증서가 Genian ZTNA에서 생성한 CA 인증서(FAKE 인증서)로 전송되어 암호화된 통신이 웹 서버에 연결되지 않고 Genian ZTNA로 세션이 설정되므로 네트워크센서에서 통신 내용을 확인할 수 있습니다. 
| 따라서 Genian ZTNA는 보안 정책을 준수하지 않은 PC에서 CWP 화면을 표시할 수 있습니다.
| 그러나 보안 정책을 준수하지 않은 사용자가 특정 웹 사이트에 액세스 할 때 브라우저 화면에서 "연결이 비공개로 설정되어 있지 않습니다"라는 메시지만 볼 수 있고 CWP 화면을 볼 수 없는 이유는 HSTS 및 HPKP 기능 때문입니다.

1. HSTS/HPKP 로 인한 CWP 페이지가 표시되지 않는 경우
------------------------------------------------------

증상
'''''''

보안 정책을 준수하지 않는 사용자 PC가 특정 웹 사이트에 접속할 때 브라우저 화면에 **"연결이 비공개로 설정되어 있지 않습니다. ( IE : 이 사이트는 안전하지 않습니다. )"** 라는 메시지가 나타납니다.

원인
'''''''

Genian ZTNA가 CWP 페이지를 표시하지 못하는 경우와 보안 정책을 준수하지 않는 사용자를 제어하는 ​​방법에 대해 설명 하겠습니다. 

제어 대상 PC가 HTTPS 사이트에 액세스 할 때 Genian ZTNA는 자체 인증서를 특정 사이트 인증서 대신 제어 대상 PC에 전달합니다. 

여기서 브라우저는 **Genian ZTNA에서 받은 인증서의 PIN 값을 사전 등록된 특정 사이트의 PIN 값과 비교** 합니다.
PIN 값이 서로 다른 것으로 판단되면 Genian ZTNA는 제어 대상 PC와 암호화 대상 사이에 암호화 세션을 설정할 수 없으므로 사용자 PC에 CWP 페이지를 표시 할 수 없습니다. 

따라서 특정 사이트에 액세스 할 때 제어 대상 사용자 PC가 CWP 화면으로 리다이렉션되지 않고 "사용자의 연결이 비공개가 아닙니다"라는 메시지만 표시되는 것입니다.

.. note::
    HSTS(HTTP Strict Transport security) 란?
 
    - 클라이언트가 요청하는 HTTP 패킷을 HTTPS로만 요청하도록 강제화 하는 설정
    - 웹서버의 응답 헤더에 ‘Strict-Transport-Security’ 를 삽입하여 최초 요청 시 부터 HTTPS로 강제화하는 설정
    - 중간자 공격 MITM (Man In The Middle) 중 일부인 SSL Strip 공격을 방지할 수 있다.
 
    HPKP(HTTP Public Key Pinning) 란?
 
    - 클라이언트가 서버와 SSL/TLS 암호화 통신에 사용할 인증서를 최종 서버의 인증서로 고정(Pinning) 하는 설정
    - 잘못된 PIN 값을 가진 인증서로 접속 요청 시 고정했던 인증서를 비교하여 다를 경우 접속을 거부
    - 즉. 중간자 공격 MITM (Man In The Middle) 을 방지할 수 있다.

해결방법
'''''''''

리다이렉션 기능을 사용하는 모든 보안 솔루션에서 발생하는 문제이며 현재 다른 대책을 고려 중입니다.

2. Proxy 서버를 사용하여 CWP Redirection이 되지 않음
-----------------------------------------------------

증상
''''''''''

네트워크를 제한하는 정책을 할당받은 노드가 WEB페이지 연결을 시도할때 CWP페이지로 Redirection 이 되지 않는 현상발생

원인
''''''''''

단말의 트래픽이 Proxy 서버를 거치면서 정상적으로 Redirection을 수행하지 못하는 문제로 발생

해결방법
'''''''''''

Proxy 설정에서 정책서버의 IP를 예외처리합니다. 

예외처리 방법은 하단을 참고하시기 바랍니다. 

**.pac 파일 수정 샘플**

.. code-block:: bash

    function FindProxyForURL(url, host) { if (isInNet(host, "[정책서버 IP]","255.255.255.255")) 
    return "DIRECT"; else return "PROXY [프록시 서버 주소]"; }

**.dat 파일 수정 샘플**

.. code-block:: bash

    function FindProxyForURL(url, host)
    {
    if (isPlainHostName(host) ||
    isInNet(host, "x.x.x.x", "255.255.255.255"))
    return "DIRECT";
    else
    return "PROXY proxy.company.com:8080";
    };