2013 년정보보호학과졸업작품보고서 Linux 보안관련가상실습및학습시스템개발 팀명 : 1 조 S3(Server Security System) 지도교수 : 양환석교수님 조장 : 노수지 (4 년 ) 유승언 (4 년 ) 최준호 (4 년 ) 2013.5 중부대학교정보보호학과 - 1 -
요약문 1. 연구제목 Linux 보안관련가상실습및학습시스템개발 2. 개발동기서버관리자는관리자의데이터, 지적재산, 시간을크래커의손에서보호하기위해서는자신의리눅스서버의보안을강화하는것이중요하다고생각됩니다. 시스템관리자가리눅스서버보안에책임을가져야하는데, 서버관리를위해기본적으로기초지식이탄탄해야된다고생각합니다. Linux 서버에서어떤문제가많이발생되고, 어떤공격을당하는지에대한취약점이나보안부분을학습하고, 해결법을익혀서문제풀이를통해서배우고익힐수있도록쉘프로그래밍을이용하여학습시스템을구축하게되었습니다. 3. 연구내용 Linux기반의학습시스템을개발하여인증된사용자만이접속가능하고가상실습환경을구축하여여러개의문제를랜덤으로출력하여문제풀이를통해레벨을높여가는학습시스템입니다. 모든사용자는회원가입후관리자승인시사용가능하며, 가상실습환경은각문제마다서버를구축하여랜덤으로문제풀이를할수있습니다. 4. 시스템구축목표시스템관리시가장중요시여겨야할점은문제가발생했을때즉시해결할수있어야하며보안유지에힘써야하는것입니다. 시스템공격에대해대응하지못한다면시스템마비, 정보유출등여러가지문제점을초래할수있습니다. 그래서저희는본연구를통해 Linux 기반의보안및취약점지식을습득할수있고, 시스템관리시나타나는오류와취약적인부분에대해학습하면서보다효과적으로범위내에서직접보안을전제로하여서버의취약한부분에대한문제풀이를통해서배우고익힐수있도록쉘프로그래밍을이용하여학습시스템을구축하였습니다. 기존 Linux 보안및시스템공격에대한기출문제들을 Run-level을통해재미있고쉽게문제를풀수있도록합니다. 또한실전에대비하여가상실습환경을구축하여실전문제풀이를통해실무능력향상에도도움이될것이다. - 2 -
목 차 Ⅰ. 서론 Ⅰ- 1. 개발배경및목적 Ⅰ- 2. 개발환경 Ⅰ- 3. 개발일정 Ⅱ. 본론 Ⅱ- 1. 프로그램구성 Ⅱ- 2. 사용자인증시스템 Ⅱ- 3. 학습프로그램 ( 가상실습환경구축 ) Ⅱ- 4. 문제관리시스템 Ⅲ. 결론 Ⅲ- 1. 기대효과및응용분야 Ⅲ- 2. 기타 참고문헌 발표 PPT 자료 - 3 -
Ⅰ. 서론 Ⅰ- 1) 개발배경및목적 - Bash shell을이용한문제관리시스템을개발및효율적인학습환경제공시스템구축 - linux, solaris, shell 등시스템전반에관한지식습득 - 서버시스템공격및대응책에대한기본적인학습 - 체계적인진행을통해쉘프로그램의전반적인학습을통한실력향상 - Run-Level을통한학습의성취감을높여주기위한학습프로그램 Ⅰ- 2) 개발환경 운영체제 : CentOS 5.7 / Fedora 11 프로그래밍언어 : Bash Shell, C, C++ Ⅰ- 3) 개발일정 내용조원의역할분담및일정계획서버공격취약점및보안관련집중분석및학습 월별진행계획 9 월 10 월 11 월 12 월 1 월 2 월 3 월 4 월 비고 프로그램설계및구현 오류검사및가상실습환경연동시스템구축완료및포트폴리오 & PPT 제작 - 4 -
Ⅱ. 본론 Ⅱ- 1) 프로그램구성 - 사용자인증시스템 (user authentication system) - 학습프로그램 ( 가상환경구축 ) - 문제관리시스템 본학습시스템모든사용자는관리자에게인증된사용자만이접속가능하며, 관리자에게인증된사용자는최초로그인시회원가입시부여받은 OTP번호를통해로그인합니다. 로그인후문제풀이가가능하며, 문제풀이는 EQS(Example Question System) 과 RQS(Real Question System) 으로구성되어있습니다. EQS(Example Question System) 는연습문제시스템으로시스템공격및대응에관한기초적인문제를풀수있으며, RQS(Real Question System) 으로리눅스보안및취약점에대한필기문제와가상실습문제로구성되어있습니다. 문제를맞출때까지다음 Run-level로올라갈수없으며, 문제풀이도중종료시현재 level이자동저장되어다음재접속시이어가기또는새로풀기가가능한시스템입니다 RQS에서랜덤으로제공되는실습문제를가상환경에접속하여문제를풀수있습니다. 문제풀이를통해실무능력을향상시키고, Linux 보안및시스템공격에대한기출문제들을 Run-level을통해재미있고쉽게문제를풀수있도록하여학습의성취감을높힐수있습니다. 또한문제관리시스템에서는 EQS와 RQS시스템에서제공되는문제들을수정, 삭제, 조회등을통해쉽게관리할수있습니다. Ⅱ- 2) 사용자인증시스템 (user authentication system) 통신망을통하여학습시스템에접속하는사용자가등록되어있는정당한사용자인지의여부를신뢰할수있는방법으로확인하는시스템. 원격으로접속하여시스템을사용하는사용자들에게있어서는특히중요합니다. 중심부분은인증서버라는프로그램으로사용자의정보와 ID, Password등을일괄관리합니다. 인증서버는서비스를제공하는프로그램에대해서회원가입시사용자정보등록을통하여사용자가관리자에게허가를받은본인이라는사실을입증하여시스템에접속할수있도록합니다. 최초접속시강력한보안을위해사용자등록시발행되는 OTP번호를입력하여로그인할수있도록합니다. - 5 -
< 사용자인증시스템구성도 > Ⅱ- 2-1. 회원가입시사용자정보입력 #!/bin/bash clear echo -n " 이름을입력하세요 : " read username echo -n " 주민등록번호를입력하세요 : " read usernum echo -n " 전화번호를입력하세요 : " read userphone echo -n " 사용할 ID를입력하세요 :" read id if grep -w $id /etc/passwd > /dev/null grep -w $id /home/guest/.user_list.txt > /dev/null then echo " 사용자가존재합니다." echo -n " 다시입력하세요 : " read id echo -n " 비밀번호를입력하세요 : " - 6 -
read passwd echo -n "OTP를전송받을 E-mail을입력하세요 : " read email else echo -n " 비밀번호를입력하세요 : " read passwd echo -n "OTP를전송받을 E-mail을입력하세요 : " read email fi /S3_graduation/OTP >> /home/guest/.user_list.txt echo "$id : $username : $usernum : $userphone" >> /S3_graduation/.user_info.txt echo " $id $passwd $email" >> /home/guest/.user_list.txt `cat /home/guest/.user_list.txt grep -w $id cut -f1 -d' ' mail -s "OTP Number" $email` echo " 사용자를요청하였습니다 " Ⅱ- 2-2. OTP 번호발행하는알고리즘 OTP [ One Time Password ] 고정된패스워드대신무작위로생성되는일회용패스워드를이용하는사용자인증방식. OTP( 일회용패스워드, One Time Password) 는무작위로생성되는난수의일회용패스워드를이용하는사용자인증방식이다. 보안을강화하기위하여도입한시스템으로, 로그인할때마다일회성패스워드를생성하여동일한패스워드가반복해서사용됨으로발생하는보안상의취약점을극복하기위해도입되었다. 주로금융권에서온라인뱅킹 (Online banking) 등의전자금융거래에서사용되며, 사용자는일회용비밀번호를생성하는하드웨어인 OTP 생성기 (OTP token) 를이용한다. 별도의 OTP 생성기를소지해야하는불편함등으로인해전자금융거래를제외한인터넷등의광범위한네트워크에서는일반적으로사용되지않는다. OTP 생성기는버튼을누르면 6자리의패스워드가나오는방식, 매 1분마다자동으로서로다른 6자리의패스워드가나오는시간동기방식, 키패드에 4자리비밀번호를입력하면 6자리패스워드를보여주는방식등이있다. 형태로는소형단말기모양의토큰형과신용카드모양의카드형이사용되고있으며, 최근에는휴대폰의범용가입자식별모듈 (USIM) 을기반으로하는모바일 OTP(MOTP) 의도입이추진되고있다. 국내에서는금융보안연구원 (Financial Security Agency) 에서운영하는 OTP통합인증센터가설립되어 2007년 6월부터서비스가시작되었다. 2008년개정된전자금융감독규정에의해 OTP는인터넷뱅킹, 모바일뱅킹, 텔레뱅킹등전자금융거래시보안카드를대체하는 1등급보 - 7 -
안매체로지정되었다. 개인이보안 1등급을유지해 1억원이체한도의고액거래를가능하게하려면 OTP 사용이필수적이며, 법인은보안 1등급이아닌경우인터넷을통해자금이체를할수없다. 2011년 6월말현재 OTP 이용자수는 511만227명이며, 은행 19개, 증권 37개, 기타 6개사등총 62개금융회사가참여하고있다. - 알고리즘소스코드 #include <stdio.h> #include <stdlib.h> #incllude <time.h> int main(void) { int i, j random[6]; srand( (unsigned) time(null)); for( i = 0; I <= 5; I++) { random[i] = (rand() % 10); for (j=0; j < i; j++) { if(random[i] == random[j]) { I--; break; } } } for(i=0;i<=5;i++) printf( %d, random[i]); return 0; - 8 -
Ⅱ- 3) 학습프로그램 Ⅱ- 3-1. 학습프로그램구성 < 학습프로그램구성도 > - EQS (Example Question System) 연습문제프로그램 객관식과주관식문제 문제랜덤생성 - RQS (Real Question System) 실전문제프로그램 문제는가상실습문제와단답형필기문제로구성 문제은행에서 10문제를랜덤으로추출 문제를맞출때까지다음 Run-level로올라갈수없음 문제풀이중종료시현재 level이자동저장 재접속시, 이어가기또는새로풀기가능 Ⅱ- 3-2. 가상실습환경구축시스템공격및취약점에대한대응책과해결책을실습을통하여익히고, 실전에대비할수있도록가상실습환경을구축. 메인시스템에서 ssh를통해각각의가상실습환경으로접속하여문제를풀수있습니다. 가상실습환경을각문제당구축하여실습문제를풀다시스템오류시 OS에치명적인손상이가할수도있기때문에각문제당실습환경을따로구축하였습니다. - 9 -
< 가상실습환경구성도 > Ⅱ- 3-3. 문제를무작위로출력하는알고리즘 echo " " >> /S3_graduation/temp/$user.temp while [ $listcnt -le "11" ] do if [ $listcnt -le "8" ] then list=`cat /S3_graduation/temp/$user.temp cut -f$listcnt -d'/'` sh /S3_graduation/Question/$list echo -n ":$listcnt" >> /S3_graduation/temp/$user.temp 2> /dev/nul # 문제가 1 번 ~ 10 번까지... 저장하는것. else listcnt=`expr $listcnt + 1` list=`cat /S3_graduation/temp/$user.temp cut -f$listcnt -d'/'` sh /S3_graduation/RQS/$list echo -n ":$listcnt" >> /S3_graduation/temp/$user.temp 2> /dev/nul # 문제가 1 번 ~ 10 번까지... 저장하는것. listcnt=`expr $listcnt + 1` - 10 -
fi done clear echo " *-------------------------------------------* " echo " 다음문제는없습니다." echo " 모든문제를푸셨습니다." echo " 수고하셨습니다. 축하합니다.!!!" echo " *-------------------------------------------* " rm -rf /S3_graduation/temp ############################################### save() { if [ -f /S3_graduation/temp/$user.temp ] then echo -n " 이전에풀던문제가있습니다. 이어서하시겠습니까? [y/n] : " read cntcnt case $cntcnt in y Y) loadcnt="${savecnt##*:}" listcnt=`expr $loadcnt + 1` # echo " " >> /S3_graduation/temp/$user.temp while [ $listcnt -le "11" ] do list=`cat /S3_graduation/temp/$user.temp cut -f$listcnt -d'/'` 2> /dev/nul sh /S3_graduation/Question/$list 2> /dev/nul /S3_graduation/temp/$user.save.temp 2> /dev/nul echo -n "/$list" >> /S3_graduation/temp/$user.temp 2> /dev/nul echo -n ":$listcnt" >> # 문제가 1 번 ~ 10 번까지... 저장하는것. done listcnt=`expr $listcnt + 1` - 11 -
clear echo " 다음문제는없습니다." echo " 모든문제를푸셨습니다." echo " 수고하셨습니다. 축하합니다.!!!" rm -rf /S3_graduation/temp ;; n N) esac new;; else new } fi user=`whoami` # 사용자의아이디를입력받기위한코드 savecnt=`cat /S3_graduation/temp/$user.temp` touch /S3_graduation/temp/$user.out # 종료를위한카운트 save rm -f /S3_graduation/temp/$user.out # 종료카운트삭제 Ⅱ- 4) 문제관리시스템 학습시스템내의 EQS(Example Question System) 와 RQS(Real Question System) 프로그램에서사용되는문제들을체계적으로관리하는시스템. 편리하게문제들을수정, 삭제, 조회할수있도록구성 - 12 -
Ⅲ. 결론 Ⅲ- 1) 결론및기대효과 - Linux 보안및시스템공격에대한기초적인전공지식습득 - Run-level 문제풀이를통한재미와흥미유도 - 가상실습환경에서직접시스템환경설정을통해시스템이해와실무능력향상 - 수업복습및과제등학습능력향상에도움 - 전공관련자격증취득을위한선테스트 Ⅲ- 2) 기타 참고문헌 [1] 이소문저 페도라리눅스 10, 2009 [2] 박성수저 리눅스서버관리실무바이블 3.0 上下, 2012 [3] 이수길저 클릭하세요리눅스쉘스크립트프로그래밍, 2003 [4] 우재남, 김태헌저 뇌를자극하는 Redhat Fedora: 리눅스서버 & 네트워크, 2005-13 -
발표 PPT 자료 - 14 -
- 15 -
- 16 -
- 17 -
- 18 -
vc vxcx c c11234454 v vcvvx - 19 -
- 20 -
- 21 -
- 22 -
- 23 -
- 24 -
- 25 -