CASTLE 사용자설명서 (ASP 버전 ) 2009. 1.
< 목차 > 제 1 장활용에앞서 1 제 2 장설치및적용 3 제 3 장관리자페이지설명 13 제 4 장관리자계정관리 18 제 5 장기본설정 19 제 6 장정책설정 28 제 7 장로그관리 38 제 8 장정책보기 42 제 9 장백업관리 43 제 10 장마치며... 44
본문서는최근해킹에주로이용되고있는주요웹보안취약점으로인한피해감소를목적으로한국인터넷진흥원인터넷침해대응센터해킹대응팀연구원들과국내웹보안및웹어플리케이션전문가의참여를통해제작되었습니다. 2009 년 1 월 연구책임자 : 팀장최중섭참여연구원 : 선임연구원서진원주임연구원한단송주임연구원주필환외부전문가 : 전남대학교이재서감수 : 보안전문가김종회 - 1 -
제 1 장활용에앞서 기존의침해사고에서공격자들은운영체제취약점이나시스템어플리케이션취약점을주로공격에이용하였다. 하지만최근에는홈페이지운영에필요한웹어플리케이션취약점을공격에많이사용하고있다. 웹어플리케이션취약점은다른해킹기법과비교하여상대적으로낮은수준의기술로도해킹이가능하고, 이를이용해많은사용자들을대상으로빠른시간내악성코드의전파가가능하다. 웹어플리케이션취약점의보완을위해서는취약점의원인이되는소스코드수정이필요하나대부분의중소홈페이지의경우, 개발인력의미비로인해침해사고가지속적으로재발하는문제가발생하고있다. 이러한문제점을해결하기위해서 KISA에서는안전한웹어플리케이션의소스코드를제작해보급하였으며공개웹방화벽을보급하여웹어플리케이션의취약점을차단하고자하는많은노력을기울이고있다. 본문서는 ASP 환경에서사용할수있는 CASTLE( 홈페이지를보호하는성벽 이라는의미 ) 의사용법을설명한다. 개발자들은개발단계부터 CASTLE을적용하여, 웹보안성을강화를할수있도록한다. 웹어플리케이션의소스코드를수정하기힘든관리자또한간단한작업만으로도본도구를적용할수있다. CASTLE을가장일반적인웹개발환경에서적용가능하도록제작하였다. 각기관의웹개발환경및서비스가매우다양하므로, 정상적인서비스에지장이없도록충분히최적화작업및테스트를해야한다. 아무쪼록본프로그램이국내홈페이지에대한피해사고감소와홈페이지관리자의보안작업에도움이되길바란다. - 1 -
한국인터넷진흥원에서는 CASTLE를인터넷에서공개된 WSM(Web Security Module) 을개발한외부전문가와함께개발했다. 사용자의편리성및보안성강화기능을추가적으로개발하여기존버전과많은변화를보였다. CASTLE 의주요기능 o 보안성강화 - OWASP 10대주요취약점해결 - 소스코드수준의웹어플리케이션보안성강화 o 사용자편리성강화 - 관리기능으로편리한정책설정지원 - 운영중인프로그램소스의최소수정으로도적용가능 o 높은호환성지원 - 다양한웹서버환경과웹어플리케이션에서동작할수있는호환성지원 기대효과 o CASTLE 확산으로국내웹어플리케이션의보안성향상 o 개발자들은개발단계에서부터 CASTLE을통합적으로적용하여보안성강화 o 서버관리자들은편리한사용과정을통해기존웹어플리케이션수정용이 - 2 -
제 2 장설치및적용 2장설치및적용에서는 CASTLE 설치전준비사항과단계별설치방법에대해서설명한후 CASTLE 적용방법에대해설명한다. 1. 지원환경 CASTLE ASP 버전은다음과같은환경에서정상적으로동작한다. 운영체제 웹서버 Windows 계열 IIS 모든버전 ASP 버전 1.x ~ 2.0 2. 설치준비 설치사전준비 CASTLE ASP 버전을윈도우에설치하기전에미리추가해야할컴포넌트가존재한다. 소스와함께 CAPICOM 컴포넌트를마이크로소프트사의홈페이지에서다운로드하여, 윈도우레지스트리에등록하는과정이필요하다. CAPICOM은윈도우에서암호화에관련있는라이브러리들을 COM 개체형태로제공한다. 다운로드위치는다음과같다. http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyi D=860EE43A-A843-462F-ABB5-FF88EA5896F6 전체패키지를설치하거나, 압축을풀어서 capicom.dll 만등록하여 - 3 -
도무방하다. 전체패키지를설치했다면, capicom.dll 파일이존재하는폴더로이동해서이파일을레지스트리에등록한다. 등록절차는다음과같다. 윈도우시작버튼 -> 실행 -> cmd' 명령을통해서 capicom.dll 파일이존재하는디렉토리에서다음과같은명령을실행한다. > regsvr32 capicom.dll 설치준비 설치를위해최신버전의 CASTLE 패키지를 CASTLE 배포공식사이트에서다운로드받는다. CASTLE 패키지는 CASTLE ASP(castleasp), JSP(castlejsp), PHP(castlephp) 버전을모두포함하고있다. 적용하고자하는웹사이트의프로그래밍언어에따라해당버전을웹서버로업로드해야한다. CASTLE 배포공식사이트 : http://www.krcert.or.kr - 4 -
3. 설치과정 CASTLE 설치과정은총 4단계로 1. 설치동의, 2. 권한설정, 3. 문자셋 (charset) 설정, 4. 관리자계정설정으로이루어진다. o 설치페이지주소 http:// 서버주소 /CASTLE설치디렉터리/install.asp CASTLE 설치초기페이지는위와같이 install.asp 파일이다. 앞의설치준비과정을통해압축해제한위치를웹브라우저를통해연결할수있다. - 5 -
o 테스트설치환경 - 기본 URL : http://test.com - CASTLE 설치상대경로 : /castleasp - CASTLE 설치전체경로 : http://test.com/castleasp/install.asp 설치 1 단계 - 설치동의단계 설치를위해서웹브라우저를이용하여위의설치전체경로에접근하면아래의그림과같이안내문과라이센스를확인하는화면이나타난다. 현재 CASTLE를무료로공개하기때문에바로 위의라이센스를모두읽었으며동의합니다. 를클릭하고다음단계로진행한다. 설치전체경로 : http://test.com/castleasp/install.asp 설치 2 단계 - 권한설정단계 - 6 -
권한설정단계는설치하고자하는시스템에쓰기권한을설정했는지확인하는단계이다. 정상적인웹서비스를위해 IIS 인터넷정보서비스관리의대화상자에서쓰기권한을줘야한다. 먼저 IIS 인터넷정보서비스 (IIS) 관리대화상자에서왼쪽창의리스트에서 웹사이트 의트리를확장하여, 기본웹사이트 하위의 castleasp 에폴더의등록정보를열다. castleasp 등록정보대화상자에서디렉터리탭을선택한다. 각각의설정값중에서로컬경로 (C) 의 읽기, 실행권한 (P) 가 스크립트전용 에체크되어있는지확인한다. 대부분디폴트값으로설정되어있다. - 7 -
또한, 윈도우탐색기에서등록정보의보안탭을이용하여인터넷게스트계정이나 Everyone 계정에쓰기권한을추가해야한다. 권한설정이완료되면다음단계인문자셋설정단계로진행한다. - 8 -
설치 3 단계 - 문자셋설정단계 문자셋설정은 CASTLE를적용하고자하는서버나웹페이지의문자셋에맞추어설정한다. 제대로설정하지않은경우, CASTLE 메시지를확인할때글자들을깨진상태로출력할수있다. 다음과같은방법으로웹페이지의문자셋을정확한문자셋으로설정하고, 다음단계인관리자계정설정단계로진행한다. ASP 버전의경우, IIS 웹서버에서, CASTLE을적용하는각웹페이지들의문자인코딩저장방식과관련이있다. 적용하고자하는웹페이지들의문자셋에맞게설정한다. CASTLE ASP 버전은한글지원을위해, EUC-KR과 UTF-8 인코딩방식을지원한다. - 9 -
설치 4 단계 - 관리자계정설정및로그파일이름설정단계 관리자계정은 CASTLE 관리자페이지에인증을하기위한관리자계정이다. 아이디와암호는보안상아주중요하기때문에쉽지않은암호로생성하길바란다. 아이디와암호는찾기기능이없으므로반드시기억해야하며아이디와암호를잃어버린경우에는재설치과정을거쳐야하므로주의하길바란다. 보안을위해로그파일이름을관리자가직접설정하도록하였으므로, 로그파일이름을다른이름으로변경한다. 아이디와암호, 암호확인을정확히입력하고, 로그파일명을변경후 설치완료하기 (Finish) 버튼을누르면 설치가완료되었습니다. 라는메시지와함께설치를완료한다. - 10 -
4. 적용과정 CASTLE을각웹페이지나프로그램에적용하기위해서는적용하고자하는대상파일에아래와같은코드를추가해야된다. 예를들어 http://test.com/test.asp 웹프로그램에 CASTLE를적용한다면 test.asp 파일의첫줄에아래와같은코드를추가해야한다. 주로모든페이지에서 include하여사용하는설정파일, config.asp 와같은헤더파일에아래와같이적용하면, 각각의페이지에추가해야하는수고를덜수있다. <% Application("CASTLE_ASP_VERSION_BASE_DIR") = "CASTLE 설치 URL 절대경로 " Server.Execute(Application("CASTLE_ASP_VERSION_BASE_DIR") & "/castle_referee.asp") %> 추가할소스코드의내용은위와같다. 위코드에서 CASTLE 설치 URL 절대경로 부분을 CASTLE 프로그램을도메인이후의경로로수정해야한다. 예를들어 CASTLE의첫설치페이지가 "http://test.com/castleasp/install.asp" 이라면 CASTLE 설치 URL 절대경로는 /castleasp" 로수정하고, 설치할웹페이지첫줄에추가한다. 즉, CASTLE를적용하고자하는웹사이트에공통으로참조하는파일 ( 헤더파일 ) 이있다면그파일에만적용하면모든적용을완료할수있다. - 11 -
제 3 장관리자페이지설명 3장관리자페이지설명에서는 CASTLE 관리자페이지의화면구성을차례대로설명한다. 관리자페이지는웹브라우저를통해다음과같이입력하여접근할수있다. o 관리자페이지주소 : http:// 서버주소 /CASTLE설치디렉터리/castle_admin.asp 로그인을하지않고관리자페이지에연결하는경우, 인증화면으로이동한다. o 테스트관리자페이지환경 - 기본 URL : http://test.com - CASTLE 설치상대경로 : /castleasp - CASTLE 관리자페이지전체경로 : http://test.com/castleasp/castle_admin.asp - 12 -
관리자인증 관리자페이지에인증하기위해서는반드시로그인과정을통해인증을거쳐야한다. 인증하지않은경우, 바로다음그림과같은인증페이지로이동한다. 관리자페이지전체경로 : http://test.com/castleasp/castle_admin.asp 설치과정에서생성한관리자계정정보를통해인증을수행할수있다. 정확히아이디와암호를입력하고 로그인 (Login) 버튼을누르면다음과같이 관리자인증되었습니다. 라는메시지와함께인증된다. - 13 -
관리자페이지초기화면 관리자페이지초기화면은다음그림과같이각관리메뉴별로간단한설명을담고있다. 관리자페이지는윗부분에공식홈페이지, 메뉴얼 에대한링크가있으며왼쪽에관리메뉴링크가있다. - 14 -
관리자페이지메뉴별설명 관리자페이지는 7 개메뉴로구성되어있다. o HOME - HOME 메뉴는현재페이지인관리자처음화면으로이동 - 링크 : castle_admin.asp o 계정설정 - 관리자계정아이디와암호를설정함 - 링크 : castle_admin_account.asp o 기본설정 - CASTLE 이름, 적용여부, 메시지방식등기본적인운영에관련된정책을설정 - 링크 : castle_admin_config.asp o 정책설정 - 실제공격을탐지및차단하는정책 - 각정책은정규표현식을지원함 - 링크 : castle_admin_policy.asp o 로그관리 - 15 -
- 정책에의해공격을탐지한로그들을관리 - 링크 : castle_admin_log.asp o 정책보기 - 관리자가설정한모든정책을확인함 - 링크 : castle_admin_policy_view.asp o 백업관리 - 현재모든정책을관리자 PC에저장 - 링크 : castle_admin_backup.asp - 16 -
제 4 장관리자계정관리 4장관리자계정관리에서는관리자페이지인증을위한아이디, 암호를설정하는 계정설정 메뉴를설명한다. 관리자계정의아이디와암호는보안상의이유로상당히긴문자열로구성하도록하였다. 아이디설정규칙 아이디는최소 4 자, 최대 16 자의문자열또는숫자로구성해야한다. 암호설정규칙 암호는최소 8자, 최대 32자의문자열또는숫자로구성해야한다. (MD5 해쉬구조로암호화되어저장 ) 새로운관리자아이디와암호, 암호확인을입력하고이전암호를정확히입력하면 관리자계정정보가수정되었습니다. 메시지와함께설정을완료한다. - 17 -
제 5 장기본설정 5장기본설정에서는 CASTLE에대한가장중요한부분으로기본설정, 사이트설정, 적용대상등운영에관련된정책설정에대하여설명한다. 1. 기본설정 기본설정에서는이름, 집행모드그리고알림방식에대해서설정한다. 이름설정 설치한 CASTLE 관리자페이지의이름을설정한다. 설정된 CASTLE 이름을각관리자페이지의타이틀 (title) 에표시하며관리자가임의대로이름을설정할수있다. - 18 -
집행모드설정 (* 설정상주의필요 ) 집행모드설정은 CASTLE 설정에있어서가장중요한부분으로설치한 CASTLE를실제집행할것인지혹은설치만하고집행하지않을것인지등을설정한다. 집행모드에는총 3개의모드가있으며적용모드, 감사모드그리고비적용모드가있다. o 적용모드 (enforcing) - 집행모드를적용모드로설정할경우, CASTLE에서정의한정책들에의해탐지를수행하고, 차단또는허용한다. o 감사모드 (permissive) - 기본설정상태 - 감사모드로설정한경우에는적용모드와마찬가지로 CASTLE에서정의한정책들에의해탐지를수행하지만무조건허용함 - 설치초기에정책을작성하는과정에감사모드로정책의안정화하는것이좋음 - 정의한정책에의해탐지한것들은로그파일로기록하므로, 로그를확인하여운영하는사이트환경에맞게정책수정이필요 o 비적용모드 (disabled) - 비적용모드로설정되어있을경우에는 CASTLE이적용되지않음 - 19 -
알림방식설정 알림방식설정은집행모드를적용모드로설정했을때비정상적인행위로탐지되어사용자의접근이차단할필요가있을경우어떻게차단할것인지에대한설정이다. 알림방식에는경고모드, 알림모드그리고스텔스모드가있다. o 경고모드 (alert) - 집행결과를경고창으로알리며, 차단사유에대해상세한정보를관리자에게곧바로결과를알리고자할때설정 - 관리자가디버깅할때유용하게사용할수있음 - 20 -
o 메시지모드 (message) - 집행결과를메시지로알림 o 스텔스모드 (stealth) - 빈페이지를출력한다. - CASTLE 운영사실을숨기고자할때에유용함 2. 사이트설정 사이트설정에서는현재운영중인사이트에대한전반적인설정으로현재운영중인사이트를잠글것인지서비스할것인지에대한설정과사이트의문자셋이무엇인지를설정한다. 지원하는문자셋으로는 UTF-8-21 -
과 EUC-KR 이있다. 사이트잠금여부설정 CASTLE 설치되어운영중인사이트를일시적으로또는영구적으로차단할수있다. o 열림 - 사이트를정상적으로운영함 o 잠금 - 사이트를잠그고운영하지않음, 다음의그림은사이트가잠긴화면 - 22 -
사이트문자셋설정 CASTLE를설치운영하고자하는웹페이지나웹서버의설정에따라문자셋 (charset) 을설정한다. 국내에서주로사용되는 UTF-8와 EUC-KR 두개의문자셋만을제공하며문자셋이잘못설정될경우에각에러메시지들이깨져서보이게되므로정확하게설정해야한다. o UTF-8 - 서버및웹페이지설정이 UTF-8인경우 o EUC-KR(CP949) - 서버및웹페이지설정이 EUC-KR(CP949) 인경우 정상적으로문자셋을설정했을경우에는다음의그림과같이문제없이알림메시지를볼수있다. - 23 -
CASTLE ASP 버전은문자셋설정과상관없이에러메시지는정상적으로동작하도록작성하였다. - 24 -
3. 적용대상설정 적용대상설정은 CASTLE 에의해서탐지할대상들에대한설정이다. 기본으로 GET, POST, COOKIE 등에전역변수들을대상으로탐지를수행할수있다. GET 변수설정 GET 변수들을대상으로탐지수행여부를설정한다. POST 변수설정 POST 변수들을대상으로탐지수행여부를설정한다. - 25 -
COOKIE 변수설정 COOKIE 변수들을대상으로탐지수행여부를설정한다. - 26 -
제 6 장정책설정 6장정책설정에서는 CASTLE에서탐지할공격형태들을유형별로설정한다. 대표적인공격들인 SQL Injection, XSS, 금칙어 (WORD), 불량태그 (TAG), IP, 파일별로정책을설정할수있다. 1. SQL Injection 정책설정 SQL Injection 공격형태를정규표현식형태로설정할수있다. 이렇게설정한정규표현식규칙에포함되는모든공격을탐지할수있다. o 적용여부 - SQL Injection 공격탐지수행여부를설정한다. - 27 -
o 목록 - SQL Injection 공격형태를정규표현식으로설정한다. - 필요한경우목록에정규표현식으로룰을추가하고 Confirm' 버튼을누르면새로운룰을추가한다. SQL Injection 공격탐지차단 변수에 1 or 1 -- 와같이목록에포함된형태의 SQL Injection 공격코드를넣었을때다음과같이탐지하고, 차단한다. - 28 -
2. XSS 정책설정 XSS 공격형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격을탐지한다. o 적용여부 - XSS 공격탐지수행여부를설정한다. o 목록 - XSS 공격형태를정규표현식으로설정한다. - 29 -
XSS 공격탐지차단 변수에 javascript: 와같이목록에포함된형태의 XSS 공격코드를넣었을때다음과같이탐지하고차단한다. - 30 -
3. 금칙어정책설정 금칙어형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격을탐지한다. 금칙어는스팸성글이나악성댓글을차단하는데유용하다. o 적용여부 - 금칙어탐지수행여부를설정한다. o 목록 - 금칙어형태를정규표현식으로설정한다. - 31 -
금칙어차단 변수에 현찰게임와같이목록에포함된형태의금칙어를넣었을때다음과같이탐지하고, 차단한다. - 32 -
4. 불량태그정책설정 불량태그는악의적인용도로자주쓰이는태그 (tag) 를의미한다. 불량태그형태를정규표현식형태로설정할수있다. 이렇게설정된정규표현식규칙에포함되는모든공격을탐지한다. o 적용여부 - 불량태그공격의탐지수행여부를설정한다. o 목록 - 불량태그공격형태를정규표현식으로설정한다. - 33 -
불량태그공격탐지차단 변수에 <iframe 와같이목록에포함된형태의불량태그를넣었을때다음과같이탐지하고차단한다. - 34 -
5. IP 정책설정 IP 정책설정에서는 IP를정규표현식형태로설정하여접근통제한다. 이렇게설정된정규표현식규칙에포함되는모든아이피를적용기반에따라차단하거나허용한다. o 적용여부 IP 탐지수행여부를설정한다. o 적용기반 - 화이트리스트 : 목록에포함된 IP만접근을허용함 - 블랙리스트 : 목록에포함된 IP 접근을차단함 - 35 -
o 목록 - IP 를정규표현식으로설정한다. 아이피탐지차단 위의그림과같이아이피설정부분에블랙리스트방식으로 127.0.0.1 를설정하고접근했을때아래그림과같이탐지한다. - 36 -
제 7 장로그관리 7장로그관리는 CASTLE에의해서탐지된결과를저장할로그파일에대한설정이다. 로그파일이름과기록여부그리고기록방식등을설정한다. 로그파일이름 로그파일이름은설치시관리자가직접등록한다. o 로그파일이름규칙 - Year.Month.Day-로그파일이름 (ex. 20071016-castle_log.txt) - 37 -
로그기록여부설정 로그기록여부를설정한다. o 기록 - 로그를기록함 o 무기록 - 로그를기록하지않음 로그기록방식설정 기록할로그의방식을설정한다. 설정에따라간략하게또는상세하게로그를기록할수있다. 시스템디스크용량이충분하다면상세하게기록하도록설정할것을추천한다. o 간략 - 로그를간략하게기록함 REMOTE_ADDR - [Date] REQUEST_URL: Key = Value: Message ex) 125.24.15.196 - [19/Nov/2007:15:44:32 +0900] /test/test.asp: memo = 인터넷룰렛게임, 리얼PC게임, 성인게임... : 불량 WORD 탐지 - 38 -
o 상세 - 로그를상세하게기록함 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] /test/test.asp: 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: 현금 ] 로그문자셋설정 기록할로그의문자셋을설정한다. 각시스템의환경에맞게설정한다. 이것을제대로설정하지않으면나중에로그를확인할때에글씨가깨질수있으므로정확히설정하도록한다. - 39 -
로그목록개수설정 로그관리에서출력할로그의개수를설정한다. 디폴트 20 개이다. 로그목록 일별로로그를출력하며가장최근의로그파일이제일위에놓인다. - 40 -
제 8 장정책보기 8장정책보기는현재설정된정책정보를트리구조와소스형태로일괄적으로확인할수있는기능이다. 트리구조정책보기 정책을쉽게확인할수있도록 XML 형식의트리구조로구성하였다. - 41 -
제 9 장백업관리 9장백업관리는현재설정된정책을관리자의개인 PC로백업하기위한기능이다. 현재정책파일의이름, 파일크기그리고 최근정책수정일 을확인할수있으며정책을다운로드받을수있다. 정책정보보기 정책다운로드 "Confirm" 버튼을클릭하면다음과같이정책을다운로드받을수있다. 정책은수시로백업하여만일의사태에대비하기바란다. - 42 -
제 10 장마치며... 본 CASTLE를사용하는많은웹서버관리자나개발자들이웹어플리케이션의보안성을강화하고, 보다안전한환경에서사이트를운영하여여러분의소중한자산을지켰으면한다. - 43 -