시스템에서의로그의의미 - 시스템관리에있어서무엇보다중요한것이로그파일분석과관리임. 시스템에이상징후가발생을했을때, 시스템관리자가가장먼저확인해보는것이로그파일이며, 시스템이해킹을당했다고느낄때해킹흔적등을확인하기위해서제일먼저서버관리자는로그파일에의존하게됨. - 어디서 ( IP Address ), 누가 ( ID ), 어떻게 ( port ) 들어와서어떤작업을했는지를확인하려할때전적으로로그파일에의존하게됨. - 관리해야할로그파일의수와로그파일이어떤경로로남겨지는지에대해서는정확히알고있어야함. 1. 리눅스 (Unix) 형식의로그 1.1 각종로그저장위치 시스템별로그위치 적용시스템 /usr/adm 초기유닉스, BSD 계열 : HP-UX 9.X, SunOS 4.X /var/adm 최근유닉스, SVR 계열 : SUN Solaris, HP-UX20.X이후, IBM AIX /var/log 일부 BSD 계열 : BSD, FreeBSD, SUN Solaris, Linux /var/run 일부 Linux 계열 [ 표 1-01] 시스템별로그위치 1.2 로그파일종류와역할 1.2.1 demsg 설명 : 일반적인이벤트로그를볼수있는파일이다. 1.2.2 messages 시스템이부팅할때출력되었던메시지가로그로남겨진다. 보통커널부트 메시지로그라고한다. 사용되는명령어 : more, tail, head 설명 : 시스템의표준 ( 데몬, 커널 ) 에러관련메시지가기록되는파일로 syslogd 라는 데몬에의해설정된사항들이기록된다. 기본적으로루트권한자만이읽고쓸수 있다. 사용되는명령어 : more, tail, head 로그예 [root@www root]# cat /var/log/messages -- 생략 -- Feb 1 19:50:55 www 2 월 1 19:50:55 su(pam_unix)[32176]: session closed for user root => ( 설명 ) 시스템로그는 4 개의부분으로구성되어있다. 1. 날짜및시간
2. 메시시가발생한호스트네임 3. 메시지를발생한내부시스템이나응용프로그램의이름 4. 자체적으로발생한메시지, 보통콜론 (:) 으로구분된다. 1.2.3 lastlog 설명 : lastlog 는 wtmp 와같이 last 명령이나 lastlog 명령을통해서출력된다. 또각사용자가가장최근에로그인한시간과접속장소가기록되는로그파일로 사용자가시스템에로그인할때마다갱신된다. 이로그파일은 wtmp(x), utmp(x) 등사용자의관련된로그와병행하여분석해야한다. lastlog 도다양한로그출력이가능하다. lastlog : 모든계정에대한최근접속정보를확인할수있다. lastlog -u 계정명 : 특정계정명의최근접속정보를확인할수있다. ex) lastlog -t 일자 : 최근몇일까지의마지막접속정보를확인할수있다. ex) 사용자가시스템에다시로그인할때화면에표시되며 finger 을사용해서도 1.2.4 secure 알수있다. 설명 : 모든접속과관련하여언제어디서어떤서비스를사용했는지기록한다. 1.2.5 btmp 보통 login, tcp_wrappers, xinetd 관련로그들이남는다. 보안에관련된 로그파일로써 ssh 를통해누군가가침입할경우에도이곳에기록이남게되어 이곳에서해당 IP 를찾아차단을할수가있다. 사용되는명령어 : more, tail, head 설명 : 로그인을할때 5 번이상시도실패시이곳에기록한다. 1.2.6 wtmp > touch /var/log/btmp 설명 : 콘솔모드, telnet, ftp 로접속한기록과시스템을재부팅한기록, 접근지등 1.2.7 utmp 지금까지로그를기록한다.(log history) 사용되는명령어 : last last 명령은옵션을이용해서선별적인로그출력이가능하다. last 계졍명 : 계정명을입력하면사용자별로그정보를출력한다. ex) last -f 파일명 : 지난파일에대해서로그를점검하고싶으면 -f 옵션뒤에해당파일명을입력하면된다. ex) last -R : IP 를제외시킨로그정보를출력해준다. last -a : 로그정보를출력할때 IP 를뒤로배치해서출력해준다. last -d : 외부에서접속한정보와 reboot 정보만을출력해준다. 설명 : 유닉스시스템의기본로그중에하나로현재시스템에로그인한사용자의 상태를기록하는로그파일이다.. UTMP 로그는사용자이름, 터미널장치이름, 원격로그인시원격호스트이름, 사용자가로그인한시간등이기록된다. 바이너리형태로로그가저장되므로명령어를이용해야만로그의내용을 확인할수있는데 utmp 데몬에저장된로그를출력해주는명령어는 w, who,
1.2.8 xferlog users, whodo, finger 등이있다. 'w' 이라는현재로그인한사용자들의작업을보여주는명령이있는데이명령은 utmp 라는바이너리파일의기록을보여준다. 이파일의위치는 /var/run/utmp 이다. 설명 : ftp 로로그인하는사용자에대한로그를기록하는파일로서 /etc/ftpaccess 에 1.2.9 crom 그설정파일을가지면 ftp 의홈디렉토리는 /home/ftp 이다. 설명 : 시스템의정기적인작업을수행하는 cron 관련로그를기록하는파일이다. 1.2.10 maillog /etc/ 밑에있는파일들중 cron.hourly, cron.daily,, cron.weekly, cron.monthly 파일들은각각시간별, 일별, 주별, 월별로정기적으로운영체제에서자동으로 작업해야할것에대한작업을저장하고있으며지정한일시에실행이되며이들 작업을한후에는 /var/log/cron 파일에기록을남기게된다. 설명 : sendmail 의메일관련작업을기록한다. 1.2.11 boot 설명 : 부팅시에출력되는모든메시지를기록한다. 부팅시의에러등을확인할수있다. 1.2.12 sa 설명 : sysstat 라는패키지에의해기록되는로그파일들이위치하는디렉토리이다. 설명 : 1.3 로그관련데몬 1.3.1 로그데몬 설명 : 시스템과관련된대부분의로그는 syslogd 가하고추가로 klogd 라는데몬이있다. ㄱ. syslogd : 커널과여러가지시스템프로그램들은각종에러와경고메시지, 기타일반적인메시지들을출력한다. 이런메시지들을파일로기록하는데몬이다. ㄴ. klogd : 부팅후에부팅과관련된메시지를보려면 dmesg라는명령을친다. 이명령은실제 /var/log/dmesg라는파일의정보를가지고오는것이아니라, 시스템에는부팅과관련된메시지를포함하여커널관련메시지를담는약 8196bytes의버퍼크기를갖고메시지를기록하는데이메시지를기록하는데몬이 klogd이다. 1.3.2 관련파일 /etc/rc.d/init.d/syslog : 실행과관련된스크립트파일로실질적인실행파일이다. syslogd와 klogd 데몬을모두실행시켜준다. /etc/syslog.conf : syslog데몬의환경설정파일이다. /etc/sysconfig/syslog : syslogd 와 klogd의시작과관련된스크립트의환경파일이다. 1.4 로그파일관리 1.4.1 logrotate : /var/log 디렉토리안에있는많은로그파일은기존의파일에덧붙여지게되므로크기는계속커지게된다. 이를방지하기위해서로그파일을조각으로나눌수있는데, 이런작업을하는프로그램이 logrotate이다. 1.4.2 /etc/logrotate.conf : logrotate의설정파일로로그파일을조각으로나눌수있다.
* 기본설정 # see "man logrotate" for details # rotate log files weekly weekly // 아래에특별히명시하지않은로그파일에대해서는일주일 (weekly) 마다 //rotate 한다. # keep 4 weeks worth of backlogs rotate 4 // 최대 4번까지 rotate를허용한다. (logfile, logfile.1 ~ logfile.4 까지의로그 // 파일이생성된다. # send errors to root errors root // 에러가발생하면 root 사용자로메일을보낸다. # create new (empty) log files after rotating old ones create // rotata 한후에비어있는로그파일을생성한다. # uncomment this if you want your log files compressed #compress // 로그파일을압축하는옵션이다. 기본값은활성화되어있지않다. 용량문제가 // 크게되지않는다면압축을하지않는것이좋다. # RPM packages drop log rotation information into this directory include /etc/logrotate.d // 대부분 RPM패키지로설치되는데몬들은이디렉토리에로그 // 파일이생성된다. 이로그파일을 rotate 시킬수있도록하는 // 설정이다. # no packages own lastlog or wtmp -- we'll rotate them here // 아래에있는로그파일 (wtmp, lastlog) 은어떤패키지에의해서도설정되지않기때문에아래 // 에서따로설정한다. 다른로그파일들은 /etc/logrotate.d 내의파일들에서모두설정하고있 // 다. /var/log/wtmp { monthly create 0664 root utmp rotate 1 } // 한달마다 rotate 하며최대 1 회까지만 rotate 한다. 관련파일인 utmp 파일을생성한다. # system-specific logs may be configured here // 시스템에특별한로그들은여기에적는다. 예를들어 lastlog 에대해만들어보면 /var/log/lastlog { monthly rotate 3 } // 한달마다 rotate 하며최대 3 회까지 rotate 한다. 1.4.3 /etc/logrotate.d 디렉토리 : 각종응용프로그램의로그관리를위한디렉토리이다. 1.4.4 참고 이디렉토리내에응용프로그램의이름으로파일이설정되어있다. 리눅스서버에서 logrotate 은 /etc/cron.daily 디렉토리에 cron 작업으로등록되어 있어매일실행되도록설정되어있다. 1.4.5 로그파일삭제하는방법 /var/log/messages 파일크기가클때 --> 0 으로만드는법 cat /dev/null > /var/log/messages 처럼하면된다. 리눅스실시간으로로그보기 tail 명령어 Unix/Linux 어떤파일에서마지막라인을보고싶을때 tail 명령을쓴다..
[ 실시간으로로그보기 ] tail -f /opt/tomcat/log/output.log [ 마지막라인에서 50 번째라인까지보기 ] tail -50 [ 파일이름 ].txt [ 옵션 ] f : 파일의마지막 10 라인을실시간으로계속해서출력 F : 파일변동시실시간으로보여주되로그파일처럼특정시간이지난후파일이변하게되면새로운파일을오픈하여보여줌 ( 다시명령을실행할필요가없음 ) n : n 만큼의라인을출력 n+n : 마지막줄이아니라첫번째줄부터시작해 n 번째라인이후부터출력 --byte=n : n 바이트만큼의내용을출력 n 은숫자 반대로첫라인보고싶으면 head 명령을쓰자.. 2. 리눅스점검 2.1 리눅스버전확인 - #more /etc/issue ( cat /etc/issue) - #more /proc/version (cat /proc/version) 2.2 시스템하드웨어정보확인. ( /proc) - #more /proc/cpuinfo ( cpu 정보확인 ) - #more /proc/meminfo (memory 정보확인 ) - #more /proc/pci ( 하드웨어정보확인 ) 2.3 시스템로그확인. - #more /var/log/messages (#tail -f /var/log/messages) 시스템로그확인 - #more /var/log/secure (#tail -f /var/log/secure) Console 접속로그 ( 접속실패및접속성공 IP 확인 ) 예 ) 접속성공로그 Sep 5 15:27:24 test sshd[24780]: Could not reverse map address 211.187.90.4. Sep 5 15:27:24 test sshd[24780]: Accepted password for root from 211.187.90.4 port 1457 ssh2 - #more /var/log/boot.log 리눅스시스템설정셋팅값활성화확인 - #more dmesg 리눅스부팅메시지및디바이스확인. - #lastlog /etc/passwd 에등록된유저중최근접속한아이디확인 - #last more
마지막접속한유저확인 2.4 네트워크확인 - #ifconfig ( 현재설정된랜카드확인 ) - #netstat an more ( #netstat an more LISTEN ) 리눅스시스템에사용가능한포트확인 - #netstat an grep SYN_RECV SYN Flooding 공격여부가능성점검 - #mii-tool -v 네트웍크상태확인 [root@mapo log]# mii-tool -v eth0: negotiated 100baseTx-FD, link ok ( 속도 ) product info: vendor 00:08:18, model 22 rev 2 basic mode: autonegotiation enabled basic status: autonegotiation complete, link ok ( 네트워크링크상태 ) capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD eth1: no link product info: vendor 00:08:18, model 22 rev 2 basic mode: autonegotiation enabled basic status: no link capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control [root@mapo log]# - #tcpdump -i eth0 (eth1) Eth0 거처가는패킷헤드확인 - #tcpdump -i eth0 c 22 Eth0 에거처가는특정포트 (22) 대한패킷헤드확인 - # ping 해당아이피 ( 통신확인 ) 2.5. 시스템용량확인 - #df -h 각파티션용량확인 Fdisk -l 디스크파티션확인 2.6 cpu, memory 사용률확인 #top 3:58pm up 61 days, 19:03, 1 user, load average: 0.00, 0.00, 0.00 (uptime) ( 접속유저 ) 131 processes: 130 sleeping, 1 running, 0 zombie, 0 stopped CPU0 states: 0.0% user, 0.2% system, 0.0% nice, 99.3% idle (cpu 0 현재운용상태 ) CPU1 states: 0.0% user, 0.0% system, 0.0% nice, 100.0% idle (cpu 0 현재운용상태 ) Mem: 2064692K av, 2052536K used, 12156K free, 0K shrd, 56816K buff ( 실제메모리 ) Swap: 2097112K av, 5564K used, 2091548K free 1916536K cached
( 가상 swap 메모리 ) ( 사용량 ) ( 남은량 ) 2.7 swap 확인 #free total used free shared buffers cached Mem: 2064692 2052368 12324 0 56844 1916536 -/+ buffers/cache: 78988 1985704 Swap: 2097112 5564 2091548 2.8 processes 확인 #ps ef more 시스템에서운영중인프로세서확인. 2.9 hostname 변경 # vi /etc/sysconfig/network 파일내에 hostname 변경 #/etc/rc.d/init.d/network restart ( 변경후네트웍재부팅 ) 2.10. network ip 3 리눅스점검 [ 로그관리및분석 ] 로그파일실무가이드 3.1 로그파일의종류 - 리눅스의로그파일은기본적인로그파일만하더라도 10 여개가넘음. 보안툴 ( 예 tripwire, nmap ) 등을설치하고나면이들에관한로그파일들이새로생기게됨. - 로그이름 : 로그파일명 : 관련데몬 : 설명콘솔로그 : /dev/console : kernel : 콘솔에뿌려지는로그시스템로그 : /var/log/messages : syslogd : 리눅스커널로그및주된로그 TCPD로그 : /var/log/secure : xinetd : inetd 에의한로그메일로그 : /var/log/maillog : sendmail, popper : 메일로그 ( sendmail 에의한로그 ) 크론로그 : /var/log/cron : crond : crond 에의한로그부팅로그 : /var/log/boot.log : boot : 시스템부팅시의로그 FTP로그 : /var/log/xferlog : ftpd : ftp 로그웹로그 : /usr/local/apache/logs/access_log : httpd : 아파치 ( 웹서버 ) 로그네임서버로그 : /var/log/named.log : named : 네임서버 ( DNS ) 로그 - 기본적인로그들은 syslogd 에의해서제어가되며, syslogd 의설정파일인 /etc/syslog.conf 파일을수정함으로써이파일들의저장위치와저장파일명을변경할수도있음.
3.2 콘솔로그 ( /dev/console ) - 커널 ( kernel ) 에관련된내용을시스템콘솔에뿌려주는로그임 - messages 내용과일치하지는않지만시스템에관련된중요한내용들 ( 시스템풀, 다운등 ) 에대한로그를관리자에게알리고자함이목적이기때문에출력을파일로저장하는것이아니라장치명 (/dev/console) 을사용하여콘솔로로그를뿌려주게됨. 3.3 시스템로그 ( /var/log/messages ) - 이로그에기록되는내용은주로접속시의인증에관한것과메일에관한내용, 그리고시스템에관한변경사항등시스템에관한전반적인로그를기록하는파일임. - 시스템관리자에의해서가장소중하게다루어지는로그이기도함. - 이파일에기록되는내용을변경하고자한다면 /etc/syslog.conf 파일의내용에서수정을해주면됨. 3.4 TCPD 로그 ( /var/log/secure ) - xinetd 에의한로그파일. - xinetd 데몬의확인방법은 ps -ef grep xinetd 로확인이가능함. - 실행중인 xinetd 의 PID 저장파일은 /var/run/xinetd.pid 임 3.5 메일로그 ( /var/log/maillog ) - 로그파일의이름에서의미하는바와같이 senmail 이나 pop 등의실행에관한기록이남겨지게됨. - 메일을주고받을때에이로그파일에기록이됨. - 즉, smtp 와 pop 에관한로그라고말할수있음. 3.6 크론로그 ( /var/log/cron ) - 시스템의크론이작업한기록을보관하고있는파일. - 크론데몬인 crond 가언제어떤작업을수했는가를확인할수있음. 3.7 부팅로그 ( /var/log/boot.log ) - 시스템의데몬들이실행되거나재시작되었을때기록되는로그파일. 3.8 FTP 로그 ( /var/log/xferlog ) - ftp 나 ncftp 등의접속이이루어졌을때이로그파일에기록이됨. - 업로드한파일과다운로드한파일들에대한자세한기록도함께남겨짐. 3.9 웹로그 ( /usr/local/apache2/logs/access_log ) - 웹서버 ( 아파치 ) 에관한로그 3.10 syslogd 의설치 / 확인 / 제거 ( rpm ) - 리눅스시스템에설치되어있는 syslogd 의버전을확인하는방법 syslogd -v
- 리눅스시스템에설치되어있는리눅스패키지의구체적인패키지버전을확인하는방법 rpm -qf /etc/syslog.conf - 확인한리눅스패키지 (sysklogd-1.3.33-6) 에서설치되어있는파일들의내용을확인하는방법 rpm -ql sysklogd-1.3.33-6 - 새로운패키지로업그레이드하는방법 rpm -Uvh sysklogd-1.3.33-6 - rpm 패키지삭제하는방법 rpm -e sysklogd-1.3.33-6 3.11 syslogd( 시스템로그데몬 ) - 정식이름은 Linux system logging utilities 임. 리눅스시스템로그유틸리티 - 로그데몬 : /sbin/syslogd : 로그데몬의위치및데몬프로그램 - 로그데몬설정파일 : /etc/syslog.conf : 로그데몬의설정파일, 각종로그파일들의 설정및저장위치지정 - 로그데몬 PID 파일 : /var/run/syslogd.pid : syslogd 데몬의 PID 파일 - 로그데몬실행 : /etc/rc.d/init.d/syslog start : 로그데몬실행방법 - 로그데몬종료 : /etc/rc.d/init.d/syslog stop : 로그데몬종료방법 - 로그데몬재시작 : /etc/rc.d/init.d/syslog restart : 로그데몬재시작장법 3.12 로그데몬의실행흐름 - init 프로세스에의한 syslogd 실행 ( 재시작 ) 시스템이부팅되면서처음으로시작되며, 또는 /etc/rc.d/init.d/syslog start ( 재시작은 /etc/rc.d/init.d/syslog restart) 라는명령의수행으로 /sbin/syslogd 의데몬프로세스가수행이됨. - syslog.conf 읽음 /sbin/syslogd 데몬이실행이되면서 /etc/syslog.conf 파일을읽어들이게됨. /etc/syslog.conf 파일에는시스템에서사용하는대부분의로그파일들에관한설정이되어있음. - syslogd.pid 기록 /sbin/syslogd 도데몬 ( 일종의프로세스 ) 이므로이프로세스의실행번호 ( Process ID : PID ) 를 /var/run/syslogd.pid 에기록함. - syslog.conf 에기록된각각의로그파일들의기록을시작 /sbin/syslogd 의실행과함께 syslog.conf 파일에설정되어있는각각의로그파일들 ( messages, secure, maillog 등 ) 이기록되기시작함 - logrotate 에의한각 log 파일들관리시스템에서발생되는모든이벤트에대한기록들이각각의로그파일에저장이되고있으므로이들로그파일에대한 logrotate 작업이필요함. 4 각종명령어사용법
4.1 Find 명령어 4.1.1 기능 원하는특정파일을디렉토리를탐색하여찾는다. find 는매우강력한도구로지정된조건에만족하는 파일을찾는다. 파일의조건은이름이나크기, 날짜등다양하게지정할수있다. 4.1.2 문법 # find [ 경로 ] 탐색조건 4.1.3 옵션 -type pattern 형식이 pattern 인것. b : block device file, c: character device file, d: directory p : named pipe, f: regular file, l:symbolic link, s:socket -name 파일명파일명으로검색 -size 크기로검색 -exec 명령 {}\; 검색된결과에대해서지정한명령을적용 -user 사용자명사용자명소유의파일을검색 -amin n n 분이전에접근한파일 -atime n n*24 시간이전에접근한파일 -ctime n n*24 시간이전에파일의상태가변경된파일 -mtime n n*24 시간이전에파일의내용이변경된파일 -empty 크기가 0 인일반파일또는디렉토리 -name 파일명 : 찾고자하는파일의이름을정한다. 와일드카드도가능하다. -perm 모드 : 파일권한 (permission) 이일치되는것을찾는다. 원하는권한은 ls 로볼수있는 형태와같이지정한다. -links : 특정개수의링크를가진파일을찾는다. 물음표부분에링크의숫자를표기한다. -size : 파일의크기가일치하는것을탐색한다. 파일크기는블록단위로물음표부분에지정한다. 한블록은 512 바이트로내정되어있지만블록숫자뒤에단위로 k 자를붙이면 1 키로바이트 크기의블록숫자로간주된다. -user 사용자 : 파일사용자의 ID 에따라서검색한다. 로그인이름이나번호모두가가능하다. -exec 명령 : 원하는검색조건에맞는파일을찾으면명시된명령을실행한다. 명령의끝은 \; 을 사용하여끝낸다. find 가검색해낸파일의이름을인수로사용하고싶다면그위치에 {} 를사용한다. -newer 파일 : 어떤파일보다최근에갱신된모든파일을검색한다. 4.1.4 사용방법및정보 단순한파일을찾는것은물론, 다양한조건 ( 파일모드, 파일타입, 크기, 시간등 ) 을이용하여 원하는파일들을찾을수있다. 가 ) /home 디렉토리아래의파일들중디렉토리파일을검색 <shell> [root@sense ~]# find /home -type d /home /home/lebowski /home/mysql /home/linuxone </shell> 나 ) 홈디렉토리아래에서크기가 5096kb 이상인파일을찾아자세한정보 (ls?l) 을출력한다.
<shell> [root@sense ~]# find ~ -size +5096k -exec ls -l {} \; -rw-r--r-- 1 root root 669319168 Mar 11 17:10 /root/valhalla-i386-disc2.iso -rw-r--r-- 1 root root 5563716 Feb 28 11:21 /root/.mozilla/firefox/kazb7qu2.default/cache/d0709ed3d01 -rw-r--r-- 1 root root 596164608 Mar 5 17:01 /root/images/nuxone/nuxone_v2.1_rpms_cd1.iso </shell> 다 ) /usr 디렉토리내에서지난 24 시간동안사용되었던확장명이 jpg 인모든파일을찾아그내용을 자세히출력시켜준다. [root@sense ~]# find /usr -name *.jpg -atime -1 -exec ls?l {} \; 라 ) dev 디렉토리내에빈파일들을찾는다. [root@sense ~]# find /dev -type f -empty 4.1.5 Webshell File 찾기 가 ) Webshell 은웹을통해서버에대한명령어실행이가능한쉘을말한다. 이는관리자들이원활한관리를위해이용되었던것이지만, 현재는웹해킹의도구로 많이사용되고있다. 많은사이트가웹쉘을통해공격을당하고있으며, 또한이미해킹을당한사이트도 많이존재한다. 이에웹서버담당자분들은담당웹서버에 webshell 이존재하는지점검을 하시기바란다. 나 ) find 패턴파일형식 (*, *.asp, *.htm 등 ) find./ -name [ 파일형식 ] xargs grep [ 패턴 ] more 예 ) find / -name *.jsp xargs grep "Runtime.getRuntime()" more 예 ) find / -name *.asp xargs grep "Request.ServerVariables" more 예 ) find / -name *.php xargs grep "passthru" more 다 ) 언어별패턴 JSP 파일 request.getparameter Runtime.getRuntime() exec( ASP 파일 Request.ServerVariables Server.CreateObject SHELL PHP 파일 passthru system exec shell 4.2 특정날짜결과찾는명령어 #touch -t 201310300000 start.txt --> 2013 년 10 월 30 일 0 시날짜를갖는파일생성 #touch -t 201310310000 end.txt --> 2013 년 10 월 31 일 0 시날짜를갖는파일생성 #find / -newer start.txt -a! -newer end.txt -ls > result.txt --> '-a!' 옵션은 and not 과같은의미로 start 파일의수정시간보다최근이고 end 파일의수정시간보다최근이아닌, 즉두시간사이에생성 / 수정된파일을찾으라는의미이며결과를 result.txt 로저장리눅스압축
tar -zcvf result.tar.gz./* 문자열검색 egrep -r "xxxxx"./* 5. 윈도우이벤트로그분석방법 5.1 이벤트로그의이해 Windows 시스템에서는시스템의로그가이벤트로그형식으로관리되며, 이벤트로그를확인하기위해서는 Windows의이벤트뷰어를이용해야한다. 이벤트뷰어를이용한개별이벤트확인방법은다음과같다 기본이벤트로그가저장되는경로는 C:\Windows\System32\winevt\Logs 이다 이벤트로그를확인하기위해서는이벤트뷰어를사용하며위치는 [ 시작 ] [ 제어판 ] [ 관리도구 ] [ 이벤트뷰어 ] 를선택하면볼수있다. 5.2 이벤트뷰어 Windows 로그종류 Windows 시스템은응용프로그램로그, 보안로그, 시스템로그와같은 3 가지로그를 이벤트로기록하며, OS 의구성에따라로그의종류가추가될수도있다.
로그종류 응용프로그램로그 보안로그 시스템로그 설명 응용프로그램로그에는응용프로그램이나프로그램에서기록한이벤트가포함됩니다. 예를들어데이터베이스프로그램에서응용프로그램로그에파일오류를기록할수있습니다. 로그할이벤트는응용프로그램개발자가결정합니다. 보안로그에는파일이나다른개체만들기, 열기또는삭제등의리소스사용과관련된이벤트뿐만아니라올바른로그온시도및잘못된로그온시도와같은이벤트가기록됩니다. 예를들어로그온감사를사용하는경우시스템에로그온하려는시도가보안로그에기록됩니다. 시스템로그에는 Windows 시스템구성요소에서기록한이벤트가포함됩니다. 예를들어시스템을시작하는동안드라이버나다른시스템구성요소의로드에실패하면시스템로그에기록됩니다. 시스템구성요소가기록하는이벤트유형은서버에의해미리정해져있습니다 각이벤트로그에는헤더정보와이벤트설명을포함한다. 이러한이벤트로그의저장위치와로그의크기는해당이벤트로그등록정보에서확인할수있는데, 최대로그크기에도달할때 에대한설정부분을잘확인해봐야한다. 필요한경우이벤트덮어쓰기 는주요로그를확인하지못했는데삭제할수있게된다. 정기적으로로그를확인하는경우라면별문제가되지않는다. 다음보다오래된이벤트덮어쓰기 로설정하는경우에는해당일자안에로그를확인해야한다. 이벤트덮어쓰지않음 으로설정할때에도최대로그크기가다차기전에기존로그를삭제해야한다. 주요한시스템의경우주로수동으로로그지우기를선택하게되는데혹시주요로그를덮어쓰거나하는문제가발생하지않도록하기위해서 [ 로컬보안설정 ] [ 로컬정책 ] [ 보안옵션 ] [ 감사 : 보안감사를로그할수없는경우즉시시스템종료 ] 기능을같이설정하는것이바람직하다. 이렇게설정해두면로그가찾을때시스템이종료되므로로그를놓치지않게된다. 하지만이를악용하여일부러시스템에로그를꽉차게하는 DoS공격을시도하여시스템을종료시키기도하므로주의해야한다.
로그를미리확인하지못했을경우에는백업이필요할수있다. 백업을받고자할때는기본이벤트로그중백업받을로그를선택하고오른쪽마우스버튼을눌러 다른이름으로로그파일저장 을선택항 evt파일로저장한다. 추후확인할때는다시이벤트뷰어를이용하여볼수있다. 그리고확인후필요없는로그는마지막으로해당로그의오른쪽마우스버튼을눌러 모든이벤트지우기 를선택하면모두삭제된다. 5.3 감사정책윈도우감사정책은곧로그정책이라고할수있다. 감사설정을구성하지않으면보안과관련하여어떠한일이발생했는지파악하기어렵거나전혀파악할수없다. 그러나구성된감사설정에서이벤트를생성하는허가된작업이너무많으면보안이벤트로그가불필요한데이터로꽉차게된다. 또한많은수의개체에대해감사설정을구성하면전체컴퓨터성능에도영향을줄수있다. 합법적인사용자가자신의작업실에책임을지고허가되지않은작업을실행하는것을추적할수있도록조직에있는모든컴퓨터에서적합한감사정책설정을사용해야한다. [ 관리도구 ] [ 로컬보안설정 ] [ 로컬정책 ] [ 감사정책 ] 에서 9개의세부감사정책을볼수있다. 각감사설정의옵션은성공과실패그리고감사없음이있다. 성공은요청한작업이성공할때감사항목이생성되고실패는요청된작업이실패할때감사항목이생성된다. 감사없음은관련작업에대해감사항목이생성되지않게설정한것이다. 5.3.1 개체엑세스감사가 ) 파일, 폴더, 레지스트리키, 프린터등개체에대한엑세스하는사용자의이벤트를감사할지여부를결정한다. 나 ) 성공감사는사용자가개체의성공적으로엑세스하면감사항목을생성하고실패감사는사용자가개체에엑세스하지못할때감사항목을생성한다. 다 ) 개체엑세스감사를실행하면이벤트뷰어의보안로그에관련로그가남게되는데세부적인사항은로그의이벤트ID로확인할수있다. 개체엑세스감사의주요이벤트로그
이벤트 ID 내용 기타 560 개체에접근허가 562 개체에대한핸들닫힘 - 이벤트의종료 563 삭제할목적으로개체에접근 564 보호된개체의삭제 5.3.2 계정관리감사 가 ) 컴퓨터의각계정관리이벤트를감사할지여부를결정한다. 나 ) 계정관리이벤트의예로는사용자계정또는그룹을만들거나변경하거나삭제 하는경우, 사용자계정의이름을바꾸거나사용자계정을사용또는사용하지 않는경우, 암호를설정하거나변경하는경우등이해당된다. 계정관리감사의주요이벤트로그 이벤트 ID 내용 기타 624 사용자계정만듬 625 사용자계정유형변경 626 사용할수있는사용자계정 627 암호변경시도 628 사용자계정암호설정 629 사용하지않는사용자계정 630 삭제된사용자계정 636 보안사용로컬그룹구성원추가 637 보안사용로컬그룹구성원제거 642 변경된사용자계정 643 변경된도메인정책 644 사용자계정잠김 5.3.3 계정로그온이벤트검사 가 ) 계정유효성을검사하는컴퓨터가아닌다른컴퓨터에서각사용자로그온또는 로그오프했는지에대한감사여부를결정한다. 나 ) 성공감사의경우로그온한사용자및로그온컴퓨터를확인할수있는회계및 사후법적절차용의유용한정보가되고, 실패감사는계정로그온시도가실패할때 감사항목을생성하며, 이항목은침입감지에유용하게사용할수있다. 계정로그온이벤트감사의주요이벤트로그 이벤트 ID 내용 기타 680 로그인성공정보 681 로그인실패정보 5.3.4 권한사용감사 가 ) 권한을사용하는사용자의각인스턴스 ( 객체 ) 를검사할이지여부를결정한다.
나 ) 성공이나실패에대해서설정하게되면많은양의로그를생성하는점에유의해서 결정해야한다. 권한사용감사의주요이벤트로그 이벤트 ID 내용 기타 576 권한의할당 577 권한이있는서비스호출 578 권한이있는개체작동 5.3.5 로그인이벤트감사 가 ) 감사이벤트를기록하는컴퓨터에대한사용자로그온, 로그오프또는네트워크 연결의각인스턴스를감사할지여부를결정한다. 나 ) 성공감사는로그온시도가성공할때감사항목을생성한다. 이감사항목은로그온 한사용자및로그온컴퓨터를활인할수있으며회계및사후법적절차를위한 유용한정보이다. 실패감사는로그온시도가실패할때감사항목을생성하며이 항목은침입감지에유용하게사용할수있다. 다 ) 계정로그온이벤트감사보다상세한로깅을제공한다. 로그인이벤트감사의주요이벤트로그 이벤트 ID 내용 기타 528 성공적인로그인 529 알수없는계정이나잘못된암호를이용한로그인시도 530 로그인시허용시간이내에로그인실패 531 사용이금지된계정을이용한로그인시도 532 사용기간이만료된계정을이용한로그인시도 533 로그인이허용되지않은계정을이용한로그인시도 534 허용되지않은로그인유형을통한로그인시도 535 암호사용기간의만료 537 위의사항에해당되지않으나로그인실패인경우 538 로그오프 539 로그인하려는계정이잠겨있음, 패스워드크래킹공격가능 540 로그인성공 5.3.6 정책변경감사 가 ) 모든사용자권한할당정책, Windows 방화벽정책, 감사정책또는신뢰정책변경 사항을감사할지여부를결정한다. 정책변경감사의주요이벤트로그
이벤트 ID 내용 기타 576 권한의할당 577 권한이있는서비스호출 578 권한이이TSms 개체작동 5.3.7 프로세스추적감사 가 ) 프로그램활성화, 프로세스종료, 간접적개체엑세스등의이벤트에대한자세한 추적정보를감사할지여부를결정한다. 나 ) 프로세스추적감사설정을사용하면많은이벤트가생성된다. 이정책설정은보통 감사안함으로구성된다. 그러나이정책설정에의해생성되는정보는시작된프로 세스및프로세스가시작된시기에대한자세한로그를제공하므로문제상황대처 시매우유용하게사용할수있다. 프로세스추적감사의주요이벤트로그 이벤트 ID 내용 기타 592 새프로세스생성 593 프로세스종료 594 개체에대한힌트의중복 595 개체애대한간접적인접근 5.3.8 시스템이벤트감사 가 ) 사용자가컴퓨터를다시시작하거나종료할경우또는컴퓨터보안이나보안로그에 영향을주는이벤트가발생할경우이를감사할지여부를결정한다. 나 ) 시스템이벤트에대해성공및실패감사를모두사용하는경우추가로기록되는 이벤트가거의없으며이러한이벤트는매우중요하기때문에조직의모든컴퓨터에 대해이정책설정을 [ 사용 ] 으로구성해야한다. 시스템이벤트감사의주요이벤트로그 이벤트 ID 내용 기타 512 윈도우시동 513 윈도우종료 514 LSA ( Local Security Authentication) 인증패키지로드 515 신뢰할수있는로그인프로세스가 LSA로등록 516 저장공간의부족으로인해보안이벤트메시지손실 517 보안로그삭제 5.4 이벤트를해석하는방법각로그항목은종류별로분류되며여기에는헤더정보와이벤트설명이들어있습니다. 5.4.1 이벤트헤더이벤트헤더에는다음과같은이벤트정보가포함됩니다.
명칭 날짜 이벤트가발생한날짜입니다. 시간 이벤트가발생한시간입니다. 사용자 이벤트가발생했을때로그온되어있는사용자의이름입니다. 컴퓨터 이벤트가발생한컴퓨터이름입니다. 이벤트 ID 이벤트종류를식별하는이벤트번호입니다. 이벤트 ID는제품지원담당자가시스템에어떤일이발생했는지이해하는데사용할수있습니다. 원본 이벤트의원본입니다. 프로그램, 시스템구성요소또는큰프로그램의개별구성요소에대한이름이될수있습니다. 종류 이벤트종류입니다. 오류, 경고, 정보, 성공감사또는실패감사중하나가될수있습니다. 범주 이벤트원본에따른이벤트분류이며보안로그에주로사용됩니다. 이벤트종류 기록되는각이벤트에대한설명은해당이벤트종류에따라달라집니다. 로그의각이벤트는다음종류중하나로분류할수있습니다 응용프로그램, 드라이버또는서비스와같은작업의성공적인작동을 정보 설명하는이벤트입니다. 예를들어, 네트워크드라이버가성공적으로로 드된경우정보이벤트가기록됩니다. 매우중요하지는않지만앞으로문제가발생할수있는가능성이있음을 경고 나타내는이벤트입니다. 예를들어, 디스크공간이부족해지기시작하면 경고메시지가기록됩니다. 중요한작업의실패와같이중요한문제를설명하는이벤트입니다. 오류 오류 이벤트는데이터손실이나기능손실을수반할수있습니다. 예를들어, 시작하는동안서비스가로드되지않으면오류이벤트가기록됩니다. 성공감사 ( 보안로그 ) 보안이벤트의성공적인감사완료를설명하는이벤트입니다. 예를들어, 사용자가컴퓨터에로그온하면성공감사이벤트가기록됩니다 보안이벤트감사가성공적으로완료되지않았음을설명하는이벤트입니실패감사다. 예를들어, 사용자가네트워크드라이브에액세스할수없을때실 ( 보안로그 ) 패감사가기록됩니다. 설명 5.5 로그에서이벤트를찾는방법 이벤트로그의기본보기에는모든항목이나열됩니다. 특정이벤트를찾거나이벤트의 하위집합을보려면로그를검색하거나로그데이터에필터를적용할수있습니다. 5.6 특정로그이벤트를검색하는방법특정로그이벤트를검색하려면다음과같이하십시오. 5.6.1. 시작을누른다음제어판을누릅니다. 성능및유지관리를누르고관리도구를누른다음컴퓨터관리를두번누릅니다. 또는이벤트뷰어스냅인이있는 MMC를엽니다. 5.6.2. 콘솔트리에서이벤트뷰어를확장한다음보려는이벤트가들어있는로그를누릅니다. 5.6.3 보기메뉴에서찾기를누릅니다. 5.6.4 찾기대화상자에서보려는이벤트에대해옵션을지정한후다음찾기를누릅니다. 검색기준과일치하는이벤트가세부정보창에강조표시됩니다. 다음찾기를눌러검색기준으로정의된다음이벤트를찾습니다. 5.7 로그이벤트를필터링하는방법 로그이벤트를필터링하려면다음과같이하십시오.
5.7.1 시작을누른다음제어판을누릅니다. 성능및유지관리를누르고관리도구를누른다음컴퓨터관리를두번누릅니다. 또는이벤트뷰어스냅인이있는 MMC를엽니다. 5.7.2 콘솔트리에서이벤트뷰어를확장한다음보려는이벤트가들어있는로그를누릅니다. 5.7.3 보기메뉴에서필터를누릅니다. 5.7.4 필터탭이선택되어있지않으면이탭을누릅니다. 5.7.5 원하는필터옵션을지정한다음확인을누릅니다. 세부정보창에필터기준과일치하는이벤트만표시됩니다. 모든로그항목을표시하도록보기를되돌리려면보기메뉴에서필터를누른다음기본값복원을누릅니다. 5.8 로그내용을관리하는방법기본적으로로그의초기최대크기는 512KB 로설정되며이크기에도달하면새이벤트가기존이벤트를덮어씁니다. 필요에따라이설정을변경하거나로그내용을지울수있습니다. 로그크기와덮어쓰기옵션을설정하는방법로그크기와덮어쓰기옵션을지정하려면다음과같이하십시오. 5.8.1 시작을누른다음제어판을누릅니다. 성능및유지관리를누르고관리도구를누른다음컴퓨터관리를두번누릅니다. 또는이벤트뷰어스냅인이있는 MMC를엽니다. 5.8.2 콘솔트리에서이벤트뷰어를확장하고크기와덮어쓰기옵션을설정할로그를마우스오른쪽단추로누릅니다. 5.8.3 로그크기에서최대로그크기상자에원하는크기를입력합니다. 5.8.4 최대로그크기에도달할때 : 에서원하는덮어쓰기옵션을누릅니다. 5.8.5 로그내용을지우려면로그지우기를누릅니다. 5.8.6 확인을누릅니다. 5.9 로그를보관하는방법로그데이터를저장하려는경우다음형식중하나로이벤트로그를보관할수있습니다. 로그파일형식 (.evt) 텍스트파일형식 (.txt) 쉼표구분텍스트파일형식 (.csv) 로그를보관하려면다음과같이하십시오. 5.9.1 시작을누른다음제어판을누릅니다. 성능및유지관리를누르고관리도구를누른다음컴퓨터관리를두번누릅니다. 또는이벤트뷰어스냅인이있는 MMC를엽니다. 5.9.2 콘솔트리에서이벤트뷰어를확장하고보관할로그를마우스오른쪽단추로누른다음다른이름으로로그파일저장을누릅니다. 5.9.3 파일을저장할위치와파일이름을지정합니다. 파일형식 : 상자에서원하는형식을누른다음저장을누릅니다. 지정한형식으로로그파일이저장됩니다.