IIS 8.0 동적 IP 주소 제한

등록일시: 2012-05-29 17:17,  수정일시: 2016-09-02 08:55
조회수: 10,028
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.
본 문서에서는 클라이언트 IP 주소의 요청 횟수를 기반으로 IIS가 동적으로 접근을 거부하도록 서버를 구성하는 방법을 살펴봅니다. 다만, 본문의 원문은 IIS 8이 정식으로 배포되기 이전인 2012년 2월 29일에 공개된 문서로, 일부 내용에 변경사항이 존재할 수 있습니다. 본 문서는 2012년 5월 현재, IIS 8을 미리 살펴보기 위한 사전정보일 뿐입니다.

호환성

버전 비고
IIS 8.0 동적 IP 주소 제한은 IIS 8.0에서 도입되었습니다.
IIS 7.5 IIS 7.5에서는 동적 IP 주소 제한이 지원되지 않습니다.
IIS 7.0 IIS 7.0에서는 동적 IP 주소 제한이 지원되지 않습니다.

내용

문제점

IIS 7을 비롯한 IIS의 기존 버전에는 개별 IP 주소나 지정한 범위의 IP 주소를 대상으로 접근을 허용하거나 거부할 수 있는 기능이 내장되어 있습니다. 특정 IP 주소가 거부되면 이 IP 주소를 사용하는 모든 HTTP 클라이언트는 서버로부터 "403.6 Forbidden" HTTP 오류를 수신하게 됩니다. 이를 활용하면 서버 로그에 기록된 동작이나 웹사이트 동작을 근거로 서버에 대한 접근을 제어할 수 있습니다. 그러나, 이런 작업은 수작업으로만 처리가 가능합니다. 비록, 마이크로소프트 LogParser 유틸리티 같은 도구를 사용해서 IIS의 로그 파일을 검사하여 악의적인 사용자를 발견하는 스크립트를 작성하는 등의 방법도 생각해볼 수 있겠지만, 여전히 수작업으로 관리해야 한다는 점은 변하지 않습니다.

해결방법

마이크로소프트는 기존의 IIS 내장 기능을 확장해서 IIS 8.0에 다음과 같은 몇 가지 새로운 기능들을 포함시켰습니다:

  • 동적 IP 주소 필터링 기능을 사용하면 정해진 횟수의 요청을 초과하는 IP 주소의 접근을 제한할 수 있습니다. *
  • 이제 IP 주소 필터링 기능을 사용할 때 IIS가 특정 IP 주소의 접근을 제한하면서 수행할 동작을 지정할 수 있습니다. 가령, 클라이언트에 HTTP 403.6 응답을 반환하는 대신, 서버에서 악의적인 클라이언트로부터 전달된 요청 자체를 중지시킬 수 있습니다.
  • 이제 IP 주소 필터링 기능에서 프록시 모드가 지원됩니다. 클라이언트 IP 주소뿐만 아니라 x-forwarded-for HTTP 헤더로 전달된 값까지 IIS에서 확인하여 특정 IP 주소를 거부할 수 있습니다. **

* 간단한 설명을 위해서 생략됐지만 그냥 횟수만 검토하는 것이 아니라 특정 기간 동안의 요청 횟수를 기준으로 동작합니다.

** 이 x-forwarded-for HTTP 헤더에 대한 더 자세한 정보는 http://en.wikipedia.org/wiki/X-Forwarded-For 문서를 참고하시기 바랍니다. 즉, 특정 클라이언트가 방화벽이나 프록시 서버 등, 다수의 서버를 거쳐서 IIS에 접근할 때 x-forwarded-for HTTP 헤더에는...

X-Forwarded-For: client1, proxy1, proxy2

의 형태로 지나온 서버들의 IP 정보들이 차례차례 남게 됩니다. 이 때, 가장 좌측에 기록된 IP 주소(위의 경우 client1)가 IIS에서 가장 먼, 즉 클라이언트에 가장 가까운 IP 주소가 될 것입니다. 다만, 아쉽게도 이 헤더는 업계표준(De facto)일 뿐인지라 항상 지원된다고 보장할 수 없다는 단점이 존재합니다. 바로 그래서 이 예에서도 client1이 실제 클라이언트의 IP 주소라고 확언을 하지 못하고, 'IIS에서 가장 먼'이라는 다소 애매한 표현을 사용할 수 밖에 없었던 것입니다.

단계별 지침

전제조건:

  • IIS 8.0이 설치된 윈도우 8 머신이 필요합니다.

    노트: 반드시 IP and Domain Restrictions 기능이 IIS의 일부로 설치되어 있어야만 합니다.

알려진 버그에 대한 해결방법:

  • 현재 이 기능에 대한 알려진 버그는 존재하지 않습니다.

HTTP 요청 기반의 IIS 접근 거부 구성하기

IIS 8.0은 지정된 기간 동안 특정 HTTP 클라이언트가 서버에 접근한 횟수나 동시 연결 수를 근거로 웹사이트에 대한 접근을 거부하도록 구성할 수 있습니다.

IIS가 수신된 HTTP 요청 횟수를 기반으로 접근을 거부하도록 구성하려면 다음의 과정을 따라하십시요:

  1. 윈도우 8 컴퓨터에 관리자로 로그인합니다.
  2. IIS(인터넷 정보 서비스) 관리자를 실행합니다.
  3. 연결 패인에서 서버명, 웹사이트 또는 폴더 경로를 선택한 다음, 기능 목록에서 IP 주소 및 도메인 제한(IP Address and Domain Restrictions)을 더블 클릭합니다.
  4. 작업 패인에서 Edit Dynamic Restriction Settings 링크 버튼을 클릭합니다.
  5. 그러면, Dynamic IP Restriction Settings 대화 상자가 나타나는데, 한 HTTP 클라이언트로부터의 과도한 동시 연결을 제한하려면 Deny IP Address based on the number of concurrent requests 항목을 체크합니다. 그리고, 특정 기간 동안 한 HTTP 클라이언트가 너무 많은 연결을 요청하는 것을 제한하려면 Deny IP Address based on the number of requests over a period of time 항목을 체크합니다.
  6. OK 버튼을 클릭합니다.

IIS가 IP 주소를 거부할 때 수행할 동작 구성하기

IIS 7을 비롯한 기존 버전에서는 클라이언트의 IP 주소를 거부할 때, 서버로부터 "403.6 Forbidden" HTTP 오류가 반환되었습니다. IIS 8.0에서는 관리자가 서버를 구성하여 몇 가지 추가적인 방법으로 IP 주소에 대한 접근을 제한할 수 있습니다.

IIS가 IP 주소의 접근을 거부할 때 수행할 동작을 구성하려면 다음의 과정을 따라하십시요:

  1. 윈도우 8 컴퓨터에 관리자로 로그인합니다.
  2. IIS(인터넷 정보 서비스) 관리자를 실행합니다.
  3. 연결 패인에서 서버명, 웹사이트 또는 폴더 경로를 선택한 다음, 기능 목록에서 IP 주소 및 도메인 제한(IP Address and Domain Restrictions)을 더블 클릭합니다.
  4. 그리고, 작업 패인에서 기능 설정 편집(Edit Feature Settings) 링크 버튼을 클릭합니다.
  5. 그러면, Edit IP and Domain Restriction Settings 대화 상자가 나타나는데, Deny Action Type 드롭다운 메뉴를 클릭해서 다음 값들 중에서 IIS가 수행할 동작을 선택합니다:
    • Unauthorized: IIS가 HTTP 401 응답을 반환합니다.
    • Forbidden: IIS가 HTTP 403 응답을 반환합니다.
    • Not Found: IIS가 HTTP 404 응답을 반환합니다.
    • Abort: IIS가 HTTP 연결을 중단시킵니다.
  6. OK 버튼을 클릭합니다.

프록시 모드를 위한 IIS 구성하기

IP 필터링이 해결해야 할 다양한 과제들 중 하나는 상당수의 클라이언트들이 방화벽이나 로드-밸런싱, 또는 프록시 서버를 하나 이상 거쳐서 IIS에 접근한다는 점입니다. 결과적으로 IIS가 감지할 수 있는 IP 주소는 거의 항상 요청 경로 중, IIS 서버에 가장 가까운 서버의 주소입니다. IIS 8.0은 어떤 요청을 제한할 것인지 결정하기 위해서 추가적으로 x-forwarded-for HTTP 헤더의 클라이언트 IP 주소를 검사하도록 구성할 수 있습니다. 그리고, 이를 "프록시 모드"라고 부릅니다.

IIS의 프록시 모드를 구성하려면 다음의 과정을 따라하십시요:

  1. 윈도우 8 컴퓨터에 관리자로 로그인합니다.
  2. IIS(인터넷 정보 서비스) 관리자를 실행합니다.
  3. 연결 패인에서 서버명, 웹사이트 또는 폴더 경로를 선택한 다음, 기능 목록에서 IP 주소 및 도메인 제한(IP Address and Domain Restrictions)을 더블 클릭합니다.
  4. 작업 패인에서 기능 설정 편집(Edit Feature Settings) 링크 버튼을 클릭합니다.
  5. 그러면, Edit IP and Domain Restriction Settings 대화 상자가 나타나는데, 여기서 Enable Proxy Mode 항목을 체크합니다.
  6. OK 버튼을 클릭합니다.

요약

본문에서는 IIS가 클라이언트 IP 주소의 요청 횟수를 기준으로 동적으로 접근을 거부하도록 서버를 구성하는 방법과 접근이 거부되었을 때 잠재적으로 악의적인 사용자에게 IIS가 수행할 동작을 구성하는 방법을 살펴봤습니다.