UrlScan 3.1 은 IIS 웹 서버 운영 환경에서 유해한 특정 HTTP 요청을 차단하는 보안 기능을 제공하는 툴입니다. 웹 서버에 요청되는 패킷을 분석하는 ISAPI 필터에 등록되어 일반적이지 않은 요청 즉, 대표적으로 SQL 인젝션 공격이나 악의적인 공격으로부터 웹 서버를 보호할 수 있는 기능을 지니고 있습니다.
URLScan 을 구성할 경우 아래와 같은 항목들에 대해서 HTTP 요청을 거부할 수 있습니다.
HTTP 요청 메소드/동사(Verb), 요청된 파일 이름 확장자, 의심스런 URL 인코딩, URL 에 non-ASCII 문자열/특정 문자열, 요청에 특정 헤더 항목이 있는 경우 설정에 의한 거부가 가능합니다.
[설치]
URLScan 3.1 버전은 Internet Information Services 5.1(Windows XP), 6.0 or 7.0 에서 사용할 수 있으며 x86, x64 시스템에 해당하는 버전을 다운로드 받아 설치할 수 있습니다. 설치 방법은 아래와 같습니다.
1. 다운로드
Microsoft Urlscan Filter v3.1 (x64)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=361E5598-C1BD-46B8-B3E7-3980E8BDF0DE
2. URLScan 사용을 위한 역할 서비스 사전 설치
가. 역할 서비스 - 웹 서버 - 응용 프로그램 개발 - ISAPI 필터
나. 역할 서비스 - 웹 서버 - 관리도구 - IIS 6 관리 호환성 - IIS 6 메타베이스 호환성
'IIS 6 메타베이스 호환성' 모듈을 설치하지 않을 경우 설치 시 만약 아래 오류가 발생할 수 있습니다.
IIS Metabase is required to install Microsoft URLScan filter v3.1
3. URLScan 3.1 설치 (x64 기준)
가. %windir%\system32\inetsrv\urlscan 폴더가 생성되고 urlscan.dll, urlscan.ini, log 폴더 생성
나. %windir%\syswow64\inetsrv 폴더가 생성되고 urlscan.dll 파일 생성
4. 설치 확인
가. 인터넷 정보 서비스 관리자 - ISAPI 필터
나. URLscan 3.1 - C:\Windows\system32\inetsrv\urlscan\urlscan.dll 등록 확인
(만약 URLScan 설치 후 ISAPI 필터 기능을 설치하였다면 수동으로 '추가' 할 수 있습니다)
설치 및 ISAPI 필터 추가 방법은 아주 간단합니다. 실제 필터링 규칙을 적용하기 위해서는 URLScan.ini 설정을 통해서 이루어집니다. URLScan.ini 옵션은 아래 microsoft.com 웹 사이트에 상세히 설명되어 있습니다. 중복되는 내용은 포스팅 하지 않으려고 합니다. 옵션에 대한 설명은 아래 링크를 참조해 보시기 바랍니다.
UrlScan 3 Reference
http://learn.iis.net/page.aspx/938/urlscan-3-reference/
How to configure the URLScan Tool
http://support.microsoft.com/kb/326444/en-us
많은 필터링 옵션을 제공하지만 가장 간단히 요청 파일 이름 확장자를 URLScan 을 통해 차단하는 방법을 소개해 드립니다.
[시나리오1]
요청 파일 이름 확장자 .html 을 거부하고 별도 등록되지 않은 다른 모든 파일 확장자는 허용
1. 설정 방법
[DenyExtensions]
.html ; 추가
2. 결과 확인
가. 404.0 - Not Found 오류 발생
나. URLScan Log : GET /index.html Rejected extension+not+allowed file_extension .html
[시나리오2]
요청 파일 이름 확장자 .png 그림 파일을 거부한 경우
1. 설정 방법
[DenyExtensions]
.png ; 추가
2. 결과 확인
가. Iisstart.htm 파일을 정상적으로 액세스 하였지만 해당 파일에 링크된 이미지는 필터링 됨
나. URLScan Log : GET /welcome.png Rejected extension+not+allowed file_extension .png
그 외 SQL 인젝션 차단 등 일반적인 URLScan 사용 시나리오에 대해서 아래 웹 사이트에서 소개하고 있습니다.
Common UrlScan Scenarios
http://learn.iis.net/page.aspx/476/common-urlscan-scenarios/
URLScan 에 의해서 차단된 URLScan 규칙에 의해 차단된 요청은 C:\Windows\system32\inetsrv\urlscan\log 폴더에 기록되며 해당 로그를 LogParser.exe 툴을 통해 분석해 보면 차단된 유형 목록을 쉽게 카운트 해서 볼 수 있습니다.
[참고자료]
Security Guidance for IIS
http://technet.microsoft.com/en-us/library/dd450371(WS.10).aspx