Webknight 란?
웹 나이트(Webknight)는 Aqtronix사에서 개발한 IIS 웹 서버에 설치할 수 있는 공개용 웹방화벽이다. 웹 나이트(Webknight)는 ISAPI 필터 형태로 동작하며, IIS 서버 앞단에 위치하여 웹서버로 전달되기 이전에 IIS 웹 서버로 들어오는 모든 웹 요청에 대해 웹서버 관리자가 설정한 필터에 룰을 따라 검증을 하고 SQL Injection 공격 등 특정 웹 요청을 사전에 차단함으로써 웹 서버를 안전하게 지킬수 있다.
이러한 룰은 정기적인 업데이트가 필요한 공격 패턴 DB에 의존하지 않고 SQL Injection, 디렉토리 traversal, 문자 인코딩 공격 등과 같이 각 공격의 특징적인 키워드를 이용한 보안필터 사용으로 패턴 업데이트를 최소화하고 있다 이러한 공격 뿐만 아니라 알려지지 않은 공격에도 웹서버를 보호 할수 있습니다
또한, 웹 나이트는 ISAPI 필터이기 때문에 다른 방화벽이나 IDS에 비해 웹서버와 밀접하게 동작할 수 있어 많은 이점이 있다. MS의 URLScan과 마찬가지로 ISAPI 필터로써 inetinfo.exe 안에서 동작하므로 오버헤드가 심하지 않다. 해킹당한 한 웹사이트에 Webknight를 적용하여 테스트 하게 되면 안정적인 웹서버 운영으로 인해 웹서버속도가 오히려 더빨라지게 만들수도 있다 하지만 다량의 웹 트래픽이 발생되는 사이트에서는 사전에 충분한 검증을 거친 후에 적용해야 된다.
[웹 나이트 특징]
오픈소스(Open Source)
웹 나이트는 CNU, CPL(General Public License)를 따르는 Free 소프트웨어이다.
Logging
기본적으로 차단된 모든 요청에 대해 로그를 남기고, 로깅 전용 모드로 운영할 경우 추가적으로 모든 허용된 요청에 대해서도 로그를 남길 수 있다. 로깅 전용 모드는 공격을 실제 차단하지 않고 로그 파일에서 공격 사실을 조사하는데 도움을 준다
최적화(Customizable)
방화벽은 어떤 작은 원인에도 최적화가 가능해야된다 제조사로부터 패치가 릴리즈가 되기 전의 0-Day(zero-dey) 공격마저 무산시킬 수 있도록 한다.
HTTP Error Logging
WebKnight는 웹서버로부터 HTTP 에러들을 로그할 수 있도록 설정할 수 있다. 이방법으로 404 Not Found와 같은 일반적인 에러나 500 Server Error와 같이 심각한 로그들도 기록할수 있습니다
SSL 보호(SSL Protection)
다른 전통적인 방화벽과는 달리 웹 나이트는 ISAPI 형태로 IIS의 일부로써 동작하기 때문에 HTTPS 상의 암호화된 세션들도 모니터링 및 차단할 수 있습니다.
RFC 규약(RFC Compliant)
웹 나이트는 RFC를 따름으로써 Request 값을 스캔을 위한 기능도 포함 되어있습니다.
낮은 보유 비용
웹 나이트는 윈도우즈 인스톨러 패키지와 원격 설치 스크립트로 설치가능해 사내에서 쉽게 웹 나이트를 채탁할 수 있고 또한 웹 나이트 설정을 바꾸기 위해 그래픽 사용자 인터페이스를 제공한다.
운영 중 업데이트 가능
일부 설정의 변경을 제외하고 대부분의 설정 변경은 웹서버의 재가동을 요구하지 않아, 웹 사용자들에 대한 어떠한 서비스 장애 없이 설정을 변경할 수 있다
매 1분마다 이러한 변경을 탐지하여 적용합니다
애석하게도 현재 기준 웹나이트 공식 사이트가 폐쇄 되었나보다. 다운로드 파일은 검색하여 잘 찾는다.
웹나이트 설치
1. 웹나이트를 설치하고자 하는 프로젝트에 웹나이트 설정 폴더를 넣어준다.
IIS에 설치된 서버에서 정상적으로 로그를 남기기 위해서는 설정해주야 할 부분이 있다.
로그폴터에 network service 계정을 추가하고 쓰기권한을 할당
2. IIS 관리자에서 프로젝트를 선택한 후 ISAPI 필터를 더블 클릭한다.
3. 오른쪽 작업 메뉴에서 추가 버튼을 누른 후 필터 이름과 실행파일의 경로를 잡아준다.
ASP같은 경우 ABC Upload의 버전에 따라서 웹나이트도 버전을 맞출 필요가 생긴다.
우리 회사는 가지고 있는 ABC UPLOAD 컴포넌트 버전이 32bit라 운영체제가 62bit라 하더라도
32bit로 설정해준다.

4. 정상적으로 가동되는지 확인.
Config.exe
위와 같이 주소 뒤에 파라미터로 특수문자나 인젝션 쿼리등이 들어오게 될 경우
아래와 같이 설정된 htm파일로 보내버린다.
5. Log 파일 위치
해당 프로젝트별로 웹나이트 폴더에 보면 LogFiles 폴더와 LogAnalysis.exe 실행파일이 있다.
일별로 로그가 쌓이게 되며 LogAnalysis.exe 실행하게 되면 로그파일을 쉽게 볼수 있는 관리화면이
나온다.
로그 파일을 보면 상세하게 로그를 볼 수 있으며 방화벽이 언제 실행됐는지도 볼수 있고 사이트의
취약점등을 파악하여 개선할 수 있다. 인젝션 공격을 시도하는 IP는 블록을 먹일수도 있다.
웹나이트설정
/*--------------------------------------------------------------------------------------------------------------------
* 웹나이트 URL
*------------------------------------------------------------------------------------------------------------------*/
주소 : https://www.aqtronix.com/?PageID=99
위 주소에서 웹나이트를 최신버전으로 유지할 수 있는데 단점은 다시 셋팅을 해야한다는 점..
왠만하면 이 작업은 년단위로 하는걸 추천
/*--------------------------------------------------------------------------------------------------------------------
* 웹나이트 악성 Robot및 악성 IP차단
*------------------------------------------------------------------------------------------------------------------*/
웹나이트에선 주기적으로 악성 Robot및 악성 IP등을 제공하여 이것을 필터 할 수 있게끔 xml파일을
제공한다. 2~3달에 한번씩은 최신화를 유지해주자.
다운로드 받은 Robots.xml을 해당 웹나이트가 설치된 해당 프로젝트별로 업데이트 해준다.
/*------------------------------------------------------------------------------------------------------------------
* 웹나이트 툴 실행
*----------------------------------------------------------------------------------------------------------------*/
웹나이트에서 필터링을 설정하는 부분으로 가장 중요한 부분인 config.exe 입니다.
웹나이트가 설치된 폴더에 config.exe를 실행후 webknight.xml 파일을 선택하면 설정을 할 수 있는
화면이 나타납니다.
웹사이트에 따라 설정이 달라 질 수 있기 때문에 해당 항목은 참고하여 웹사이트에 알맞게 적용하시고
서버의 성능이 저하될 가능성이 있으니 꼭 테스트 후 실서버에 진행 하셔야 됩니다.
Config.exe 실행
/*------------------------------------------------------------------------------------------------------------------
* 웹나이트 툴 설정
*----------------------------------------------------------------------------------------------------------------*/
Scannig Engine - http(80port)/https(443port)에 대한 모니터링 설정하는 부분
* Allow Late Scanning : 웹나이트에 우선권을 낮게하여 동작시킴
* Scan Non Secure Port : 80port scan
* Scan Secure Port : 443 port scan (SSL 인증서를 가지고 있는 홈페이지의 경우는 이를 설정해주어야 한다)
* User Exclude Web Instances : 자체적인 ISAPI필터를 가지고 잇는 webinstance 제외 (default check)
* Use Exclude IP Adresses : IP 제한하기
(유해 IP는 방화벽 or 스위치단에서 제어를 하는 것이 서버의 부하를 줄일 수 있습니다)
Incident Response - 악의적인 공격에 대한 웹나이트의 행동에 대한 결정을 하는부분
기본적인 웹나이트에서 제공하는 기본페이지가 나타며 이는 공격자로 하여 해당 웹서버가 웹나이트로
구성되어 있는것을 알려주는 정보의 페이지 이기떄문에 적절하게 변경해주어야 됩니다.
* Response Directly : client가 공격시 대처 메시지를 보냄
* Response Redirect : 대처 메시지 페이지를 선택
(공격시 웹나이트 기본 거부페이지 로딩시 공격자는 웹나이트를 사용하는것을 확인하고 이에 대한
취약점 공격이 우려 되어 따라서 기본 페이지로 리다이렉션 시키거나 오류페이지를 생성한다)
* USE Response Status : 공격시 나타낼 메시지
* Response Drop Connection 공격에 검출된 keep-alive된 커넥션을 제거
* Response Monitor IP : time-out 기간을(정해진 값) 확인하여 모니터링
* Response Blok IP : time-out 기간에(정해진) 따른 IP블럭
* Response Log Only : 공격시 막지않고 로그만 쌓기
TIP : 처음 웹나이트를 세팅후 Response Log Only 체크하여 로그를 분석하여 정책룰을 결정합니다.
Log only의 체크를 해제하게 될 경우 테스트 하다 자신의 IP까지 차단될수 있으니 주의 합니다.
Logging - 웹나이트에 의해 필터링 되는 로그에 대한 설정을 하는 부분
IIS에서 생성되는 로그는 문제가 발생이 되었을 때 그 시점과 해당 내용을 찾는데 많은 시간이 소요되면
현실적으로 불가능할 가능성이 많다. (IIS로그 분석툴을 사용하지 않고 사람이 수 작업을 할 경우)
따라서 웹나이트에서 특정 상황에 대한 로그를 기록할 수 있도록 설정이 가능하다.
* Enabled : 로깅 기능 활성
* User GMT : 시간대 GMT 사용
* Per Process : 프로세스별 로깅 기능
* Log Client IP : 로그에 사용자 IP 남기기
* Log User Name : 로그에 사용자 이름 남기기
* Log Allowed : 차단된 응답들의 로그를 남기는 것(시스템 성능 저하)
* Log HTTP VIA : 프록시 사용자의 원래 요청의 단서를 가진 'Via' 헤더를 기록
* Log HTTP X FORWARDED FOR : 프록시 단서를 찾기 위해 'X Forwarded For' 헤더기록
* Log Host Header : Host Header 로그
* Log User Agent : 사용자 agent기록 (공격툴을 알수 있다.)
* Log HTTP Client Errors : 4xx 에러 기록
* Log HTTP Server Errors : 5xx 에러 기록
IIS에서의 로그 기록 웹나이트의 로그 기록이 이 두부분을 모드 확인할 경우 위와 같이 설정하고
웹나이트를 통해서 모든 로그를 확인할 경우는 위의 체크사항을 전부 체크 해주면 된다.
Connection - IP의 모니터링 및 IP의 블록등을 당당하는 부분
해당 부분은 상위 방화벽 단에 모두 체크가 되는 사항이기 때문에 웹나이트에서 설정을 할 필요가 없다.
이분은 체크시 웹 서비스의 성능저하가 나타날수도 있음.
그러므로 중국발 IP및 악성 IP는 방화벽이나 스위치 쪽에서 막는게 좋다.
Authentication - 인증부분을 담당하는 부분
악의 적인 로그인 공격에 대한 필터링을 담당하는 부분으로 활용도 측면에서는 높지만 성능적 측면에서
웹 서비스에 지장을 줄 수 있기 때문에 관리자의 적절한 판단이 요구되며 IIS에서 익명연결만 체크하고
소스에서 로그인 시 반복입력의 제한, 아이디 비밀번호의 복잡성 준수 및 동일 사용에 대한 금지, 몇회
입력 실패시 로그인 잠금 처리등으로 소스에서 처리하는 것이 서버의 성능향상에 도움이 된다.
* ScanAuthentication Exclude Web Instances :
* Deny Blank Passwords : 공백입력시 차단
* Deny Same Password As Usename : 계정과 비밀번호가 동일할 경우 차단
* Use Deny Account Brute Force Attack : 무작위 대입 차단
* Use Allowed Accounts : 허가된 계정 설정(사용자 입력 가능)
* Use Denied Account : 비허가된 계정 설정(사용자 입력 가능)
* Scan Account All Events : 다른 ISAPI 이벤에 사용되는 계정 스캔
Request Limits - Request로 오는 패킷에 대한 제한을 담당하는 부분
* Limit Content Length : 헤더의 Content-Length의 값을 제한
* Limit URL : URL 전체 길이에 대한 제한
* Limit Querystring : URL에서 다음 쿼리스트링의 길이에 대한 제한
* Limit HTTP Version : HTTP version 1.1에 명시된 최대값에 대한 제한
* Use Allowd HTTP Versions : 명시된 HTTP 버전만 허용
* Use Max Headers : 헤더의 길이가 특정값으로 제한 된 헤더들의 길이 제한
URL Scanning - URL에 대한 필터링을 담당하는 부분
RFC규약은 보통 외국 사이트를 기준으로 만들어진 것으로서 국내 개발자들이 이와 같은 사항을 지키면서
사이트를 만드는 경우는 드물기 때문에, 사이트 접속에 장애가 올 수 있다.
* RFC Compliant Url : URL이 RFC규약에 따르는지 Check
* RFC Compliant HTTP Url : HTTP Url이 RFC규약을 따르는지 Check
* Use Url Raw Scan : 웹서버가 URL을 디코딩하기 전 기본적인 스캔 및 로우스캔 실시
* Deny Url Encodig Exploits : Url에서 인코딩 공격을 허용하지 않음
* Deny Url Parent Path : 상위경로(..)로 이동하는 것을 방지
* Deny Url Trailing Dot In Dir : [./]가 포함된 요청을 차단
* Deny Url Backslash : [\]가 포함된 요청차단
* Deny Url Altermate Stream : [:]가 포함된 요청을 차단
* Deny Url Running Mutiple CGI : Url에 [&]가 포함된 요청을 차단. 이는 다중 CGI 어플리케이션에서
사용될 수 있다.
* Deny Url HighBitShellcode : high bit shellcode (ascli > 127)을 허용하지 않는다. 이건 US-ASCII을
사용하는 곳에 적합 즉 영문 웹사이트가 아니면 필요없다.
* Use Denied Url Sequences : URL이 시작할 수 있는 허가된 시퀀스 문자 목록
TIP : RFC란?
RFC(Request For Comments) IETF에서 인터넷에서 프로토콜이나 여러 기술을 구현하는데 필요한 절차,
규약 등을 표기한 문서로 개인적으로 패킷 분석시 많이 참고한다.
RFC는 별도로 3종류의 부가적인 일련번호를 관리하고 있다.
* FYI(For Your Infomation)는 RFC의 보조 문서로 기술적인 부분 보다 일반 정보에 중점
* BCP(Best Current Pratice) 문서는 프로토콜 규정을 위한 옵션 장치를 구성하는 가장 좋은 방법을 규정
* STD(Standard) 문서는 인터넷 표준에 해당하는 RFC 하위시리즈
Mapped Path - 경로를 제한하는 부분
웹나이트는 기본적으로 경로를 제한하고 있기 때문에 기본설치시 정상적인 웹 페이지도 웹나이트
필터링에 막혀서 보이지 않게 된다. 따라서 자신의 웹 서비스가 구동되는 폴더의 정확한 위치를
입력하여 정상적인 웹 페이지를 로딩시켜야 한다.
또한 이 기능을 사용하지 않을 경우에는 웹 페이지 로딩 시 성능 저하가 일어나기 떄문에 설정을 꼭
해주어야 한다.
* Deny Parent Path : 상위경로 [...]가 포함되면 차단
* Deny Backspace : 경로에 [\]가 포함되면 차단
* Deny Carriage Return : 경로에 carriage retun 문자 [\r]가 포함되면 차단
* Deny New Line : 경로에 newline 문자 [\n]가 포함되면 차단
* Deny Escaping : 경로에 [%]가 포함되면 차단
* Deny Doy In Path : 경로에 [./]가 포함되면 차단
* Use Allowed Paths : 허가되는 경로 목록
Requested File - 차단시킬 파일 목록과 허용할 파일 목록을 설정하는 부분
이 부분은 소스에서 제한 하는 것이 서버의 부하를 줄일 수 있다. 업로드 페이지가 잇는 곳에는 이러한
설정들이 필요하지만 서버의 부하를 주는 웹나이트보다는 소스에서 차단이 유용하며 확장자 우회
기능에 대한 점검이 필요합니다.
* Use Filename Raw Scan : 웹서버가 URL을 디코딩하기 전에 파일을 스캔
* Deny Default Document : 기본적인 도큐먼트 요청을 차단 사용자는 특정 파일만 요청
* Use Denied File : 파일제한(사용자가 직접 입력이 가능하다)
* Use Monitored Files : 파일을 정하고 그것이 변경상태에 대해 체크
* Use Allowed Extensions : 허가된 요청 파일(사용자가 직접 입력이 가능하다)
* Use Denied Extensions : 명시된 파일 확장자 차단(사용자가 직접 입력이 가능하다)
Robots - 웹사이트 검색에 대한 제한을 설정하는 부분
웹사이트 성격에 따라 검색엔진에 의해 노출되는 것이 좋은 성격의 페이지들이 있다.
따라서 이부분은 역시 개발자와 상의해서 개발자가 robots.txt을 사용하여 검색엔진을 차단을 하는지
아니면 검색 부분을 정하는지 파악을 한 후 설정 한다.
Headers - 서버의 헤더 정보의 변경부분에 대한 필터링과 특정 헤더등의 차단을 설정하는 부분
* Remove Server Header : 서버가 클라이언트로 전송하는 모든 응답에 포함된 [Server: ]헤더를 제거한다.
* Change Server Header : 서버의 헤더를 제거하지 않고 변경한다. 우선권을 Remove Server Header에게
있고, 이를 사용할 것이면 Remove Server Header를 체크해서는 안된다.
* RFC Compliant Host Header : RFC규약에 위반되는 Host 헤더를 차단
* Use Denied Headers : 제시된 헤더를 차단 (사용자 입력가능)
* Deny Header SQL Injection : 헤더를 통한 SQL Injection 차단
* Deny Header Encoding Exploits : 헤더를 통한 인코딩 공격을 차단
* Deny Header Directory Traversal : 헤더에 상위 디렉토리 이동을 위한 값 차단
* Deny Header Higt Bit Shellcode : 하이비트 쉘코드 차단, 영문사이트 적용
* Use Denied Header Squences : 헤더 명시된 sequences 문자가 나오면 차단(사용자 입력 가능)
Content Type - 허용될 Content - type을 결정
관리자는 웹 개발자와 상의하여 개발자가 만든 웹의 허영되어야 할 Content - type에 대한 상의를 하고
이를 결정한다.
* Use Allowe Conetenet Types : request에 content-type 헤더의 체크가 활성화 되었을 때 명시된 항목에
포함 되지 않은 content type을 제한
* Use Deny Content Types : 제한되어야 할 Content-type 설정
Cookie
최신 공격인 Mass SQL Injection의 한 종류로 Cookie에 삽입하는 것을 방어하기위해 2.2부텅 추가된 설정
항목 입니다.
* Deny Cookie SQL Injection : [cookie:]헤더에 SQL Injection 차단
* Deny Cookie Encoding Exploits : [cookie: ]헤더에 인코딩 공격을 차단
* Deny Cookie Directory Traversal : cookie를 통한 directory travesal 방지
* Deny Cookie High Bit Shellcode : high bit shellcode(acii > 127) 차단 영문사이트에 적용
* Use Denied Cookie Sequences : 명시된 시킨수가 들어오면 차단
User Agent - User Agent에 대한 차단에 대한설정
대부분의 사용자는 인터넷 웹서핑을 위한 브라우저로 인터넷 익스플로러, 크롬등을 사용한다.
하지만 특정 유저들은 delpgi웹프라우저 임베디드웹브라우저등을 사용할 수 있다 이러한 사용자들이
있다면 default로 설정해 놓으면 이러한 유저들은 접속할 수 없다.
* Deny User Agent Empty : User Agent가 비어있거나 나타나지 않으면 차단
* Deny User Agent Non RFC : RFC규약에 따라지 않은 User Agent 차단
* Use Dneide User Agents : 명시된 User Agent 항목을 차단
* User Dneide User Agent Sequeces : User Agent에 명시된 시퀀스가 있으면 차단
Referrer - Referer값에 대한 차단
Referrer 부분에 올수 잇는 값들에 대한 차단 사항이다. RFC규약을 따르는 부분이 많기 때문에 주 이 부분에
대한 사항은 체크를 풀어주고, 필요한 사항에 대한 검토가필요하며 Reffer를 통한 공격부분에만 설정을
걸어둔다.
Methods - 허용 차단 될 Method를 설정하는 부분
이 부분은 보통 사용자가 사용하는 GET/POST/HEAD외에 Method값을 조작하여 인증우회 및 서버의 제한
사항에 대한 우회를 하는데 목적이 있다. 소스에대한 제어를 하고 있고 또한 제어가 가능하다면 소스에서
해결하는것이 좋다고 한다.
* Use Allowed Verbs : 허용할 Method
* Use Denied Verbs : 차단할 Method
Querystring - 특정 쿼리에 대한스트링을 차단하는 부분
* Use Qurerystring Raw Scan : raw scan을 이요하여 URL을 디코딩하기전 스캔
* Uer Qureystring SQL Injection : 쿼리스트링에 SQL Injection을 차단
* Deny Querystring Encoding Exploits : 쿼리스트링에 인코딩 공격을 차단
* Deny Querystring Directory Traversal : 쿼리스트링에 디렉토리 이동을 차단
* Deny Querystring Hight Bit Shellcode : 쿼리스트링에 Hi bit shellcode 차단
* Use Denied Querystring Sequences : 쿼리스트링에 명시된 시퀀스가 오면 차단
POST
Gloval Fiter Capavilities - Gloval Filter의 적용 여부를 설정 특정해더 스트링을 차단한다.

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

Web Applications - 웹 어플리케이션의 허용 유무를 담당
'윈도우서버 > 보안' 카테고리의 다른 글
Apache 웹 서버 DoS 방어용 모듈적용 (0) | 2025.06.13 |
---|---|
버프 스위트 사용법 (0) | 2022.08.22 |
댓글