RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'LOG'에 해당되는 글 1
2009.07.27  [리눅스 관리]로그분석  

출처 : 대전국제IT교육센터 정성재 강사

 

1. 로그분석
로그분석은 시스템관리와 보안에 상당히 중요하다. 리눅스에서는 기본적으로 모든 행동이 기록이 되어
로그파일로 남는다.


2. 로그분석관련 파일
(1) /var/log 디렉토리 : 대부분의 로그관련 파일들이 위치하는 디렉토리이다.
(2) 주요파일
   1) /var/log/messages
    ㄱ. 설명: 시스템의 표준 에러관련 메시지가 기록되는 파일로 syslogd 라는 데몬에 의해 설정된
            사항들이 기록된다. 기본적으로 루트권한자만이 읽고 쓸 수 있다.
    ㄴ. 로그예
       [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. 자체적으로 발생한 메시지, 보통 콜론(:)으로 구분된다.
   2) /var/log/dmesg : 시스템이 부팅할 때 출력되었던 메시지가 로그로 남겨진다. 보통 커널 부트
                      메시지 로그라고 한다.
   3) /var/log/secure : 모든 접속과 관련하여 언제 어디서 어떤 서비스를 사용했는지 기록한다.
                       보통 login, tcp_wrappers, xinetd 관련 로그들이 남는다.
   4) /var/log/xferlog : FTP 접속 관련작업을 기록한다. 보통 wu-ftpd에 의해 발생된 로그이다.
   5) /var/log/cron : cron데몬이 실행했던 작업을 기록한다.
   6) /var/log/maillog : sendmail의 메일관련 작업을 기록한다.
   7) /var/log/lastlog : telnet을 이용한 접속을 기록한다. 바이너리파일로 lastlog라는 명령으로
                        확인한다.
   8) /var/log/wtmp : 콘솔모드, telnet, ftp로 접속한 기록과 시스템을 재부팅한 기록, 접근지등을
                     기록한다. 역시 바이너리파일로 되어 있으며, last라는 명령으로 확인한다.
   9) /var/log/boot.log: 부팅시에 출력되는 모든 메시지를 기록한다. 부팅시의 에러등을 확인할 수
                        있다.
   10) /var/log/cron: 시스템의 정기적인 작업을 수행하는 cron관련 로그를 기록하는 파일이다.
   11) /var/log/sa : sysstat라는 패키지에 의해 기록되는 로그파일들이 위치하는 디렉토리이다.
(참고1) 'w'이라는 현재 로그인한 사용자들의 작업을 보여주는 명령이 있는데 이 명령은 utmp라는
       바이너리 파일의 기록을 보여준다. 이 파일의 위치는 /var/run/utmp이다.

3. 로그관련 데몬
(1) 로그데몬
   1) 설명: 시스템과 관련된 대부분의 로그는 syslogd가 하고 추가로 klogd라는 데몬이 있다.
    ㄱ. syslogd : 커널과 여러가지 시스템 프로그램들은 각종 에러와 경고 메시지, 기타 일반적인
                 메시지들을 출력한다. 이런 메시지들을 파일로 기록하는 데몬이다.
    ㄴ. klogd : 부팅후에 부팅과 관련된 메시지를 보려면 dmesg라는 명령을 친다. 이 명령은 실제
               /var/log/dmesg라는 파일의 정보를 가지고 오는 것이 아니라, 시스템에는 부팅과
               관련된 메시지를 포함하여 커널관련 메시지를 담는 약 8196bytes의 버퍼크기를 갖고
               메시지를 기록하는 데 이 메시지를 기록하는 데몬이 klogd이다.
(2) 관련파일
   1) /etc/rc.d/init.d/syslog : 실행과 관련된 스크립트파일로 실질적인 실행파일이다. syslogd와
                               klogd 데몬을 모두 실행시켜 준다.
   2) /etc/syslog.conf : syslog데몬의 환경설정파일이다.
   3) /etc/sysconfig/syslog : syslogd 와 klogd의 시작과 관련된 스크립트의 환경파일이다.

4. /etc/syslog.conf 파일분석
(1) 기본 구성형식
    facility.level                        action
(2) facility : 메시지를 발생시키는 프로그램의 유형을 나타낸다.
   * facility의 종류
     cron          : cron, at과 같은 프로그램이 발생한 메시지
     auth          : login과 같이 인증프로그램 유형이 발생한 메시지
     authprive     : 개인 인증을 요하는 프로그램 유형이 발생한 메시지
     daemon        : telnetd,ftpd등과 같이 daemon이 발생한 메시지
     kern          : 커널이 발생한 메시지
     lpr           : 프린트 유형의 프로그램이 발생한 메시지
     mail          : mail 시스템이 발생한 메시지
     mark          : syslogd에 의해 만들어지는 날짜유형
     news          : 유즈넷 뉴스 프로그램 유형이 발생한 메시지
     syslog        : syslog 프로그램이 유형이 발생한 메시지
     user          : 사용자 프로세스
     uucp          : UUCP 시스템이 발생한 메시지
     local0-local7 : 여분으로 남겨둔 유형
(참고2) facility 뒤에 .none을 붙이면 해당 facility를 제외하겠다는 의미이다. 예를 들어 mail.
       none은 메일 관련 메시지를 제외한다는 뜻이다.
(3) level : 위험의 정도를 가리키며 설정된 위험의 정도보다 높아야 메시지를 내보낸다. 레벨 앞에
            '='을 사용할 경우 해당 레벨의 위험도와 같은 경우를 의미한다.
    * level의 종류 (위험 레벨이 낮은 것부터 높은 순서로 나열)
      debug   : 프로그램을 디버깅할 때 발생하는 메시지
      info    : 통계, 기본정보 메시지
      notice  : 특별한 주의를 요하나 에러는 아닌 메시지
      warning : 주의를 요하는 경고 메시지
      err     : 에러가 발생하는 경우의 메시지
      crit    : 크게 급하지는 않지만 시스템에 문제가 생기는 단계의 메시지
      alert!   : 즉각적인 조정을 해야 하는 상황
      emerg   : 모든 사용자들에게 전달되어야 할 위험한 상황
(4) action : 메시지를 보낼 목적지나 행동 들에 관한 설정
    * 종류
     file : 해당 file에 내용을 추가
     @host : 지정된 호스트로 메시지를 보냄
     user  : 지정된 사용자의 스크린으로 메시지를 보냄
     *     : 현재 로그인되어 있는 모든 사용자의 스크린으로 메시지를 보냄
(5) 사용예
   1) *.=crit;kern.none                          /var/log/critical
     => 모든 facility가 발생하는 것중에서 crit레벨과 같은 수준의 메시지를 /var/log/critical이라
       는 파일로 저장하는데 커널에서 발생하는 메시지는 제외한다.
   2) *.emerg                                    *
     => 모든 emerg이상의 에러가 발생하면 모든 사용자에게 알려준다.
(참고3) /etc/syslog.conf 파일예
  # Log all kernel messages to the console.
  # Logging much else clutters up the screen.
  #kern.*                                                 /dev/console
 
  # Log anything (except mail) of level info or higher.
  # Don't log private authentication messages!
  *.info;mail.none;news.none;authpriv.none;cron.none              /var/log/messages
     => 모든 info메시지를 기록하되, mail,news,authpriv,cron은 제외
  # The authpriv file has restricted access.
  authpriv.*                                              /var/log/secure
   => 개인인증관련은 /var/log/secure에 기록
  # Log all the mail messages in one place.
  mail.*                                                  /var/log/maillog
   => 모든 메일관련 메시지는 /var/log/maillog에 기록

  # Log cron stuff
  cron.*                                                  /var/log/cron
   => cron관련 메시지는 /var/log/cron에 기록
  # Everybody gets emergency messages, plus log them on another
  # machine.
  *.emerg                                                 *
   => 모든 emerg이상의 에러가 발생하면 모든 사용자에게 알려줌
  # Save mail and news errors of level err and higher in a
  # special file.
  uucp,news.crit                                          /var/log/spooler
   => uucp, news의 crit정보기록은 /var/log/spooler에 기록
  # Save boot messages also to boot.log
  local7.*                                                /var/log/boot.log
   => 부트 메시지는 /var/log/boot.log에 기록
  #
  # INN
  #
  news.=crit                                        /var/log/news/news.crit
  news.=err                                         /var/log/news/news.err
  news.notice                                       /var/log/news/news.notice

5. 로그파일관리
(1) logrotate : /var/log 디렉토리안에 있는 많은 로그파일은 기존의 파일에 덧붙여지게 되므로
                크기는 계속 커지게 된다. 이를 방지하기 위해서 로그 파일을 조각으로 나눌 수
                있는데, 이런 작업을 하는 프로그램이 logrotate이다.
(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한다.
(3) /etc/logrotate.d 디렉토리: 각종 응용프로그램의 로그관리를 위한 디렉토리이다. 이 디렉토리
                               내에 응용프로그램의 이름으로 파일이 설정되어 있다.
(4) 참고
    리눅스 서버에서 logrotate은 /etc/cron.daily 디렉토리에 cron작업으로 등록되어 있어 매일
   실행되도록 설정되어 있다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31