웹어플리케이션보안템플릿 (PHP 버전 ) - 웹어플리케이션보안템플릿개정판 - 2007. 9
웹어플리케이션보안템플릿 (PHP 버전 ) www.kisa.or.kr 본문서는최근해킹에주로이용되고있는주요웹보안취약점으로인한피해감소를목적으로한국정보보호진흥원인터넷침해사고대응지원센터해킹대응팀연구원들과국내웹보안및웹어플리케이션전문가의참여를통해제작되었습니다. 2007 년 9 월 사업책임자 : 본 부 장 김우한 연구책임자 : 팀 장 최중섭 참여연구원 : 선임연구원 서진원 주임연구원 한단송 주임연구원 주필환 연 구 원 김영직 외부전문가 : 전남대학교 이재서 감 수 : 보안전문가 김종회
목차 1 활용에앞서 8 2 설치및적용 1. 설치준비 12 2. 설치과정 14 3. 적용과정 20 3 관리자페이지설명 24 4 관리자계정관리 30 5 기본설정 1. 보안모듈기본설정 34 2. 사이트설정 38 3. 보안모듈적용대상설정 41
웹어플리케이션보안템플릿 (PHP 버전 ) www.kisa.or.kr 6 정책설정 1. SQL Injection 정책설정 44 2. XSS 정책설정 46 3. 불량단어정책설정 47 4. 불량태그정책설정 49 5. 아이피정책설정 51 6. 파일정책설정 54 7 고급설정 1. 신규페이지추가 60 2. 관리페이지수정과삭제 64 3. 각페이지별변수설정 65 4. 페이지별정책테스트 68 8 로그관리 72 9 정책보기 78 10 백업관리 82 11 마치며... 86
www.kisa.or.kr
제 1 장활용에앞서
제 1 장활용에앞서 제 1 장 활용에앞서 기존의침해사고는운영체제의취약점이나어플리케이션취약점이주로이용되었으나, 최근에는홈페이지에존재하는웹어플리케이션취약점이공격에많이사용되고있다. 홈페이지에존재하는웹어플리케이션취약점은다른해킹기법과비교하여상대적으로낮은수준의기술로도해킹이가능하고, 이를이용해많은사용자들을대상으로빠른시간내악성코드의전파가가능하다. 또한홈페이지를방문하는고객을대상으로악성코드가전파되므로, 공격자의입장에서는특정분야사용자를목표로한공격이가능하다는장점이있다. 웹어플리케이션취약점의보완을위해서는취약점의원인이되는홈페이지소스의수정이필요하나, 대부분의중소홈페이지의경우, 개발인력의미비로인해침해사고가지속적으로재발하는문제가발생하고있는실정이다. 이러한문제점을해결하기위해서 KISA 에서는안전한웹어플리케이션의소스코드를제작해보급하였으며공개웹방화벽을보급하여웹어플리케이션의취약점을차단하고자하는많은노력을기울이고있다. 본문서에서는 PHP 환경에서사용할수있는보안모듈 (KWST-KISA Web Security Template, 이하 KWST) 를제공한다. KWST는웹어플리케이션의소스코드를수정하지못하는곳이나공개웹방화벽의설치가어려운홈페이지등에서사용할수있으며간단한작업만으로홈페이지에적용이가능한보안모듈형태로제공된다.
www.kisa.or.kr KWST은가장일반적인웹개발환경에서적용가능하도록제작되었지만, 각기관의웹개발환경및서비스가매우다양하므로, 정상적인서비스에지장이없도록충분한최적화작업및테스트를하기바란다. 향후, 추가로 ASP, JSP 보안모듈을제작, 배포할예정이며모든보안모듈프로그램및관련자료는한국정보보호진흥원 KrCERT 홈페이지에서다운로드가가능하다. 제 1 장 모쪼록본프로그램이국내홈페이지에대한피해사고감소와홈페이지관리자의보안작업에도움이되길바란다. KWST는인터넷에서공개된 WSM(Web Security Module) 을개발한외부전문가에게의뢰하여개발되었으며, 사용자의편리성및보안성강화기능을추가적으로개발하여기존버전과많은변화를보였다. KWST 의주요기능 보안성강화 - OWASP 10대취약점중주요취약점을해결 - 웹해킹탐지우회차단기능추가 - 소스코드차원의웹어플리케이션보안성강화 사용자편리성강화 - 관리자페이지를이용해편리한정책설정지원 - 운영중인프로그램소스의최소수정만으로적용가능 높은호환성지원 - 다양한웹서버환경과웹어플리케이션에서동작할수있는호환성지원 - 각웹어플리케이션서버버전에서동작할수있도록호환성지원 웹어플리케이션보안템플릿 (PHP 버전 ) 8 9
제 1 장활용에앞서 기대효과 웹어플리케이션개발과정에서의보안성강화확보 웹보안템플릿확산으로국내웹어플리케이션의보안성향상 편리한사용과정을통해기존웹어플리케이션수정용이
제 2 장설치및적용 1. 설치준비 2. 설치과정 3. 적용과정
제 2 장설치및적용 제 2 장 설치및적용 제2장에서는 KWST 설치전에준비할사항과단계별설치방법을알아보고, 설치후적용방법에대해서설명한다. KWST 설치를위해서설치할시스템에최신버전의 KWST 프로그램소스를제공된 CD 에서복사한다. 리눅스 & 유닉스계열에서의설치준비 리눅스및유닉스계열에서는다음의방법에따라설치준비를한다. # tar zxvf kwstphp-0.9pl7.tar.gz kwstphp/ kwstphp/install.php kwstphp/kwst_version.php kwstphp/kwst_admin_bottom.php kwstphp/kwst_admin_download.php kwstphp/kwst_admin_login_submit.php kwstphp/install_step3.php kwstphp/kwst_admin_policy_submit.php... 중략...
www.kisa.or.kr 윈도우즈계열에서의설치준비 윈도우계열시스템에서 KWST를설치하고자하는경우에는파일을받아알집등의압축해제프로그램을이용하여압축을해제한다. 압축해제후에는마찬가지로웹상에서이후설치과정을진행하면된다. 제 2 장 웹어플리케이션보안템플릿 (PHP 버전 ) 12 13
제 2 장설치및적용 웹어플리케이션보안템플릿 (KWST) 설치과정은총 4단계로 0. 설치동의, 1. 권한설정, 2. 문자셋 (charset) 설정, 3. 관리자계정설정으로이루어진다. 윈도우계열에서는 2. 권한설정과정은거치지않는다. 설치페이지주소 http:// 서버주소 /KWST 설치디렉터리 /install.php KWST 설치초기페이지는위와같이 install.php 파일이다. 앞의설치준비과정을통해압축해지한위치를웹브라우저를통해연결할수있다. 테스트설치환경 - 기본 URL : http://test.com - KWST 설치상대경로 : /kwstphp - KWST 설치전체경로 : http://test.com/kwstphp/install.php 설치 1 단계 - 설치동의단계 설치를위해서웹브라우저를이용하여위의설치전체경로에접근하면아래의그림과같이안내문과라이센스를확인하는화면이나타난다. 현재 KWST는무료로공개되기때문에바로 위의라이센스를모두읽었으며동의합니다. 를클릭하고다음단계로진행한다.
www.kisa.or.kr 제 2 장 설치 2 단계 - 권한설정단계 권한설정단계는설치하고자하는시스템에쓰기권한이정상적으로설정되어있는지를확인하는단계이다. 윈도우즈계열에서는기본적으로쓰기권한이주어져있기때문에권한설정단계를거치지않고바로문자셋설정단계로바로진행된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 14 15
제 2 장설치및적용 KWST를설치하기위해서는 kwstphp/ 와 kwstphp/log 디렉터리권한이 707로설정되어있어야한다. 권한설정이완전히이루어지지않으면다음단계로진행되지않기때문에시스템에터미널로접속하여다음의방법으로반드시권한을 707로설정해야한다. #chmod 707 kwstphp/ #chmod 707 kwstphp/log
www.kisa.or.kr 권한설정이완료되면다음의그림과같이녹색글씨로 설정이완료되었습니다. 라는메시지를확인할수있다. 그리고다음단계를눌러문자셋설정단계로진행한다. 제 2 장 설치 3 단계 - 문자셋설정단계 문자셋설정은 KWST를적용하고자서버나웹페이지의문자셋에맞추어설정하여야한다. 그렇지않은경우 KWST 메시지를확인할때에글씨가깨진상태로출력되게된다. 다음의방법으로시스템상태를확인하고반드시정확한문자셋으로설정하고다음단계인관리자계정설정단계로진행한다. 웹어플리케이션보안템플릿 (PHP 버전 ) 16 17
제 2 장설치및적용 아래의방법은 Apache 웹서버에서문자셋이어떻게설정되어있는가를확인하는방법이다. 본인의시스템에따라확인하기바란다. 위의경우에는 UTF-8로웹서버가문자셋을설정하고있는것을나타낸다. #grep AddDefaultCharset /etc/httpd/conf/httpd.conf AddDefaultCharset UTF-8
www.kisa.or.kr 설치 4 단계 - 관리자계정설정단계 관리자계정은 KWST 관리자페이지에인증을하기위한관리자계정이다. 아이디와암호는보안상아주중요하기때문에쉽지않은암호로생성하길바란다. 아이디와암호는찾기기능이없으므로반드시기억해야하며아이디와암호를잃어버린경우에는재설치과정을거쳐야하므로주의하길바란다. 제 2 장 아이디와암호, 암호확인을정확히입력한후 설치완료하기 (Finish) 버튼을누르면 설치가완료되었습니다. 라는메시지와함께설치가완료된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 18 19
제 2 장설치및적용 웹어플리케이션보안모듈을각웹페이지나프로그램에적용하기위해서는 KWST를적용하고자하는대상파일에 4줄로구성된코드를추가해야된다. 예를들어 http://test. com/test.php 웹프로그램에 KWST를적용한다면 test.php 파일의첫줄에아래와같이추가해야된다. <?php // WEB Security Module define(" KWST_PHP_VERSION_BASE_DIR ", "KWST 프로그램위치절대경로 "); include_once( KWST_PHP_VERSION_BASE_DIR."/kwst_referee.php");?> 추가할소스코드의내용은위와같다. 위의코드에서 KWST 프로그램위치절대경로 부분을 KWST 프로그램이설치된 ( 압축해제된 ) 경로로수정해야한다. 예를들어 KWST가 /var/www/html/kwstphp 에설치된경우라면다음과같이수정하고설치할웹페이지첫줄에추가하면된다. <?php // KISA WEB Security Template define(" KWST_PHP_VERSION_BASE_DIR ", "/var/www/html/kwstphp"); include_once( KWST_PHP_VERSION_BASE_DIR."/kwst_referee.php");?> 실제예로제로보드에 lib.php 파일에 KWST를적용한다면다음과같이추가하면된다. 이렇게추가되면제로보드 lib.php 파일에 KWST가적용되게된다.
www.kisa.or.kr <?php // KISA WEB Security Template define(" KWST_PHP_VERSION_BASE_DIR ", "./kwstphp"); include_once( KWST_PHP_VERSION_BASE_DIR."/kwst_referee.php");?> <? /****************************************************************************** * Zeroboard library *... 중략... 제 2 장 이처럼적용하고자하는웹페이지나프로그램을모두수정하면된다. 그러나위과정은상당히번거로우며수정할때에 PHP 문법적에러가발생하지않도록꼼꼼하게하여야한다. 수정이완료되면다음과같은방법으로정상적으로에러가없는지확인하도록한다. #php lib.php... 중략... 위와같이실행하였을때에경고나에러가발생하지않으면정상적으로수정이완료된것이다. 웹어플리케이션보안템플릿 (PHP 버전 ) 20 21
www.kisa.or.kr
제 3 장관리자페이지설명
제 3 장관리자페이지설명 제 3 장 관리자페이지설명 제3장에서는 KWST 관리자페이지의화면구성을차례대로설명한다. 각화면구성별기능에대한자세한설명은다음 3장부터차례대로설명한다. 관리자페이지로의접근은웹브라우저를통해접근할수있으며웹브라우저주소입력란에다음과같이입력하여관리자페이지로접근할수있다. 관리자페이지주소 : http:// 서버주소 /KWST설치디렉터리/kwst_admin.php 인증을거치지않고처음관리자페이지에연결하는경우에는인증화면으로자동으로이동된다. 테스트관리자페이지환경 - 기본 URL : http://test.com - KWST 설치상대경로 : /kwstphp - KWST 관리자페이지전체경로 : http://test.com/kwstphp/kwst_admin.php
www.kisa.or.kr 관리자인증 관리자페이지에인증하기위해서는반드시로그인과정을통해인증을거쳐야한다. 인증되지않은경우는바로다음그림과같이인증페이지로이동된다. 제 3 장 설치과정에서생성한관리자계정정보를통해인증을수행할수있다. 정확히아이디와암호를입력하고 로그인 (Login) 버튼을누르면다음과같이 관리자인증되었습니다. 라는메시지와함께인증된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 24 25
제 3 장관리자페이지설명 관리자페이지초기화면 관리자페이지초기화면은다음의그림과같이각관리메뉴별로간단한설명을담고있다. 관리자페이지는윗부분에공식홈페이지, 메뉴얼에대한링크가있으며왼쪽에관리메뉴링크가있다. 관리자페이지메뉴별설명 관리자페이지메뉴는 8개로구성되어있다. 각메뉴별간략설명은앞의초기화면에서설명하고있다. 이곳에서는간단히메뉴별설명을한다.
www.kisa.or.kr 제 3 장 HOME - HOME 메뉴는현재페이지인관리자처음화면으로이동 - 링크 : kwst_admin.php 계정설정 - 관리자계정아이디와암호를설정함 - 링크 : kwst_admin_account.php 기본설정 - KWST 이름, 적용여부, 메시지방식등기본적인운영에관련된정책을설정 - 링크 : kwst_admin_config.php 정책설정 - 실제악성코드를탐지하는정책을설정함 - 각정책은정규표현식을지원함 웹어플리케이션보안템플릿 (PHP 버전 ) 26 27
제 3 장관리자페이지설명 - 링크 : kwst_admin_policy.php 고급설정 - 각페이지별세부정책설정함 - 각페이지별로허용하는변수와허용하지않은변수등상세히설정이가능함 - 링크 : kwst_admin_advance.php 로그관리 - 탐지되어기록되는로그들을관리 - 링크 : kwst_admin_log.php 정책보기 - 현재설정되어있는정책을확인함 - 링크 : kwst_admin_policy_view.php 백업관리 - 현재설정되어있는정책에대하여관리자 PC 에저장할수있음 - 링크 : kwst_admin_backup.php
제 4 장관리자계정관리
제 4 장관리자계정관리 제 4 장 관리자계정관리 제4장에서는 KWST 관리자페이지인증을위한아이디와암호를설정하는것을설명한다. 관리자계정의아이디와암호는보안상의이유로상당히긴문자열로구성되도록하였다. 아이디설정규칙 아이디는최소 4 자, 최대 16 자의문자열또는숫자로구성된다. 암호설정규칙 암호는최소 8자, 최대 32자의문자열또는숫자로구성된다. (MD5 해쉬구조로암호화되어저장 )
www.kisa.or.kr 제 4 장 새로운관리자아이디와암호, 암호확인을입력하고이전암호를정확히입력하게되면 관리자계정정보가수정되었습니다. 메시지와함께설정된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 30 31
www.kisa.or.kr
제 5 장기본설정 1. 보안모듈기본설정 2. 사이트설정 3. 보안모듈적용대상설정
제 5 장기본설정 제 5 장 기본설정 제5장기본설정에서는 KWST에대한가장중요한부분으로보안모듈기본설정, 사이트설정, 보안모듈적용대상등운영에관련된정책설정에대하여설명한다. 보안모듈기본설정에서는모듈이름, 집행모드그리고알림방식에대해서설정한다.
www.kisa.or.kr 모듈이름설정 설치한 KWST 관리자페이지의이름을설정한다. 설정된모듈이름은각관리자페이지의타이틀 (title) 에표시되며관리자가임의대로모듈이름을설정하면된다. 집행모드설정 (* 설정상주의필요 ) 집행모드설정은 KWST 설정에있어서가장중요한부분으로설치한 KWST를실제집행할것인지혹은설치만하고집행하지않을것인지등을설정한다. 집행모드에는총 3개의모드가있으며적용모드, 감사모드그리고비적용모드가있다. 제 5 장 적용모드 (enforcing) - 집행모드가적용모드로설정되어있을경우에는 KWST에서정의한정책들에의해탐지를수행하고차단또는허용된다. 감사모드 (permissive) - 기본설정상태 - 감사모드로설정되어있을경우에는적용모드와마찬가지로 KWST에서정의한정책들에의해탐지를수행하지만무조건허용됨 - 설치초기에정책을작성하는과정에감사모드로정책의안정화하는것이좋음 웹어플리케이션보안템플릿 (PHP 버전 ) 34 35
제 5 장기본설정 비적용모드 (disabled) - 비적용모드로설정되어있을경우에는 KWST 프레임워크에서바로빠져나와아무런탐지도적용도되지않음 알림방식설정 알림방식설정은집행모드가적용모드로설정되어있을때비정상적인행위로탐지되어사용자의접근이차단할필요가있을경우어떻게차단할것인지에대한설정이다. 알림방식에는경고모드, 알림모드그리고스텔스모드가있다. 경고모드 (alert) - 집행결과를경고창으로알리며사용자에게곧바로결과를알리고자할때설정
www.kisa.or.kr 메시지모드 (message) - 집행결과를메시지로알림, 일반적인에러메시지처럼알림 제 5 장 스텔스모드 (stealth) - 권한이없다는 403 접근거부페이지를보여줌 - KWST 웹보안모듈이설치되어운영하고있다는것을숨기고자할때에유용함 웹어플리케이션보안템플릿 (PHP 버전 ) 36 37
제 5 장기본설정 사이트설정에서는현재운영중인사이트에대한전반적인설정으로현재운영중인사이트를폐쇄할것인지서비스할것인지에대한설정과사이트의문자셋이무엇인지를설정한다. 지원하는문자셋으로는 UTF-8과 euckr이있다. 사이트폐쇄여부설정 KWST 설치되어운영중인사이트를일시적으로또는영구적으로차단하고자한다면사이트를폐쇄할수있다. 열림 - 사이트를정상적으로운영함 폐쇄 - 사이트를폐쇄하여운영하지않음, 다음의그림은사이트가폐쇄된화면
www.kisa.or.kr 사이트문자셋설정 제 5 장 KWST를설치운영하고자하는웹페이지나웹서버의설정에따라문자셋 (charset) 을설정한다. 국내에서주로사용되는 UTF-8와 euckr 두개의문자셋만을제공하며문자셋이잘못설정될경우에각에러메시지들이깨져서보이게되므로정확하게설정해야한다. UTF-8 - 서버및웹페이지설정이 UTF-8인경우 euckr(cp949) - 서버및웹페이지설정이 euckr(cp949) 인경우 웹어플리케이션보안템플릿 (PHP 버전 ) 38 39
제 5 장기본설정 정상적으로문자셋이설정되어있을경우에는다음의그림과같이제대로된알림메시지를볼수있다. 다음의그림은문자셋이잘못설정된경우의알림메시지이다. 글씨가깨어져정확히확인할수없게된다. 보안모듈적용대상설정은 KWST 웹보안모듈에의해서탐지할대상들에대한설정이다. 기본으로 GET, POST, FILE, COOKIE 등에전역변수들을대상으로탐지를수행하도록설정되어있다.
www.kisa.or.kr GET 변수설정 GET 변수들을대상으로탐지를수행할지안할지를설정한다. POST 변수설정 POST 변수들을대상으로탐지를수행할지안할지를설정한다. 제 5 장 FILE 변수설정 FILE 변수들을대상으로탐지를수행할지안할지를설정한다. COOKIE 변수설정 COOKIE 변수들을대상으로탐지를수행할지안할지를설정한다. 웹어플리케이션보안템플릿 (PHP 버전 ) 40 41
www.kisa.or.kr
제 6 장정책설정 1. SQL Injection 정책설정 2. XSS 정책설정 3. 불량단어정책설정 4. 불량태그정책설정 5. 아이피정책설정 6. 파일정책설정
제 6 장정책설정 제 6 장 정책설정 제6장정책설정에서는 KWST에서탐지할공격형태들을유형별로설정한다. 대표적인공격들인 SQL Injection, XSS, 불량단어 (WORD), 불량태그 (TAG), 아이피주소, 파일별로정책을설정할수있다. SQL Injection 공격형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격은탐지된다.
www.kisa.or.kr 적용여부 - SQL Injection 공격탐지를수행할지안할지를설정한다. 목록 - SQL Injection 공격형태를정규표현식으로설정한다. SQL Injection 공격탐지차단 제 6 장 변수에 1 or 1 -- 와같이목록에포함된형태의 SQL Injection 공격코드를넣었을때다음과같이탐지되고차단된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 44 45
제 6 장정책설정 XSS 공격형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격은탐지된다. 적용여부 - XSS 공격탐지를수행할지안할지를설정한다. 목록 - XSS 공격형태를정규표현식으로설정한다.
www.kisa.or.kr XSS 공격탐지차단 변수에 javascript: 와같이목록에포함된형태의 XSS 공격코드를넣었을때다음과같이탐지되고차단된다. 제 6 장 불량단어형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격은탐지된다. 불량단어는스팸성글이나악성댓글을차단하는데유용하다. 웹어플리케이션보안템플릿 (PHP 버전 ) 46 47
제 6 장정책설정 적용여부 - 불량단어탐지를수행할지안할지를설정한다. 목록 - 불량단어형태를정규표현식으로설정한다.
www.kisa.or.kr 불량단어공격탐지차단 변수에 현찰게임과같이목록에포함된형태의불량단어를넣었을때다음과같이탐지되고차단된다. 제 6 장 불량태그형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격은탐지된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 48 49
제 6 장정책설정 적용여부 - 불량태그공격탐지를수행할지안할지를설정한다. 목록 - 불량태그공격형태를정규표현식으로설정한다.
www.kisa.or.kr 불량태그공격탐지차단 변수에 <iframe 와같이목록에포함된형태의불량태그를넣었을때다음과같이탐지되고차단된다. 제 6 장 아이피정책설정에서는아이피주소를정규표현식형태로설정하여접근통제할정책을설정한다. 이렇게설정된정규표현식규칙에포함되는모든아이피는적용기반에따라차단되거나허용된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 50 51
제 6 장정책설정 적용여부 아이피탐지를수행할지안할지를설정한다. 적용기반 - 화이트리스트 : 목록에포함된아이피주소에서만접근을허용함 - 블랙리스트 : 목록에포함된아이피주소에서의접근은차단함
www.kisa.or.kr 목록 - 아이피주소를정규표현식으로설정한다. 아이피탐지차단 위의그림과같이아이피설정부분에블랙리스트방식으로 127.0.0.1 를설정하고접근했을때아래의그림과같이탐지된다. 제 6 장 웹어플리케이션보안템플릿 (PHP 버전 ) 52 53
제 6 장정책설정 파일정책은업로드하는파일들에이름과타입그리고크기로허용할것인지차단할것인지를설정한다. 파일이름 적용여부 - 파일이름탐지를수행할지안할지를설정한다.
www.kisa.or.kr 적용기반 - 화이트리스트 : 목록에포함된파일이름만업로드를허용함 - 블랙리스트 : 목록에포함된파일이름은업로드를차단함 목록 - 파일이름을정규표현식으로설정한다. 파일타입 적용여부 - 파일타입탐지를수행할지안할지를설정한다. 제 6 장 적용기반 - 화이트리스트 : 목록에포함된파일타입만업로드를허용함 - 블랙리스트 : 목록에포함된파일타입은업로드를차단함 목록 - 파일타입을정규표현식으로설정한다. 웹어플리케이션보안템플릿 (PHP 버전 ) 54 55
제 6 장정책설정 파일크기 적용여부 - 파일크기탐지를수행할지안할지를설정한다. 최소크기 - 업로드를허용할최소크기값을설정 최대크기 - 업로드를허용할최대크기값을설정 파일업로드탐지차단 허용하지않은확장자인 *.php 를가진파일을업로드할때에다음과같이탐지되고차단된다.
www.kisa.or.kr 제 6 장 웹어플리케이션보안템플릿 (PHP 버전 ) 56 57
www.kisa.or.kr
제 7 장고급설정 1. 신규페이지추가 2. 관리페이지수정과삭제 3. 각페이지별변수설정 4. 페이지별정책테스트
제 7 장고급설정 제 7 장 고급설정 제7장고급설정에서는각페이지별로정책설정한다. 이때에설정된페이지들은정책설정에서설정한정책보다우선탐지된다. 위의그림은아무런페이지별정책도설정되지않은초기상태의고급설정페이지의화면이다. 추가 버튼을클릭하면아래와같이관리할페이지를추가할수있다.
www.kisa.or.kr 페이지추가 페이지추가버튼을누르면다음과같은폼이나타난다. 페이지이름 - 추가할페이지이름으로 http://host/path 에서 /path 입력 - ex) http://testcom/test.php 일경우 /test.php 이부분을입력하면됨 - 반드시 페이지보기 버튼을클릭하여정상적으로 /path를적었는지를확인해보아야다음으로진행이됨 제 7 장 다음의그림은 페이지보기 클릭후페이지이름을잘못입력하였을때의내용으로 웹페이지를찾을수없습니다. 라고표시된다. 웹어플리케이션보안템플릿 (PHP 버전 ) 60 61
제 7 장고급설정 사용여부 - 현재추가할페이지에대한접근을허용할것인지차단할것인지를설정한다. 이때에차단으로설정할경우해당페이지에대한접근은무조건차단된다. 허용기반 - 추가할페이지에서사용하는변수들에대하여화이트리스트방식으로설정할것인지아니면블랙리스트방식으로설정할것인지를나타낸다. 화이트리스트로설정할경우에는정해진변수이외에는어떠한변수에사용도차단되며블랙리스트방식의경우에는지정된변수의사용이무조건차단된다.
www.kisa.or.kr 페이지이름부분에 /test.php 로입력하고페이지보기를실행하였을때에다음과같이관리할대상이제대로표시되면 Confirm 버튼을클릭하고페이지를추가한다. 제 7 장 다음과같이정상적으로페이지를추가되면관리대상페이지목록에나타난다. 앞서입력한 test.php 가추가되어있는것을볼수있다. 웹어플리케이션보안템플릿 (PHP 버전 ) 62 63
제 7 장고급설정 고급설정에서관리할페이지목록별각표시줄에오른쪽부분에는 수정, 삭제 버튼이있다. 이버튼을클릭함으로써수정및삭제가가능하다. 페이지수정 수정버튼을클릭하면위의그림과수정할페이지목록바로밑에수정할수있는폼이나타난다. 페이지추가와마찬가지로사용여부와허용기반을수정할수있다. 현재에는페이지이름에대한수정기능은지원하지않는다. 페이지삭제 페이지삭제는삭제버튼을클릭하면다음의그림과같이삭제여부를확인한다. 확인 을클릭하게되면해당페이지는페이지별관리대상에서삭제할수있다.
www.kisa.or.kr 각페이지별변수설정은관리페이지목록에서페이지이름부분에 설정 버튼을클릭하여설정할수있다. 아래의그림은페이지별변수설정화면이다. 아랫부분에변수관리설정부분에허용하거나차단할변수들에목록이표시된다. 관리할변수의추가하려면중간에있는 추가 버튼을클릭하면다음의그림과같이변수정보입력폼이표시되고변수정보입력폼을작성하고 Confirm 을클릭하면된다. 제 7 장 웹어플리케이션보안템플릿 (PHP 버전 ) 64 65
제 7 장고급설정 변수추가 변수추가버튼을누르면아래와같은폼이나타난다. 입력폼에추가할변수정보를입력하고 Confirm 을클릭하면변수가추가된다. 입력폼별설명 - Name : 변수명 - Format : 변수값입력형태 ( 정규표현식 ) - GET : GET 메소드에대한허용여부 - POST : POST 메소드에대한허용여부 - SQL Injection : SQL Injection 공격탐지여부 - XSS : XSS 공격탐지여부 - WORD : 불량단어탐지여부 - TAG : 불량태그탐지여부 - Minlength : 변수최소길이 - Maxlength : 변수최대길이 test.php 페이지에서변수 id 와 no 를사용하고 id 변수는알파벳으로만구성되고길이는최소 4에서최대 32이고 no 변수는숫자로만구성되어지며길이가최소 1에서최대 32로구성된다고할때에해당변수들에정책을추가한다면다음의그림과같이설정한다.
www.kisa.or.kr 변수수정과삭제 변수수정과삭제기능은각변수목록에오른쪽에위치한수정과삭제버튼을통해서수행한다. 수정클릭시의확인창 제 7 장 삭제클릭시의확인창 웹어플리케이션보안템플릿 (PHP 버전 ) 66 67
제 7 장고급설정 설정하지않은 id 사용 변수 aa 는허용되지않았기때문에다음의그림과같이차단된다. 잘못된형태의값을입력 변수 no 는 [0-9] 정규표현식에따라숫자로만구성되어야한다.
www.kisa.or.kr 최소, 최대길이범위를벗어난입력 변수 no 는최소 1에서최대 6 자리만허용되도록정책이설정되어있어 7자리이상입력하면다음과같이차단된다. 제 7 장 웹어플리케이션보안템플릿 (PHP 버전 ) 68 69
제 7 장고급설정 허용되지않은메소드접근 GET 메소드가허용되지않았을때 GET 으로의접근은차단된다.
제 8 장로그관리
제 8 장로그관리 제 8 장 로그관리 제8장로그관리는 KWST에의해서탐지된결과를저장할로그파일에대한설정이다. 로그파일이름과기록여부그리고기록방식등을설정한다. 로그파일이름설정 로그파일이름은기본으로 kwst_log.txt 로설정되어있다. 기본파일이름을이용할경우
www.kisa.or.kr 에는로그정보가유출되므로관리자만아는이름으로수정하여사용하길추천한다. 로그파일이름규칙 - Year.Month.Day- 로그파일이름 (ex. 20071016-kwst_log.txt) 로그기록여부설정 로그를기록할것인가기록하지않을것인가를설정한다. 기록 - 로그를기록함 무기록 - 로그를기록하지않음 제 8 장 로그기록방식설정 기록할로그의방식을설정한다. 설정에따라간략하게또는상세하게로그가기록된다. 시스템디스크용량이충분하다면상세하게기록하도록설정할것을추천한다. 웹어플리케이션보안템플릿 (PHP 버전 ) 72 73
제 8 장로그관리 간략 - 로그를간략하게기록함 REMOTE_ADDR - [Date] REQUEST_URL: Key = Value: Message ex) 125.24.15.196 - [19/Nov/2007:15:44:32 0900] /~mirr1004/bbs/write_ok.php: memo = 인터넷룰렛게임, 리얼PC게임, 성인게임... : 불량 WORD 탐지 상세 - 로그를상세하게기록함 REMOTE_ADDR - [Date] REQUEST_URL: Key = Value: Message --> [Method: method] --> [Policy: policy] --> [Pattern: pattern] --> [Method: method] --> [Offset: offset] [Matched-Content: content] ex) 125.24.15.196 - [19/Nov/2007:15:44:32 0900] /~mirr1004/bbs/write_ok.php: memo = 인터넷룰렛게임, 리얼PC게임, 성인게임... : 불량 WORD 탐지 -> [Method: POST] -> [Policy: 기본정책 ] -> [Pattern: 현금 ] -> [Offset: 123] [Matched-Content: 현금 ] -> [Offset: 231] [Matched-Content: 현금 ] -> [Offset: 472] [Matched-Content: 현금 ] -> [Offset: 921] [Matched-Content: 현금 ] -> [Offset: 2134] [Matched-Content: 현금 ]
www.kisa.or.kr 로그문자셋설정 기록할로그의문자셋을설정한다. 각시스템의환경에따라설정하면된다. 이것을제대로설정하지않으면나중에로그를확인할때에글씨가깨질수있으므로정확히설정하도록한다. 로그목록개수설정 로그관리에서출력할로그의개수를설정한다. 기본 20 개로설정되어있다. 로그목록 일별로로그를출력하며가장최근의로그파일이제일위에놓인다. 제 8 장 웹어플리케이션보안템플릿 (PHP 버전 ) 74 75
www.kisa.or.kr
제 9 장정책보기
제 9 장정책보기 제 9 장 정책보기 제9장정책보기는현재설정된정책정보를트리구조와소스형태로일괄적으로확인할수있는기능이다. 트리구조정책보기
www.kisa.or.kr 소스형태정책보기 제 9 장 웹어플리케이션보안템플릿 (PHP 버전 ) 78 79
www.kisa.or.kr
제 10 장백업관리
제 10 장백업관리 제 10 장 백업관리 제10장백업관리는현재설정된정책을관리자의개인 PC 로백업하기위한기능이다. 현재정책파일의이름, 파일크기그리고 최근정책수정일 을확인할수있으며정책을다운로드받을수있다. 정책정보보기
www.kisa.or.kr 정책다운로드 Confirm 버튼을클릭하면다음과같이정책을다운로드받을수있다. 정책은수시로백업하여만일의사태에대비하기바란다. 제 10 장 웹어플리케이션보안템플릿 (PHP 버전 ) 82 83
www.kisa.or.kr
제 11 장마치며...
제 11 장마치며... 제 11 장 마치며... 본문서를통해많은웹어플리케이션사용자나개발자들이자신의소중한웹서버, 웹프로그램나아가서개인정보의보안성을강화하여보다안전한환경에서영위하길바란다.
웹어플리케이션보안템플릿 (PHP 버전 ) 2007년 9월 인쇄 2007년 9월 발행 발행인발행처 황중연 한국정보보호진흥원서울시송파구중대로 135 IT 벤처타워 ( 서관 ) TEL. (02)4055-114, http://www.kisa.or.kr 인쇄처호정씨앤피 (Tel 02-2277-4718) 본가이드내용의무단전재를금하며, 가공 인용할때에는반드시한국정보보호진흥원 웹어플리케이션보안템플릿 (PHP 버전 ) 를명기하여주시기바랍니다.