이 부분은 필터링을 설정하는 부분으로서 가장 중요한 부분이라고 할 수 있습니다.
Weknight
가 설치된 폴더에 config.exe실행후 webknight.xml 파일을 선택하면 설정을 할 수 있는 화면이 나타납니다.
아래 항목은 Webknight 2.2항목들중 일부를 설명한 것입니다. 웹사이트에 따라 설정이 달라 질 수 있기 때문에 해당 항목은 참고만 하시고
자신의 웹사이트에 알맞게 적용하시길 바랍니다. 설정에 따라서 서버의 성능이 저하 될 수 있기 때문에 꼭 테스트 후에 실서버에 진행을 해주시길
바랍니다. ( 정확한 설명이 아니니 너무 믿지는 말자...ㅋㅋ )

-  Scanning Engine

 http(80port)/https(443port)에 대한 모니터링을 설정하는 부분

n  Allow Late Scanning  : webknight에 우선권을 낮게하여 동작시킴

n  Scan Non Secure Port : 80port scan

n  Scan Secure Port : 443 port scan
(SSL
인증서를 가지고 있는  홈페이지의 경우는 이를 설정해주어 함)

n  Use Exclude Web Instances : 자체적인 ISAPI필터를 가지고 있는 webinstance 제외
( default check )

n  Use Exclude IP Addresses : IP 제한하기
(
유해 IP는 방화벽 or 스위치단에서 제어를 하는 것이 서버의 부하를 줄일 수 있습니다. )

-  Incident Response Handing

 악의 적인 공격에 대한 webknight의 행동에 대한 결정을 하는 부분 
기본적으로는 webknight에서 제공하는 default페이지를 나타나게 하였으나, 이는 공격자로 하여금 해당 웹서버가 webknight로 구성이 되어 있음을 알려주는 정보의 페이지가 될 수 있기 때문에 적절하게 변경 ( webknight도 취약점이 존재하겠죠...)

n  Response Directly : client공격시 대처 메시지를 보냄

n  Response Redirect : 대처 메시지 페이지를 선택
(
공격시 webkinght 기본 deny 페이지 로딩시 공격자는 webknight 사용한다는 것을 확인하고 이에 대한 취약점 공격이 우려 됨 따라서 기본 페이지로 redirection 시키거나 오류페이지를 생성 )

n  Use Response Status : 공격시 나타낼 메시지

n  Response Drop Connection 공격에 검출된 keep-alive된 커넥션을 제거

n  Response Monitor IP : time-out 기간을(정해진 값) 확인하여 모니터링

n  Response Block IP :  time-out 기간에(정해진 값) 따른 IP블럭

n  Response Log Only : 공격시 막지않고 로그만 쌓기

-  Logging

 Webknight에 의해 필터링 되는 로그에 대한 설정을 하는 부분                             
IIS
에서 생성되는 로그는 문제가 발생이 되었을 때 그 시점과 해당 내용을 찾는데 많은 시간이 소요되면 현실적으로 불가능 할 가능성이 많다.( IIS로그 분석툴을 사용하지 않고 사람이 수작업을 할 경우) 따라서 webknight에서는 특정 상황에 대한 로그를 기록할 수 있도록 설정이 가능하다

 IIS6.0
이 설치된 서버에서 정상적으로 로그를 남기기 위해서는 설정을 해주어야 할 부분이 있다 
per process logging mode on
( IIS6.0
하나의 프로세스에서 웹이 구동되는 것이 아니라 다른 프로세스가 생성 종료되기 때문에 이러한 설정이 필요한것 같다.)
로그폴더에 network service 계정을 추가하고 쓰기 권한을 할당

n  Enabled : 로깅 기능 활성화

n  Use GMT : 시간대 GMT 사용

n  Per Process Logging : 프로세스별 로깅 기능 IIS6버젼 On
(
단일 web service만 이용한다면 이 기능이 필요없을 것 같다. 오히려 프로세스별로 생겨서 로그를 확인하기 힘들다. 이 부분은 다시 확인이 필요함 )

n  Log Client IP: 로그에 사용자 IP 남기기

n  Log User Name : 로그에 사용자 이름 남기기

n  Log Allowed : 차단된 응답들의 로그를 남기는 것 ( 시스템 성능 저하 )

n  Log HTTP VIA : 프록시 사용자의 원래 요청의 단서를 가진 ‘Via:’ 헤더를 기록

n  Log HTTP X FORWARDED FOR : 프록시 단서를 찾기 위해 ‘X Forwarded For’ 헤더기록

n  Log Host Header : Host Header 로그

n  Log User Agent : 사용자 agent기록 ( 공격툴을 알수 있다. )

n  Log HTTP Client Errors : 4xx에러 기록

n  Log HTTP Server Errors : 5xx 에러 기록

IIS에서의 로그 기록 WebKnight의 로그 기록 이 두부분을 모드 확인할 경우 위와 같이 설정하면 된다. 하지만 WebKnight를 통해서 모든 로그를 확인할 경우는 위의 체크사항에 전부 체크를 해 주면 된다.

-  Connection

 IP의 모니터링 및 IP블록등을 담당하는 부분
해당 부분은 상위 방화벽 단에 모두 체크가 되는 사항이기 때문에 webknight에서 설정을 할 필요는 없다고 생각을 한다. 이 부분의 체크로 인하여 웹 서비스의 성능 저하가 나타 날 수도 있다.

이부분은 설정한 사항이 없다. 모니터링 및 블록은 다른 장비 및 툴을 이용하는 것이 좋을 것 같다.

-  Authentication

 인증부분에 대한 설정을 담당하는 부분.
악의 적인 로그인 공격에 대한 필터링을 담당하는 부분으로, 활용도 측면에서는 높지만 성능적 측면에서 웹 서비스에 지장을 줄 수 있기 때문에 관리자의 적절한 판단이 요구된다.
 
이 부분은 차라리 IIS에서 익명연결만 체크하고 소스단에서 로그인 시 반복입력의 제한, 아이디 비밀번호의 복잡성 준수 및 동일 사용에 대한 금지, 몇회 입력 실패시 로그인 잠금 처리등 소스단에서 처리하는 것이 서버의 성능향상에 도움이 된다.

n  Scan Authentication Exclude Web Instances :

n  Deny Blank Passwords : 공백입력시 차단

n  Deny Same Password As Username : 계정과 비빌번호가 동일할 경우 차단

n  Use Denied Default Passwords : 기본적인 계정 차단 ( 사용자 입력 가능 )

n  Deny System Accounts : 시스템의 영향을 미칠 수 있는 중요한 계정에 대한 인증 차단

n  Use Deny Account Brute Force Attack : 무작위 대입 차단

n  Use Allowed Accounts : 허가된 계정 설정 ( 사용자 입력 가능 )

n  Use Denied Accounts : 비허가된 계정 설정 ( 사용자 입력 가능 )

n  Scan Account All Events : 다른 ISAPI 이벤에 사용되는 계정들을 스캔

-  Request Limits

n   Request로 오는 패킷에 대한 제한을 담당하는 부분
Limit Content Length :
헤더의 Content-Length의 값을 제한

n  Limit URL : URL 전체 길이에 대한 제한

n  Limit Querystring : URL에서 ? 다음의 querystring 길이에 대한 제한

n  Limit HTTP Version : HTTP version 1.1에 명시된 최대값에 대한 제한

n  Use Allowed HTTP Versions : 명시된 HTTP 버전만 허용

n  Use Max Headers : 헤더의 길이가 특정값으로 제한 된 헤더들의 길이 제한

-  URL Scanning

  URL에 대한 필터링을 담당하는 부분.
RFC
규약은 보통 외국 사이트를 기준으로 만들어진 것으로서 국내 개발자들이 이와 같은 사항을 지키면서 사이트를 만드는 경우는 드물기 때문에, 사이트 접속에 장애가 올 수 있다. 확실한 확인 후 사용하면 좋을 것이다.

n  RFC Compliant Url : Url RFC규약에 따르는지 Check

n  RFC Compliant HTTP Url : HTTP Url RFC규약에 따르는지 Check

n  Use Url Raw Scan : 웹서가 URL디코딩하기 전 기본적인 스캔 및 로우스캔 실시

n  Deny Url Encoding Exploits : Url에서 인코딩 공격을 허용하지 않음

n  Deny Url Parent Path : 상위경로(..)로 이동하는 것을 방지

n  Deny Url Trailing Dot In Dir :[./]가 포함된 요청을 차단

n  Deny Url Backslash : [\]가 포함된 요청을 차단

n  Deny Url Altermate Stream : [:]가 포함된 요청을 차단

n  Deny Url Escaping : Url디코딩 후 [%]이 포함된 요청을 차단

n  Deny Url Running Mutiple CGI : Url [&]가 포함된 요청을 차단. 이는 다중 CGI 어플리케이션에서 사용될 수 있다.

n  Deny Url HighBitShellcode : high bit shellcode ( ascii > 127 )을 허용하지 않는다. 이건 US-ASCII을 사용하는 곳에 적합 즉 영문 웹사이트가 아니면 필요없다.

n  Use Denied Url Sequences : 명시된 시퀀스들이 포함되어 있으면 이를 차단

n  Use Allowed Url Starts : URL이 시작할 수 있는 허가된 시퀀스 문자 목록

-  Mapped Path

 경로를 제한하는 부분
webknight
는 기본적으로 경로를 제한하고 있기 때문에 기본설치 시 정상적인 웹 페이지도 webknight필터링에 막혀서 보이지 않게 된다. 따라서 자신의 웹 서비스가 구동되는 폴더의 정확한 위치를 입력하여 정상적인 웹 페이지를 로딩시켜야 한다. 또한 이 기능을 사용하지 않을 경우에는 웹 페이지 로딩 시 성능 저하가 일어나기 때문에 설정을 꼭 해주어야 한다.

n  Deny Parent Path : 상위경로[..]가 포함되면 차단

n  Deny Backspace : 경로에 [\]가 포함되면 차단

n  Deny Carriage Return : 경로에 carriage return 문자 [\r]가 포함되면 차단

n  Deny New Line : 경로에 newline 문자 [\n]가 포함되면 차단

n  Deny Escaping : 경로에 [%]가 포함되면 차단

n  Deny Dot In Path :경로에 [./]가 포함되면 차단

n  Use Allowed Paths : 허가되는 경로 목록

-  Requested File

 차단시킬 파일 목록과 허용할 파일 목록을 설정하는 부분
이부분 역시 소스단에서 제한 하는 것이 서버의 부하를 줄일 수 있다. 업로드가 페이지가 있는 곳에는 이러한 설정들이 꼭 필요하겠지만, 서버단의 부하를 주는 webknight보다는 소스에서의 차단이 유용하다. 하지만 전제는 확장자 우회 기능에 대한 점검이 꼭 필요하다.

n  Use Filename Raw Scan : 웹서버가 URL디코딩하기 전에 파일을 스캔

n  Deny Default Document : 기본적인 도큐먼트 요청을 차단 사용자는 특정 파일말 요청

n  Use Denied Files : 파일 제한 ( 사용자 입력 가능 )

n  Use Monitored Files : 파일을 정하고 그것이 변경상태에 대해 체크

n  Use Allowed Extensions : 허가된 요청 파일 ( 사용자 입력 가능 )

n  Use Denied Extensions : 명시된 파일 확장자 차단 ( 사용자 입력 가능 )

-  Robots

 웹사이트의 검색에 대한 제한을 설정하는 부분
 
웹사이트 성격에 따라 검색엔진에 의해 노출되는 것이 좋은 성격의 페이지들이 있다. 따라서 이부분은 역시 개발자와 상의 해서 개발자가 robots.txt을 사용하여 검색엔진을 차단을 하는지 아니면 검색 부분을 정하는지 파확을 한 후 설정을 하는 것이 좋을 것이다.

-  Headers

 서버의 헤더 정보의 변경부분에 대한 필터링과 특정 헤더등의 차단을 설정 하는 부분

n  Remove Server Header :  서버가 클라이언트로 전송하는 모든 응답에 포함된 [Srever: ] 헤더를 제거한다.

n  Change Server Header : 서버의 헤더를 제거하지 않고 변경한다. 우선권을 Remove Server Header에게 있고, 이를 사용할 것이라면 Remove Server Header를 체크해서는 안된다. (ex 자신의 사용하는 웹이 IIS 6.0인데 Apache변경 )

n  RFC Compliant Host Header : RFC규약에 위반되는 Host 헤더를 차단

n  Use Denied Headers : 제시된 헤더를 차단 ( 사용자 입력 가능 )

n  Deny Header SQL Injection : 헤더를 통한 SQL Injection 차단

n  Deny Header Encoding Exploits : 헤더를 통한 인코딩 공격을 차단

n  Deny Header Directory Traversal : 헤더에 상위 디렉토리 이동을 위한 값 차단

n  Deny Header High Bit Shellcode : 하이비트 쉘코드 차단. 영문사이트에 적용

n  Use Denied Header Squences : 헤더 명시된 sequences 문자가 나오면 차단 ( 사용자 입력 가능 )

-  Content Type

허용될 Content-Type을 결정할 문제이다. 관리자는 웹 개발자와 상의하여 개발자가 만든 웹의 허용되어 할 Content-Type에 대한 상의를 하고 이를 결정한다.

n  Use Allowe Conetenet Types : request content-type 헤더의 체크가 활성화 되었을 때 명시된 하목에 포함 되지 않는 content type을 제한

n  Use Deny Content Types : 제한되어야 할 Content-type 설정

-Cookie

 2008 9월경부터 유행하고 있는 최신 공격형태인 Mass SQL Injection의 한 종류로 Cookie단에 삽입하는 것을 방어하기 위해서 2.2버전부터 추가된 항목 이다.

n  Deny Cookie SQL Injection : [ cookie: ]헤더에 SQL Injection 차단

n  Deny Cookie Encoding Exploits : [ cookie: ]헤더에 인코딩 공격을 차단

n  Deny Cookie Directory Traversal : cookie를 통한 directory traversal 방지

n  Deny Cookie High Bit Shellcode : high bit shellcode(ascii >127) 차단  영문사이트에 적용

n  Use Denied Cookie Sequences  : 명시된 시퀀스가 들어오면 차단

-  Referrer

 Referrer값에 대한 차단
Referrer
부분에 올수 있는 값들에 대한 차단 사항이다. RFC규약을 따르는 부분이 많기 때문에 주 이 부분에 대한 사항은 체크를 풀어주고, 필요한 사항에 대한 검토가 필요하다. Reffer를 통한 공격부분에만 설정을 걸어둠

-  User Agent

User Agent에 대한 차단에 대한 설정
  대부분의
사용자는 인터넷 웹서핑을 위한 브라우저로 인터넷 익스플로러, 파이어 폭스등을 사용한다. 하지만 특정 유저들은 delphi웹브라우저 (www.bsalsa.com) 임베디드웹브라우저등을 사용할 수 있다. 이러한 사용자들이 있다면 default로 설정해 놓으면 이러한 유저들은 접속을 할 수 없다.

n  Deny User Agent Empty : User Agent가 비어있거나 나타나지 않으면 차단

n  Deny User Agent Non RFC : RFC규약에 따르지 않는 User Agent 차단

n  Use Dneide User Agents : 명시된 User Agent 항목을 차단

n  Use Dneide User Agent Sequeuces : User Agent에 명시된 시퀀스가 있으면 차단

-  Methods

 허용 차단 될 Method을 설정하는 부분.
이 부분은 보통 사용자가 사용하는 GET/POST/HEAD외에 Method값을 조작하여 인증우회 및 서버의 제한 사항에 대한 우회를 하는데 목적이 있다. 소스단에서 제어를 하고 있고, 또한 제어가 가능하다면 소스단에 하는 것이 좋을 것 같다.


n  Use Allowed Verbs : 허용할 Method

n  Use Denied Verbs : 차단할 Method

-  Querystring

 특정 쿼리에 대한 스트링을 차단 하는 부분.

n  Use Querystring Raw Scan : raw scan을 이용하여 URL디코딩하기전 스캔

n  User Querystring SQL Injection : 쿼리스트링에 SQL injection을 차단

n  Deny Querystring Encoding Exploits : 쿼리스트링에 인코딩 공격을 차단

n  Deny Querystring Directory Traversal : 쿼리스트링에 디렉토리 이동을 차단

n  Deny Querystring Hight Bit Shellcode : 쿼리스트링에 High bit shellcode 차단

n  Use Denied Querystring Sequences : 쿼리스트링에 명시된 시퀀스가 오면 차단

-  Global Filter Capabilities

Global Filter의 적용 여부를 설정
특정 헤더 스트링등을 차단한다.

-  SQL Injection

 Injection공격에 대한 필터링을 담당하는 부분.

-  Web Applications

 웹 어플리케이션의 허용 유무를 담당하는 부분.

 

출처 : http://luna79.tistory.com/entry/webknight