ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 로그 분석
    시스템 2020. 9. 21. 15:02
    반응형

    I. 시스템 분석

     

    시스템 로그 분석

     

    1) 시스템 로그의 정의

     

    시스템 로그의 정의에 대한 설명

    -"log"를 번역하면, 일지라는 뜻으로, 시스템에 일어난 일들을 기록해 둔 파일이란 뜻이다.

    -로그는 디스크 공간을 채우는 불필요한 파일이 되기도 한다.

    -시스템에서 제공하는 서비스에 따라서 여러개의 로그파일이 존재할 수 있다.

    -시스템관리자가 해킹을 당했다고 느낄 경우 로그 파일에 의존한다. (/var/log 디렉터리에서 모든 로그를 기록 및 관리)

     

    리눅스 서버에서 발생하는 로그

    -커널 로그: "klogd"라는 데몬에 의해 커널 메세지가 생성된다.

    -시스템 로그: "syslogd"라는 데몬에 의해 생성되는 로그이다.

     

     

    2) 시스템 로그 파일

     

    /var/log/message

    -syslog.conf에서 로그로 기록하지 않도록 지정한 것을 제외한 시스템의 모든 사항들을 기록한다.

     

    ▲왼쪽부터 순서대로 날짜, 시간, 호스트명, 프로세스명, 설명 기록

     

     

     

    /var/log/secure

    -시스템에 사용자의 원격 로그인 정보를 기록한 것(messages에 기록되지 않는 것)으로서 서버 보안에 민감하고 중요한 파일이다.

    -tcp_xrapper(xinetd)의 접속 제어에 관한 로그 파일로서 언제, 누가, 어디서, 어떻게 접속했는가에 대한 로그를 기록하고 있다.

     

    ▲왼쪽부터 날짜, 시간, 호스트명, 프로세스명, 설명 기록

     

     

    /var/log/maillog

    -sendmail 또는 qmail 등과 같은 메실 송수신 관련 내역들과 pop3 또는 imap등과 같은 수신 내역들, 즉 메일에 대한 사항을 저장한다.

    -이 파일을 통해 메일이 오고간 시간, 호스트, 데몬, 사용자, 크기등을 체크 할 수 있다.

     

     

     

    /var/log/cron

    -cron이 실행된 것들에 대한 정보가 기록된다.

     

     

     

    /var/log/boot.log

    -시스템의 서비스 데몬들의 부팅에 관련된 정보가 기록되는 파일로, 특정 데몬들이 언제 정지되었고 실행됬는지 확인가능하다.

     

     

     

    /var/log/dmesg

    -시스템이 부팅할 때 보이는 시스템 정보 메세지들이 기록되는데, 따라서 시스템 부팅시 이상한 메시지가 나오면 이 파일을 통해 확인 가능하다.

    (dmesg 명령어를 통해 이 파일의 내용을 확인할 수 있음)

     

     

     

    /var/log/wtmp와 last

    -사용자들의 최근에 접속했던 사항을 알려준다.

    (last 명령어를 통해 이 파일의 내용을 확인할 수 있음)

     

    ※last 명령어

    -마지막으로 로그인한 사용자 정보를 보여준다.

    -/var/log/wtmp 파일에 기록한다.

     

    지난 달의 로그 파일 보기 ▶ # last -f wtmp.1 //전달의 로그는 logrotate프로그램에 의해 wtmp.1, wtmp.2 와 같이 저장됨

    접속에 실패한 기록만을 확인 ▶ # lastb

     

     

    /var/log/lastlog

    -사용자가 마지막 로그인한 기록을 조사하여 보여준다.

    -해당 파일을 직접 볼수 없으며, lastlog 명령어를 통해 확인할 수 있다.

     

     # lastlog -t 2 //최근 2일 동안 접속한 사용자의 마지막 로그 기록(-t옵션)

     # lastlog -u bjkim //특정 사용자의 마지막 접속 기록(-u옵션)

     

     

     

    /var/log/xferlog

    -ProFTPD등의 FTP 데몬들에 의한 시스템의 데이터 전송에 대한 정보를 기록하는 파일이다.

    -이 파일을 통해 부정한 파일들이 전송되었는지 여부를 확인할 수 있다.

    -송수신 자료와 시간, 송수신을 수행한 원격 호스트, 송수신 파일 정보를 담고 있다.

     

     

     

    /var/log/httpd/access_log

    -Apache 서버의 로그 파일로, 기본적으로 Apache 서버의 httpd.conf 파일에 의해 제어가 된다.

    이 파일을 통해 웹 서비스에 대한 서비스 내용을 모니터링 할 수 있다.

     

    상태코드

    1** - Continue/Protocol Change

    200 - 정상적 파일 전송(Successful Transfer)

    204 - 파일은 발견되나 내용이 없음

    3** - 웹 사이트 이동되거나 자동슬라이드 효과시(Redirection)

    403 - 사용 권한에 관계없이 내용을 볼 수 없음(Forbidden)

    404 - 파일이 발견되지 않음(File Not Found)

    500 - 내부적 서버 에러(Internal Server Error)

     

     

    /var/log/httpd/error_log

    -Apache 서버의 로그 파일로, 기본적으로 Apache 서버의 httpd.conf 파일에 의해 제어가 된다.

    이 파일을 통해 웹 서비스에 대한 에러 정보를 파악할 수 있다.

     

     

     

    3) 시스템 로그 분석 활용

     

    syslogd를 사용한 로그 기록

     

    syslogd

    -시스템 로그를 기록하는 프로그램으로, 이 데몬의 주설정 파일은 "/etc/syslog.conf"이고 -f 옵션에 의해 다른 파일로 다뤄지기도 한다.

    -기본적으로 mail, secure, message, cron등의 로그가 존재한다.

    -여러대의 서버를 관리하기 위해 원격 로그 시스템을 지정할 수 있다.

     

    syslogd 데몬 제어 및 작동 확인

     # /etc/rc.d/init.d/syslog [start|stop|restart]   or  # service syslog [start|stop|restart]  //데몬 제어

     # ps -e | grep syslog //작동 확인

     # grep syslog /etc/service //PID 확인 

     

    /etc/syslog.conf 파일 (syslogd.conf와 헷갈리지 말것)

    파일 형식:  facility.priority;facility.priority    logfile_location 

     facility: 메세지를 보내는 서브 시스템의 이름이다.

     auth

     로그인과 같이 사용자 인증에 관한 메세지

     authpriv 

     ssh와 같은 보안 및 승인에 관한 메세지 

     cron 

     crond 데몬과 atd 데몬에 의해 발생되는 메세지 

     daemon 

     telnet, ftp 등과 같은 데몬에 의한 메세지 

     kern

     kernel에 의한 메세지 

     lpr 

     프린터 데몬인 lpd에 의해 발생되는 메세지 

     mail 

     sendmail, pop, qmail 등의 메일에 의해 발생되는 메세지 

     news 

     innd 등과 같은 뉴스 시스템에 의해 발생되는 메세지 

     uucp 

     uucp에 의한 메세지 

     user

     사용자에 의해 생성된 프로세스 

     syslog 

     syslogd에 의해 발생되는 메세지 

     local0~7

     시스템 부팅 메세지 기록, 기타 여분 서비스에 사용하기 위함 

     * 

     모든 서비스를 의미 

     priority: 메세지를 받는 파일, 장치, 컴퓨터나 사용자의 이름이다.

     none

     그에 대한 모든 로그 메세지 무시 

     debug 

     문제 추적을 돕는 특수정보 

     info

     정보 메세지 

     notice

     비임계 메세지 

     warn 

     경고 

     err 

     에러 

     crit

     하드 장치 에러와 같은 임계 에러 

     alert 

     에러 경고, 즉시 알려야 할 내용 

     emerg 

     시스템 패닉 

     * 

     발생하는 모든 상황에 대한 메세지 

     

     

    로그 서버: 로그를 작성 후 일정한 서버에 자료를 보내면 이것을 지속적으로 백업해 둘 수 있다.

     

      1. 로그를 작성하는 클라이언트 서버 설정

      /etc/syslog.conf 설정 파일에 보낼 파일과 호스트명을 적어서 설정한다.

      ex) mail.info @logserver ▶ 로그서버는 DNS 뿐만 아니라 /etc/hosts에 등록해 두는 것이 안전하다.

     

      2. 로그를 처리하는 서버 설정

      syslogd 데몬을 시작할 때 추가 옵션이 필요하다.

      ex) daemon syslogd -m 0 -r -h

      [-m 0: 지정한 분동안 MARK라고 로그파일에 기록 / -r: 인터넷 도메인 소켓을 이용해 네트워크에서 메세지를 받음 / -h: 원격 호스트에서 받은 로그파일을 포워드]

     

     

    ※syslog를 대체하는 시스템 로그 및 커널 메세지 관련 데몬으로 멀티스레드를 지원하고, TCP 프로토콜도 지원한다. (MySQL, PostgreSQL, Oracle등 DB로그 관리 가능)

    ▶ rsyslog

     

     

    logrotate를 통한 로그 관리

     

    logrotate에 대한 설명

    -log 파일이 방대해져서 시스템의 많은 공간을 차지하게 되는 우려가 있는데, 이러한 것을 방지해서 로그 관리를 자동화하는 프로그램이다.

    -로그파일을 압축해서 보관한다.

    -지정한 용량만큼 찼을때 다른 파일로 순환시킨다.

    -작업시 에러가 발생했을때 지정한 주소로 메일을 보낸다.

    -하루, 주, 월 단위로 로그파일 분리 할 수 있다.

    -분리한 로그파일의 퍼미션을 조절할 수 있고, 압축 여부를 지정할 수 있다.

    [로그파일 생성 X, 중요한것만 골라서 보관 X]

     

    /etc/logrotate.conf 파일: logrotate의 설정 파일

     

     weekly 

     로그 파일을 주 단위로 바꾸어줄 것을 설정 [daily | weekly | monthly]

     rotate 4

     4주 동안 백업한 로그를 유지할 것을 설정 

     errors root 

     root에게 에러 메세지를 보낼 것을 설정 [버전에 따라 있을 수도 있고 없을 수 도 있음 윗 버전<Centos6>에는 없음]

     create

     오래된 백업 로그 파일들 이후에 새로운 로그 파일을 생성 여부 

     #compress 

     compress로 압축 변경 여부 [기존엔 gzip으로 설정] 

     include /etc/logrotate.d

     logrotate에 적용될 각종 로그파일들을 보관하는 디렉터리 지정

     

     

    /var/lib/logrotate.status 파일: logrotate로 작업한 작업 내역이 보관되는 파일이다.

     

     

    /etc/cron.daily/logrotate 파일: cron에 의해서 주기적으로 실행되는 logrotate의 cron 설정 파일이다.

     

     

     

    Cron을 사용한 작업 자동화

     

    crontab 명령어: crontab [-u user] [-l 작업리스트] [-r 삭제할작업] [-e 등록하고싶은작업]

     

    /etc/crontab파일 설명

     항목 

     허용 범위 

     minute 

     0-59 

     hour 

     0-23 

     day of month 

     1-31 

     month 

     1-12 (or 달 이름) 

     weekday 

     0-6 (0=일요일) 

     

     

     1 * * * * root run-parts /etc/cron.1

     이 파일은 한 시간마다 한번씩, 매 시간 1분에 실행된다.

     2 4 * * * root run-parts /etc/cron.2

     이 파일은 하루에 한번씩, 매일 4시 2분에 실행된다.

     42 4 1 * * root run-parts /etc/cron.3

     이 파일은 한달에 한번씩, 1일 4시 42분에 실행된다.

    22 4 * * 0 /root/backup.sh

     매주 일요일 4시 22분에 /root/backup.sh 실행 파일을 동작한다. 

     5 4 * * 1,3,5 /etc/log.sh

     매주 월, 수, 금요일 새벽 4시 5분에 로그 점검 스크립트인 /etc/log.sh를 실행되도록 설정한다.

     

     

    at을 통한 예정 작업 설정

     명령 

     설명 

     at 

     지정한 시간에 명령을 실행한다. 

     atp 

     현재 사용자의 등록된 작업목록을 보여준다. 

     atrm 

     지정된 작업 번호의 작업을 삭제한다. 

     batch 

     시스템 부하 수준이 낮을 때 명령을 수행한다. 

     

    반응형
Designed by Tistory.