HTTP 헤더 처리

웹 클라이언트가 웹 서버로 요청을 전달할 때나 웹 서버가 쿼리를 응답할 때, 응답의 앞 부분은 HTTP 요청이거나 HTTP 응답이 된다. HTTP 응답/요청 후에 비로소 클라이언트/서버는 HTTP 헤더를 전송한다. 요청 헤더 필드에서는 클라이언트가 서버로 추가적인 정보를 전송한다. HTTP 헤더에는 브라우저 종류, 운영 체제 정보, 세부적인 인증 정보 등과 같은 정보를 포함한다. 클라이언트 헤더는 요청을 어떤 애플리케이션이 담당하는지 확인하기 위해 유저-에이전트(User-Agent) 속성을 이용한다.

HTTP 필터의 도움을 통해 특정한 HTTP 헤더를 차단할 수 있다.
사용자 삽입 이미지

Server Header 필드 설정값을 통해 관리자는 응답가 기타 설정에 있어 HTTP 헤더의 값을 벼경하거나 HTTP 헤더를 제거할 수 있다.

다음 화면에서는 P2P 프로그램으로 유명한 Kazaa를 차단하는 예이다.
사용자 삽입 이미지


HTTP 시그내처

HTTP 시그내처는 HTTP 본문 또는 헤더에 위치한다. 여러분은 특정한 애플리케이션의 실행을 거부하기 위해 HTTP 시그내처를 이용할 수 있다. 문제는 여러분이 특정 애플리케이션에서 사용하는 시그내처가 무엇인지 알아 내는 것이다. 인터넷에서 검색해 보면 일부 문서가 공개되어 있지만, 가장 좋은 방법은 네트워크 스니터 프로그램과 같은 프로그램을 사용하여 HTTP 시그내처를 직접 확인할 수도 있다.

중요 정보: ISA 2006에서는 요청 또는 응답이 UTF-8로 인코딩된 경우에만 HTTP 시그내처를 필터링할 수 있다.

사용자 삽입 이미지

아래 그림은 MS Live Messenger 프로토콜을 차단하는 예이다.

사용자 삽입 이미지


자주 사용되는 프로그램의 시그내처에 대한 정보를 얻고자 한다면 여기를 클릭하세요.


중요 정보: ISA 2006에서는 요청/응답의 맨 앞부분 100 바이트에 대해서만 검사를 한다.검사하는 최대 바이트 수를 늘릴 수 있지만, 시스템의 부하를 줄 수 있다는 점을 주의하자.

아래 그림은 HTTP 필터가 차단했을 때 브라우저에서 보여 주는 오류 화면의 예이다.
사용자 삽입 이미지

특정한 HTTP 헤더 찾는 방법

어떤 HTTP 시그내처는 여러분이 생소할 수도 있다. 하지만, Windows Netmon 3.0과 같은 프로그램을 사용하여 HTTP 네트워크 트래픽을 추적할 수 있다.

다음 그림은 Wireshark(예전의 Ethereal)과 같은 네트워크 모니터링 프로그램인 Microsoft Netmon 2.0의 출력 화면의 예이다.
사용자 삽입 이미지

위의 예를 보면, 요청 형식(GET), HTTP 요청 헤더(HTTP/1.1), 유저-에이전트(Mozilla/4.0), 시그내처(MSIE 6.0)임을 알 수 있다.


HTTPFILTERCONFIG.VBS

또한, ISA2006 SDK에서 HTTPFILTERCONFIG.VBS 파일을 이용하여 HTTP 필터 구성 정보를 가져오거나 내보낼 수 있다.(경로: :\PROGRAMME\MICROSOFT ISA SERVER 2006 SDK\SDK\SAMPLES\ADMIN)

사용자 삽입 이미지


마치며

지금까지 ISA 2006에서 제공하는 HTTP 필터의 동작 원리에 대해 살펴 보았다. HTTP 필터는 악성코드, 트로이 목마, 웜을 차단할 수 있는 강력한 도구이다. 또한, 특정한 HTTP 시그내처를 차단하는데도 유용하게 사용된다. MS Live Messenger와 같이 방화벽에서 일반적으로 차단하는 방식인 포트 차단으로 막을 수 없는 경우 시그내처 차단을 통해 가능해 진다.

관련 자료 안내

ISA Server 2006 SDK

Common Application signatures

More about the HTTP protocol


reTweet
Posted by 문스랩닷컴
blog comments powered by Disqus

    HTTP 필터 구성

    HTTP 필터를 구성하려면, 프로토콜 정의(Definition)을 포함하는 규칙을 마우스 오른쪽 버튼으로 클릭하고, Configure HTTP를 선택한다.
    사용자 삽입 이미지

    Request Header:

       Maximum Headers length (bytes): ISA Server가 요청을 차단하기까지,  HTTP 요청의 URL 및 HTTP 헤더의 최대 길이.

    Request Payload:

       Maximum payload length (bytes): 웹 서버를 게시하는 구성에서 HTTP POST 명령어로 전송할 수 있는 최대 길이.

    URL-Protection:

       Maximum URL Length (Bytes): 허용하는 URL의 최대 길이.

       Maximum Query length (Bytes): HTTP 요청에서 URL의 최대 길이.

    Verify normalization

    정규화란 URL이 인코딩된 요청을 디코딩하는 과정을 말한다. 이 옵션을 선택하여 정규화 과정 이후에 회피문자(Escaped character)를 포함하는 URL의 요청을 차단할 수 있다. URL을 디코딩한 후에 URL에 % 문자가 존재하지 않도록 한번더 정규화 과정을 수행한다. 두번째 정규화를 거친 URL에 차이점이 있는 경우 요청을 거부한다.

    Block High bit character

    DBCS(Double Byte Characters)나 Latin1 문자셋을 포함하는 URL을 차단한다. 특히, URL에 한글 문자가 포함된 HTTP 경로가 제대로 동작하지 않는 경우에는 이 옵션을 십중 팔구 선택한 경우이다.

    Executables

    윈도 실행 컨텐츠를 포함하는 응답을 차단한다. 이 부분을 통해 EXE 파일(실행 파일)을 다운로드하여 실행하는 동작을 차단할 수 있다.



    이제 Methods 탭에서 HTTP 메소드를 허용 또는 차단하는 부분을 살펴 보자.
    사용자 삽입 이미지

    다음 그림에서는 외부 웹 사이트에 파일을 업로드하는 메쏘드를 차단하는 방법을 소개한다.
    사용자 삽입 이미지


    Extensions 탭에서는 방화벽 규칙에서 차단 또는 허용할 파일의 확장자를 지정할 수 있다.

    사용자 삽입 이미지

    HTTP 필터에서는 파일 확장자를 지정하여 차단할 수 있다.
    사용자 삽입 이미지

    reTweet
    Posted by 문스랩닷컴
    blog comments powered by Disqus

      HTTP 필터 구성 방법

      HTTP 필터는 어떤 기능을 수행하는지 그리고 어떻게 구성하는지에 대해 다룹니다.

      ISA 서버를 적용하는 일반적인 네트워크 환경에서 HTTP 필터는 주로 사용되는 부분은 내부에 위치한 웹 서버를 게시한 경우 이 서버에 대한 다양한 공격을 차단하는 것이다. 그리고, 내부에 위치한 사용자들이 메신저(MSN, Live 등등)를 사용할 수 없게 하는데 사용된다.

      여러분도 아시다시피 예전에는 MSN 메신저는 TCP 포트 몇개만 막으면 손쉽게 막을 수 있었다. 하지만, 지금은 웹 포트(TCP 80)를 통해서 로그온과 채팅 등의 기능을 수행하기 때문에 포트를 막는 방법으로는 메신저 사용을 막을 수 없다. 오직, HTTP 필터를 써야만 해결할 수 있다. 물론, 로그온하는 모든 서버의 IP를 차단하면 되지만, 이거는 노가다다~.


      1. 웹 필터

      HTTP 필터는 ISA 2006에서는 보통 웹필터라고 부른다. 웹필터는 IIS ISAPI 모델에 기반을 둔 DLL 라이브러리를 모아 둔 것이다.

      웹 프록시 필터에서 웹필터를 로드하는데, 모든 정보들이 웹프록시 필터로 포워딩된다. 웹프록시 필터는 어떤 이벤트를 모니터링해야 할지 책임지며, 이벤트가 발생할 때마다 웹프록시 필터가 알 수 있다.

      아래 그림은 ISA Server 2006 콘솔에서 애드인으로 제공하는 HTTP 필터이다.
      사용자 삽입 이미지


      2. 웹 필터의 기능


      웹 필터는 다음의 작업을 수행한다.

      • HTTP 요청의 검색 및 변경
      • 네트워크 트래픽 분석
      • HTTP 응답의 검색 및 변경
      • 특정한 HTTP 응답 차단
      • 데이터 암호화 및 압축
      • 기타

      중요 사항: 웹 필터는 HTTP 헤더의 최대 길이 설정 값 이외에는 모두 규칙을 따른다. 최대 헤더 길이는 HTTP 프로토콜이 사용되는 모든 방화벽 규칙에도 동일하게 정의된다.

      주의: 웹 필터는 HTTPS 트래픽도 필터링할 수 있지만, HTTPS 브리징 모드가 사용되는 역방향 웹 서버 게시 시나리오에서만 사용한다. 외부로 나가는 HTTPS 패킷을 검사하려면 별도의 서드파티 프로그램을 사용해야 한다.
      reTweet
      Posted by 문스랩닷컴
      blog comments powered by Disqus

        Headers 탭에서는, HTTP 헤더를 어떻게 처리할지를 설정한다. 웹 클라이언트가 웹 서버로 요청을 전달할 때 또는 웹 서버가 쿼리에 응답할 때에, 응답의 맨 앞부분은 HTTP 요청 또는 HTTP 응답이 된다. HTTP 요청/응답 이후에 클라이언트/서버가 HTTP 헤더를 전송한다. 전송 ㅎ더 필드에는 서버에 전달할 추가적인 정보가 포함된다. HTTP 헤더에는 브라우저, 운영 체제 정보, 인증 정보 등을 포함한다. 클라이언트 헤더에서는 요청을 담당할 응용프로그램을 결정하는 User-Agent 속성을 사용한다.

        여기 예에서는 특정한 HTTP 헤더를 차단하는 화면을 보여 준다.
        사용자 삽입 이미지

        Server Header 부분에서는 응답 또는 다른 설정 부분에 있어 HTTP 헤더를 제거하거나 수정할 수 있게 해준다.

        아래 화면에서는 Kazaa라는 P2P 애플리케이션을 요청 헤더에 포함된 정보를 이용하여 차단한다.
        사용자 삽입 이미지


        Signature 탭에서는 HTTP 시그내처를 차단할 수 있는데, 이 시그내처는 HTTP 본문 또는 헤더에 존재한다. 특정한 프로그램의 실행을 거부하기 위해 HTTP 시그내처를 사용할 수 있다. 프로그램을 차단하려면 먼저 시그내처를 알아 내야 한다. 시그내처에 대한 정보는 인터넷에 일부 알려져 있으며, 스니퍼 프로그램을 통해 HTTP 시그내처를 직접 판독할 수 있다. 추후에 시그내처를 찾아 내는 방법을 소개할 예정이다.

        중요 정보: ISA 2006에서 HTTP 시그내처를 필터링하기 위해서는 요청과 응답이 모두 UTF-8로 인코딩되어야만 동작한다.

        사용자 삽입 이미지


        다음 화면은 Microsoft Live Messenger 프로토콜을 차단하는 예이다.
        사용자 삽입 이미지

        시그내처에 대한 정보가 더 필요하면 여기를 클릭하길 바란다.

        중요 정보: ISA 2006은 요청 및 응답 본문의 앞쪽 100바이트만 검사한다. 최대 크기를 늘려 이 값을 늘릴 수도 있지만, 성능 감소로 이어질 수 있으므로 주의해서 사용해야 한다.


        적용 예


        HTTP 필터에서 특정한 파일의 확장자를 차단하도록 설정한 후에 이 설정사항이 반영된 화면은 다음과 같다.
        사용자 삽입 이미지


        특정한 HTTP 헤더를 찾기

        HTTP 시그내처라고 하는 부분에 대해 여러분이 생소할 수도 있다. HTTP 네트워크 트래픽을 추적할 수 있는 Windows Netmon 3과 같은 네트워크 스니퍼 프로그램으로 알아 낼 수 있다.

        다음 화면은 Microsoft Netmon 2.0에서 찾아낸 결과이다. 하지만 Wireshark와 같은 네트워크 모니터 프로그램을 사용해도 무방하다.

        사용자 삽입 이미지

        여기 예를 살펴 보면, 요청 형식(GET), HTTP 요청 헤더(HTTP/1.1), User-Agent(모질라/4.0), 마지막으로 시그내처(MSIE 6.0)임을 알 수 있다.

        HTTPFILTERCONFIG.VBS

        ISA 2006이 설치된 경로 아래(C:\PROGRAMME\MICROSOFT ISA SERVER 2006 SDK\SDK\SAMPLES\ADMIN)에는 HTTPFILTERCONFIG.VBS라는 스크립트가 포함되어 있
        다. 이 스크립트는 HTTP 필터 구성을 가져오기 그리고 내보내기를 할 수 있게 해 준다.



        강좌를 마치며

        지금까지 ISA 2006에서 제공하는 HTTP 필터의 동작 원리에 대해 살펴 보았다. ISA 2006에서 제공하는 HTTP 필터는 악성 코드, 트로이 목마, 웜 등을 차단하는데 큰 도움을 줄 수 잇는 도구이다. 또한, 특정한 HTTP 시그내처를 차단하기 위해 HTTP 필터를 이용할 수 있다.

        참고 자료:
        ISA 2006 SDK
        시그내처 정보
        프로토콜에 대한 추가정보
        reTweet
        Posted by 문스랩닷컴
        blog comments powered by Disqus


          Web Analytics Blogs Directory