웹나이트(Webnight) 설정파일 - config.exe
웹나이트(Webnight) 설정파일 - config.exe
웹나이트(Webnight) 설정파일 - config.exe
웹나이트에서 필터링을 설정하는 부분으로 가장 중요한 부분인 config.exe 입니다.
웹나이트가 설치된 폴더에 config.exe를 실행후 webknight.xml 파일을 선택하면 설정을 할 수 있는 화면이 나타납니다.
웹사이트에 따라 설정이 달라 질 수 있기 때문에 해당 항목은 참고하여 웹사이트에 알맞게 적용하시고 서버의 성능이 저하될 가능성이 있으니 꼭 테스트 후 실서버에 진행 하셔야 됩니다
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 : 공격시 막지않고 로그만 쌓기
팁 : 처음 웹나이트를 세팅후 Response Log Only 체크하여 로그를 분석하여 정책룰을 결정합니다
Logging - 웹나이트에 의해 필터링 되는 로그에 대한 설정을 하는 부분
IIS에서 생성되는 로그는 문제가 발생이 되었을 때 그 시점과 해당 내용을 찾는데 많은 시간이 소요되면 현실적으로 불가능할 가능성이 많다. (IIS로그 분석툴을 사용하지 않고 사람이 수 작업을 할 경우) 따라서 웹나이트에서 특정 상황에 대한 로그를 기록할 수 있도록 설정이 가능하다.
IIS에 설치된 서버에서 정상적으로 로그를 남기기 위해서는 설정해주야 할 부분이 있다
로그폴터에 network service 계정을 추가하고 쓰기권한을 할당
* 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의 블록등을 당당하는 부분
해당 부분은 상위 방화벽 단에 모두 체크가 되는 사항이기 때문에 웹나이트에서 설정을 할 필요가 없다고 한다 이분은 체크시 웹 서비스의 성능저하가 나타날수도 있다고 한다.
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 : 명시된 시킨수가 들어오면 차단
Referrer - Referer값에 대한 차단
Referrer 부분에 올수 잇는 값들에 대한 차단 사항이다. RFC규약을 따르는 부분이 많기 때문에 주 이 부분에 대한 사항은 체크를 풀어주고, 필요한 사항에 대한 검토가필요하며 Reffer를 통한 공격부분에만 설정을 걸어둔다
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에 명시된 시퀀스가 있으면 차단
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 : 쿼리스트링에 명시된 시퀀스가 오면 차단
Gloval Fiter Capavilities - Gloval Filter의 적용 여부를 설정 특정해더 스트링을 차단한다.
SQL Injection - Injection공격에 대한 필터링을 담당하는 부분
Web Applications - 웹 어플리케이션의 허용 유무를 담당