[로그 관리 및 분석] 로그파일 실무가이드

 1. 시스템에서의 로그의 의미

 – 시스템관리에 있어서 무엇보다 중요한 것이 로그파일분석과 관리임. 시스템에
이상징후가 발생을 했을 때, 시스템관리자가 가장 먼저 확인해 보는 것이 로그파일임. 시스템이 해킹을 당했다고 느낄 때
해킹흔적등을 확인하기 위해서 제일 먼저 서버관리자는 로그파일에 의존하게 됨.

 – 어디서( IP Address ), 누가( ID ), 어떻게( port ) 들어와서 어떤작업을 했는지를 확인하려할 때 전적으로 로그파일에 의존하게 됨.

 – 관리해야할 로그파일의 수와 로그파일이 어떤 경로로 남겨지는지에 대해서는 정확히 알고 있어야 함.

 2. 로그파일의 종류

 – 리눅스의 로그파일은 기본적인 로그파일만 하더라도 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. 콘솔로그( /dev/console )

 – 커널( kernel ) 에 관련된 내용을 시스템콘솔에 뿌려주는 로그임

 –
messages 내용과 일치하지는 않지만 시스템에 관련된 중요한 내용들( 시스템풀, 다운등 ) 에 대한 로그를 관리자에게
알리고자 함이 목적이기 때문에 출력을 파일로 저장하는 것이 아니라 장치명( /dev/console ) 을 사용하여 콘솔로 로그를
뿌려주게 됨.

 4. 시스템로그( /var/log/messages )

 – 이 로그에 기록되는 내용은 주로 접속시의 인증에 관한 것과 메일에 관한 내용, 그리고 시스템에 관한 변경사항등 시스템에 관한 전반적인 로그를 기록하는 파일임.

 – 시스템관리자에 의해서 가장 소중하게 다루어지는 로그이기도 함.

 – 이 파일에 기록되는 내용을 변경하고자 한다면 /etc/syslog.conf 파일의 내용에서 수정을 해 주면 됨.

 5. TCPD 로그( /var/log/secure )

 – xinetd 에 의한 로그파일.

 – xinetd 데몬의 확인 방법은 ” ps -ef | grep xinetd ” 로 확인이 가능함.

 – 실행중인 xinetd 의 PID 저장 파일은 /var/run/xinetd.pid 임

 6.  메일로그( /var/log/maillog )

 – 로그파일의 이름에서 의미하는 바와같이 senmail 이나 pop 등의 실행에 관한 기록이 남겨지게 됨.

 – 메일을 주고 받을 때에 이 로그파일에 기록이 됨.

 – 즉, smtp 와 pop 에 관한 로그라고 말할 수 있음.

 7. 크론로그( /var/log/cron )

 – 시스템의 크론이 작업한 기록을 보관하고 있는 파일.

 – 크론데몬인 crond 가 언제 어떤작업을 수했는가를 확인할 수 있음.

 8. 부팅로그( /var/log/boot.log )

 – 시스템의 데몬들이 실행되거나 재시작되었을 때 기록되는 로그파일.

 9. FTP로그( /var/log/xferlog )

 – ftp 나  ncftp 등의 접속이 이루어 졌을 때 이 로그파일에 기록이 됨.

 – 업로드한 파일과 다운로드한 파일들에 대한 자세한 기록도 함께 남겨짐.

 10.  웹로그( /usr/local/apache2/logs/access_log )

 – 웹서버( 아파치 ) 에 관한 로그

 11. 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

 12. 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 : 로그데몬 재시작장법

 13. 로그데몬의 실행 흐름

 – 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 작업이 필요함.

[로그 관리 및 분석] 마지막 로그인( 접속 ) 정보 확인한는법

 1. 시스템 각 계정의 최근 접속정보를 확인하는 lastlog 개론

 – lastlog 는 /etc/passwd 파일에 정의되어 있는 모든 계정의 최근 접속정보를 확인하는 명령어임.

 – 주로 서버의 보안점검을 위하여 필수적으로 확인해 보아야하는 명령어. 간단히 lastlog 라고만 하면 모든 계정의 마지막 접속정보를 출력해 줌.

 – 사용형식 : lastlog [ -u 계정명 ] [ -t 일자 ]

 –
lastlog 는 /var/log/lastlog 파일의 정보에 저장된 정보를 참조하여 결과를 출력함.
/var/log/lastlog 파일은 바이너리파일로 되어있기 때문에 cat 이나 vi 등의 일반적인 방법으로는 확인할 수 없음.

 – /var/log/lastlog 파일에는 각 계정의 최근 접속정보가 기록되는 파일임. 또한 /usr/include/lastlog.h 파일에 정의 된 포멧( format ) 으로 /var/log/lastlog 에 저장이 됨.

 2. 시스템 각 계정의 최근 접속정보 확인하기

 – 간단히 lastlog 라고만 하면 서버의 모든 계정에 대한 최근 접속정보를 확인 할 수 있음.

 – lastlog

 
 3. 특정 계저사용자의 시스템 최근 접속정보 확인하기

 – 만약 특정 계정만의 최근 접속정보를 확인하고자 한다면 -u 옵션과 함께 사용하면 됨.

 – lastlog -u stkim

 4. 지정한 최근일 까지의 시스템 접속정보 확인하기

 – lastlog 는 최근 몇일까지의 마지막 접속정보를 확인 할 수도 있음. ” last -t 일자 ” 와 같이 사용하면 지정된 일자까지에 접속한 최근 접속정보를 확인 할 수 있음.

 –  lastlog -t 30

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

 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

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

 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 : 어떠한 경우라도 메시지를 저장하지 않음.