[로그 관리 및 분석] 로그구성 및 모니터링하기

1. tcpd 로그기록 파일 모니터링

– telnet 이나 ftp 또는 ssh 등으로 23번포트, 21번포트, 22번포트등을 타고 들어오는 접속에 관련된 로그가 가장 민감함.

– 이들 로그에 관한 기록을 하는 파일이 /etc/syslog.conf 파일에 설정된 것 처럼 /var/log/secure 임.

– 이들에 관한 로그를 계속적으로 모니터링하고자 한다면, ” tail -f /var/log/secure ” 라고 하면 됨

– tail -f /var/log/secure

2. 시스템로그 모니터링

– 시스템에 관련된 중요한 이벤트들은 모두 /var/log/messages 에 남겨지게 됨.

– /var/log/secure 파일처럼 계속적으로 모니터링을 하려면 ” tail -f /var/log/messages ” 라고 하면 됨.

– tail -f /var/log/messages

3. 메일관련 로그 모니터링

– sendmail  이나 pop( qpopper ) 등으로 인하여 메일경유 또는 메일송수신에 관련된 기록은 /var/log/maillog 파일에 기록을 하게 됨.

– 메일관련로그파일을 모니터링하려면 ” tail -f /var/log/maillog ” 라고 하면 됨.

– tail -f /var/log/maillog

4. 부팅시의 메시지 확인

– 부팅시의 에러나 부팅시 장애등을 확인해 보려면 부팅로그( /var/log/boot.log ) 파일을 살펴보면 됨.

– 하지만, 실제로 부팅시의 메시지( 로그기록 ) 를 확인할 때에는 대부분 /var/log/dmesg 라는 파일을 살펴보는 것이 일반적이며, 이 파일( /var/log/dmesg ) 의 내용을 확인하는 명령어가 /bin/dmesg 에 존재함.

– dmesg

5. cron 모니터링

– 시스템에는 크론( crond ) 에 관한 로그를 기록하는 파일이 존재하며 /var/log/cron 에 존재함.

– crond 는 시스템에 정기적으로 실행되는 것에 대한 설정을 가지고 지정된 시각에 실행을 하게되는 데몬임.

– 즉, crond 는 /usr/sbin/crond 이며, 이 데몬에서 남겨지는 로그기록 파일은 /var/log/cron 임.

– 모니터링하는 방법은 ” tail -f /var/log/cron ” 으로 하면 됨.

– tail -f /var/log/cron

[로그 관리 및 분석] Webalizer 를 이용한 멀티웹로그 자동 분석법

1. Webalizer 의 소개와 특징

– C 언어로 개발되었기 때문에 실행속도가 굉장히 빠름.

– 특히, 한국어를 지원한다는 점에 굉장한 매력이 있음.

– Webalizer 는 C 로 개발되었지만 그 소스를 공개하고 있음.

– 분석대상이 되는 소스파일의 크기에 제한이 없음.

2. Webalizer 설치하기

– Webalizer 를 다운받을 수 있는 곳.
http://www.mrunix.net/webalizer/
http://www.webalizer.com

3. 웹로그 분석을 위한 Webalizer 환경구성

– Webalizer 설치 위치 : /usr/local/webalizer

– 환경설정파일 디렉토리 : /usr/local/webalizer/conf/개별도메인.conf ( 없으면 만들어줘야 한다 )

– 실행 쉘스크립트 파일 : /usr/local/webalizer/bin/webalizer.sh

– 이 두개의 파일은 모두 직접 만들어 주어야 함. webalizer.conf 파일에는 분석대상이 되는 모든 웹사이트의 웹로그분석을 위한 설정파일들이 ” 도메인.conf ” 라는 파일이름으로 각각 한개씩 생성해야 함.

– /usr/local/webalizer/bin 에 생성되는 webalizer.sh 파일 또한 직접 만들어 주어야 함. 이 파일에는 개별 conf 파일들을 하나씩 분석하기 위한 실행명령들이 들어가게 됨.

4. Webalizer 의 실행설정파일 만들기

– /usr/local/webalizer/conf 디렉토리에 분석하고자하는 대상 도메인의 설정파일( *.conf ) 파일을 만들어 주어야 함.

– Webalizer 설치하고 나면 ” make install ” 과정에서 샘플설정파일( webalizer.conf.sample ) 이 /etc/ 디렉토리내에 생성됨. 이 샘플파일을 도메인데 하나씩 복사해 오면 됨.

– cp /etc/webalizer.conf.sample stkim.com.conf

– 복사해온 샘플파일의 내용을 개별 도메인의 환경에 맞게 수정해 주어야 함.

– LogFile : 로그파일 위치( 예 : /home/stkim/www_log/access_log )

– OutputDir : 분석결과 저장위치( 예 : /home/stkim/www/weblog )

– HistoryName : 사이트명( 예 : stkim.com )

– ReportTitle : 분석결과 페이지 이름( 예 : STKIM.COM WebSite )

– HostName : 호스트명 FQDN 형식( 예 : www.stkim.com )

5. Webalizer 의 실행파일 생성하기

– Webalizer 의 실행파일 webalizer.sh 는 설치후에 생성되는 것이 아니며 멀티웹로그분석을 위해 직접 생성해야 함.

– vi webalizer.sh
/usr/local/bin/webalizer -c /usr/local/webalizer/conf/stkim.com.conf

– 위치는 /usr/local/webalizer 이며 이 위치에 webalizer.sh 라는 실행파일이 생성.

6. 자동분석 설정을 위한 cron 설정하기

– crontab -e

– 00 03 * * * su – root -c ‘/usr/local/webalizer/bin/webalizer.sh’

[로그 관리 및 분석] 로그파일 관리( logrotate )

1. logrotate

– logrotate 는 시스템에 있는 모든 로그파일들을 관리할 수 있으며 이들 로그파일들을 자리고( rotate ), 보관하고, 삭제하고, 압축하고, 메일로 보내주는 등의 작업을 할 수 있게 함.

– logrotate 를 이용하여 리눅스서버에서 기록되는 로그파일에 대하여 여러 가지 작업을 자동화 할 수 있음.

– 특정날짜 또는 특정용량이상이 되었을 때 로그파일을 로테이트( 교체 ) 한다. ( size )

– 로테이트작업 직전과 직후에 특정작업을 수행할 수 있다.( prerotste / endscript, postrotate / endscript )

– 로테이트 작업을 하면서 압축을 하거나 하지않을 수 있다.( compress, nocompress )

– 로테이트 후에 보관할 파일의 수를 지정할 수 있다.( rotate )

– 로테이트 후에 생성되는 파일의 소유주와 퍼미션등을 설정할 수 있다.( create )

– 로테이트 후에 생성되는 파일의 확장자를 임의로 지정할 수 있다.( extension )

2. logrotate 파일구성

– logrotate 는 리눅스가 설치되면서 대부분 패키지형태로 기본 설치가 됨.

– 데몬( 위치 ) : /usr/sbin/logrotate : 데몬의 위치 및 데몬프로그램

– 데몬설정파일 : /etc/logrotate.conf : 설정파일

– 설정디렉토리 : /etc/logrotate.d : logrotate 에 적용할 각종로그파일들을 보관하는 디렉토리

– 상황파일 : /var/lib/logrotate.status : logrotate 한 작업내역을 보관할 파일

– cron( 일단위 ) : /etc/cron.daily/logrotate : logrotate 는 주기적으로 실행이 되어야 하므로 cron 에 의해 일단위로 실행이 됨.

– /usr/sbin/logrotate 는 logrotate 의 데몬프로그램임. crond 에 의해 주기적으로 실행이 됨.

– /etc/logrotate.conf 파일은 logrotate 가 실행이 되면서 읽어들인 후 각각의 로그파일들을 이 파일의 설정에 의하여 자르거나( rotate ), 삭제하거나, 압축을 하게 됨.

– /etc/logrotate.d 파일은 각각의 로그파일들에 대한 개별적인 설정파일들이 존재하는 디렉토리이며, 추가로 적용할 로그파일에 대한 설정을 여기서 하면 됨.

– /etc/cron.daily/logrotate 파일은 주기적으로 실행이 될 logrotate 를 cron 에 넣어둔 것.

3. logrotate.conf 샘플

– /var/log/messages : 대상로그파일, 즉, logrotate 에 의해서 작업될 로그파일( messages ) 을 절대패스로 지정해둔 것. 그 다음의  ” { ” 부터 ” } ” 까지는 이 로그파일에 대한 개별적인 설정이 됨.

– monthly : 대상로그파일( /var/log/messages ) 을 순환시킬 주기이며, monthly 이므로 한달에 한번씩 이 파일이 순환( rotate )되게 됨. 순환주기에는 daily, weekly, monthly 등이 있음.

– compress : 순환( rotate ) 된 파일이  gzip 에 의해서 압축이 됨. 반대의 옵션은 nocompress 이며 압축을 하지 않게 됨.( 순환되어 새로 생성되어 저장되고 있는 로그파일은 압축이 되지 않음.)

– rotate 2 : 순환되는 파일갯수를 지정함. 0 부터 시작하게됨.

– mail : 순환되어 지정된 갯수를 넘게되는 로그파일은 지정된 메일주소로 메일이 보내지게 됨. 메일을 보내지 않으려면 nomail 이라고 하면 됨.

– errors : 지정된 log 파일의 logrotate 작업시에 에러가 발생을 하면 지정된 메일주소로 메일을 발송하게 됨.

– postrotate / endscript :지정된 로그파일에 logrotate 작업이 끝이 난 이후에 실행할 작업을 설정해 둔 것. 대부분 이 부분에 설정되는 작업은 rotate 된 로그파일의 데몬을 재시작시키는 작업임. 반대의 작업을 하려면 즉, logrotate 작업 전에 실행할 작업이 있다면 postrotate / endscript 대신에 prerotate / endscript 를 사용하면 됨.

4. logrotate 주요옵션

– -f, –force : 강제순환 시킴. 이 옵션은 새로운 항목을 추가한 후에 로그파일을 순환시키거나 옛날 로그파일이 이미 삭제되어 새로운 로그파일이 생성되어 로그기록이 계속되고 있을 경우에 유용한 옵션임.

– -s, –state < statefile > : 기본 상황파일은 /var/lib/logrotate.status 파일 대신에 지정한 state 파일을 사용함.

– –usage : logrotate 의 기본 사용법을 간단히 보여줌.

– compress : 순환되는 로그파일을 gzip 으로 압축하게 됨. nocompress 와는 반대임.

– nocompress : 순환되는 로그파일의 압축을 하지 않음. 반대는 compress 임.

– create mode owner group : 순환되어 생성되는 로그파일의 파일퍼미션( mode ) 과 소유자( owner ) , 그리고 그룹소유자( group ) 를 지정한 것.

– daily : 로그파일을 일 주기로 순환 시킴.

– weekly : 로그파일을 주 주기로 순환  시킴.

– monthly : 로그파일을 한달 주기로 순환 시킴.

– errors address : logrotate 실행 후에 순환되어 생성되는 파일의 이름 뒤에 확장자로 붙일 확장자명을 지정함. 만약 compress 라는 옵션으로 gzip 으로 압축을 했다면 gz 라는 확장자가 뒤에 붙게 됨.

– ifempty : 로그파일이 비어있는 경우에도 rotate( 순환 ) 을 하게 됨. 기본값임.

– notifempty : ifempty 와는 반대로 로그파일이 비어있을 경우에는 순환을 하지 않음.

– mail address : logrotate 작업후에 이전로그파일을 지정된 메일주소로 메일을 보냄.( 특정한 경우의 로그파일은 보내지 않을 수 도 있음. )

– postrotate / endscript : logrotate 작업 이후에 지정된 작업( 스크립트 ) 을 실행함.

– prerotate / endscript : logrotate 작업 이전에 지정된 작업( 스크립트 ) 를 실행함.

– rotate count : logrotate 의 실행결과 순환되는 파일들의 총 갯수임. 즉, logrotate 의 결과 삭제되거나 지정된 주소로 메일을 보내기 전의 총 파일갯수라고 이해하면 됨. 그리고 rotate 0 로 설정하고 나면 이전파일은 순환과 함께 삭제되어 버림.

– size size : logrotate 의 결과 순환됨 결과 파일사이즈가 지정한 크기를 넘지 않도록 함. 지정하는 방법은 100k, 100M 등으로 용량단위를 붙여서 지정하면 됨.

[로그 관리 및 분석] 로그데몬 컨트롤하기

1. 로그데몬 및 실행스크립트

– 로그데몬은 /sbin/syslogd 에 존재함. 서버관리자는 이 데몬파일의 사이즈 및 생성일자 및 파일퍼미션등의 관리를 해야함. 해킹을 당했을 때에는 이들 파일의 사이즈 및 퍼미션등이 변경되어 있을 수가 있음. 대부분 rtipwire 라는 파일시스템 무결성 검사툴을 설치하여 사용하는 것이 바람직 할 것임.

– 이 데몬( /sbin/syslogd ) 을 실행시키려면 /etc/rc.d/init.d 에 syslog 라는 스크립트가 존재함. 이 스크립트( /etc/rc.d/init.d/syslog ) 를 통해 로그데몬을 실행시킴.

2. 로그데몬 실행 및 종료

– /sbin/syslogd 를 실행시키고 종료시키는 것은 /etc/rc.d/init.d/syslog 라는 스크립트를 통해서 하면 됨.

– 직접 데몬을 실행시킬 수도 있지만, 스크립트를 통해서 실행시키는 것이 일반적.

– /etc/rc.d/init.d/syslog start

– /etc/rc.d/init.d/syslog restart

– /etc/rc.d/init.d/syslog stop

– syslogd 란 데몬이 실행이 되었다라는 의미는 /etc/syslog.conf 파일에 설정된 것처럼 관련된 이벤트가 발생을 했을 경우에 지정된 로그파일에 기록을 하게 된다는 것을 의미.

[로그 관리 및 분석] /etc/syslog.conf 파일의 설정포멧

1. /etc/syslog.conf 파일

– /etc/syslog.conf 파일은 시스템 로그데몬( syslogd ) 이 실행이 될 때 참조되는 로그파일 설정파일로서 관련된 로그파일들이 어떤경우에 어떤 파일에 남겨지는가에 대한 설정내용을 가지고 있음.

– 시스템로그데몬( syslogd )이 실행이 될 때( 이 데몬은 시스템부팅시에 실행이 됨 ) 환경파일( /etc/syslog.conf ) 을 읽게되며, 관련 로그를 설정된 곳의 파일에 남겨두게 됨.

– 형식 : facility.prioriry                                   logfile-location
A          B                                                      C
” A 서비스( 데몬 ) 에 대하여 B 의 경우에 해당하는 상황이 발생하였을 때에 C 파일에 그 기록을 남겨라 ”
즉, facility 는 해당서비스를 의미함. mail,cron, kern, uucp 등이 이에 해당함. priority 는 각 서비스( facility ) 들의 상황정도는 나타내는 우선순위임. logfile-location 은 해당 서비스의 로그내용이 기록될 파일위치를 지정한 것.

– facility : 서비스이름( 메세지의 종류 )
auth : 로그인과 같이 사용자 인증에 관한 메시지
authpriv : 보안 및 승인에 관한 메시지
cron : crond 데몬과 atd 데몬에 의해 발생되는 메시지
daemon : telnet, ftp 등과 같은 데몬에 의한 메시지
kern : kernel 에 의한 메시지로서 커널메시지라고 함.
lpr : 프린터데몬인 lpd 에 의해 발생되는 메시지
mail : sendmail 또는 pop 또는 qmail 등의 메일에 의해 발생되는 메시지
news : innd 등과 같은 뉴스시스템에 의해 발생되는 메시지
uucp : uucp 에 의한 시스템에 의한 메시지

– priority( 메시지의 우선순위를 의미함 )
emerg : 최상위. 매우 위험한 상황
info : 단순한 프로그램에 대한 정보 메시지
notice : 에러가 아닌 알림에 관한 메시지
warning : 주의를 요하는 메시지
err : 에러가 발생한 상황
crit : 급한상황은 아니지만 치명적인 시스템 문제발생 상황
alert : 최하위, 즉각적인 조치를 취해야 하는 상황
none : 어떠한 경우라도 메시지를 저장하지 않음.