[Linux]한눈에 보이는 리눅스 로그(Linux Log) 총정리, 그리고 관련 명령어

리눅스 시스템의 기본적인 로그 파일들은 syslogd(rsyslogd) 데몬에 의해 제어되고 설정파일인 syslogd.conf(rsyslog.conf)를 수정함으로써 로그 파일들의 저장 위치와 파일명, 로그 레벨 등의 변경이 가능합니다. Linux 커널에서 발생시키는 로그 뿐만 아니라, 아파치 웹 서버(httpd)나 FTP 서비스(vsftpd)와 같이 별도 설치한 패키지에서 발생하는 로그들도 많습니다. 그 중에서도 반드시 알아야 하는 로그들에 대해 간략하게 정리해 봤습니다.(주로 CentOS 8 기준으로 작성하였으나, 다른 Linux OS에서 제공하는 로그 파일도 일부 추가하였습니다.)

  1. /var/account/pacct
    • 파일 형식: binary
    • 패키지: psacct
    • 데몬: accton
    • 관련 명령어: ac, lastcomm [사용자], sa
    • 저장 정보:
      “사용자별로 프로세스 사용 통계를 수집” 글 참고
      – 시스템에 로그인한 모든 사용자가 로그아웃할 때까지 한 활동(명령어 실행 등)을 추적하고 기록
      – 입력한 명령어와 터미널의 종류, 프로세스 시작 시간 등을 저장
  2. /var/log/audit/audit.log
  3. /var/log/boot.log
    • 파일 형식: text
    • 패키지: rsyslog
      [root@centos8 ~]# cat /etc/rsyslog.conf | grep boot.log
      # Save boot messages also to boot.log
      local7.*                                                /var/log/boot.log
      
    • 저장 정보:
      – 리눅스 시스템 부팅 중에 발생하는 로그 정보를 저장하는 파일
      – 부팅 시 시스템에 설치된 서비스 및 데몬이 시작되거나 종료될 때의 로그 메시지 기록
      – 부팅 중 하드웨어와 디바이스 초기화 과정에서 발생하는 이벤트와 메시지 기록
      부팅 과정에서 systemd와 같은 시스템의 초기화 및 서비스 시작과 관련된 메시지를 기록
      [root@centos8 ~]# tail /var/log/boot.log
      [  OK  ] Started Permit User Sessions.
               Starting Hold until boot process finishes up...
      [  OK  ] Started Command Scheduler.
               Starting GNOME Display Manager...
      [  OK  ] Started Job spooling tools.
      [  OK  ] Started NFS status monitor for NFSv2/3 locking..
      [  OK  ] Started NFS Mount Daemon.
               Starting NFS server and services...
      [  OK  ] Started System Logging Service.
      [  OK  ] Started GNOME Display Manager.
      
  4. /var/log/btmp
    • 파일 형식: binary
    • 패키지: systemd
    • 관련 명령어: lastb [사용자]
      [root@centos8 ~]# lastb
      rootf    seat0        login screen     Sun Mar 17 15:40 - 15:40  (00:00)
      rootf    seat0        login screen     Sun Mar 17 15:40 - 15:40  (00:00)
      
      btmp begins Sun Mar 17 15:40:04 2024
      
    • 저장 정보:
      – 실패한 로그인 시도에 대한 정보를 기록하는 로그 파일
  5. /var/log/cron
    • 파일 형식: text
    • 패키지: cronie
    • 데몬: crond
      – /etc/crontab 및 /etc/cron.d/ 디렉터리의 파일들을 참조하여 예약된 작업들을 실행
    • 관련 명령어: crontab (반복적인 작업을 예약)
    • 저장 정보:
      – cron 데몬이 실행한 작업에 관한 로그를 저장하는 파일
      – 작업이 실행된 시간, 호스트 이름, 프로세스 ID, 작업을 실행한 사용자, 실행된 명령
      – 예약된 작업의 실행 여부와 성공 또는 실패에 대한 정보를 확인
  6. /var/log/faillog
    • 파일 형식: binary
    • 패키지: pam_tally.so
    • 관련 명령어: faillog
      faillog -u 사용자명: 지정한 사용자의 로그인 실패 기록 확인
    • 저장 정보: 사용자의 로그인 실패 기록을 추적(횟수 등)
  7. /var/log/lastlog
    • 파일 형식: binary
    • 패키지: systemd
    • 관련 명령어: lastlog [-u 사용자] [-t 일수]
      last, lastb 명령어는 달리 사용자 지정 시 -u 옵션을 사용해야 함
      [root@centos8 ~]# lastlog | head
      Username         Port     From             Latest
      root             pts/0    192.168.56.1     Sun Feb  4 00:08:19 +0900 2024
      bin                                        **Never logged in**
      daemon                                     **Never logged in**
      adm                                        **Never logged in**
      lp                                         **Never logged in**
      sync                                       **Never logged in**
      shutdown                                   **Never logged in**
      halt                                       **Never logged in**
      mail                                       **Never logged in**
      
    • 저장 정보:
      – 사용자의 마지막 로그인 정보를 기록하는 파일
      – 사용자 이름, 터미널 번호, 로그인 원격 주소, 마지막으로 로그인 시간 확인
  8. /var/log/maillog
    • 파일 형식: text
    • 패키지: rsyslog
      # /var/log/maillog 파일 앞에 (-) 의미는 이 파일이 없거나 열 수 없는 경우에도 다른 로그 메시지를 처리하라는 의미임
      [root@centos8 ~]# cat /etc/rsyslog.conf | grep maillog
      mail.*                                                  -/var/log/maillog
      
    • 저장 정보:
      – 메일 서버 소프트웨어 (주로 Sendmail, Postfix, Exim 등)의 활동과 관련된 로그를 기록하는 파일
      – 메일 서버가 메일을 성공적으로 전송하거나 수신한 경우에 대한 로그
      – 메일 서버에서 발생한 오류나 경고 메시지에 대한 로그
      – 메일 서버에 대한 사용자의 인증과 접속과 관련된 로그
      – 스팸 메일 처리, 바이러스 감지, 보안 이벤트와 관련된 로그 등
  9. /var/log/messages
    • 파일 형식: text
    • 패키지: rsyslog
      [root@centos8 ~]# cat /etc/rsyslog.conf | grep /var/log/messages
      *.info;mail.none;authpriv.none;cron.none                /var/log/messages
      
    • 저장 정보:
      – 주요 시스템 이벤트 및 오류 메시지, 로그인/로그아웃 정보, 네트워크 이벤트, 커널 메시지 등 기록
      – 시스템 관리자에게 시스템의 상태를 모니터링하고 문제를 해결하는 데 도움을 줌
      – 파일 포맷: #1로그 생성 일시, #2호스트명, #3프로세스명[프로세스id]:, #4상세 로그 메세지
      Mar 17 17:55:51 centos8 systemd[1]: Started Session 6 of user root.
      Mar 17 17:55:51 centos8 systemd-logind[794]: New session 6 of user root.
      
  10. /var/log/secure
    • 파일 형식: text
    • 패키지: rsyslog
      [root@centos8 ~]# cat /etc/rsyslog.conf | grep /var/log/secure
      authpriv.*                                              /var/log/secure
      
    • 저장 정보:
      – ssh, ftp, telnet 등을 통해 사용자가 시스템에 로그인하거나 로그아웃할 때의 정보를 기록
      – 비밀번호 인증 실패, 로그인 실패 등과 같은 보안 관련 이벤트를 기록
      – root 사용자로의 전환(su 명령어) 및 sudo 명령어 실행과 관련된 로그를 기록
      – 계정 및 그룹의 생성, 삭제, 비밀번호 변경 등과 관련된 이벤트를 기록
      – PAM 모듈의 활동과 관련된 정보를 기록
      – TCP wrapper의 접근통제와 관련하여 언제, 누가, 어디에서 어떻게 접속했는가에 대한 로그를 기록
  11. /var/log/tallylog
    • 파일 형식: binary
    • 패키지: pam_tally2.so
    • 관련 명령어: pam_tally2
      pam_tally2 -u 사용자명: 지정한 사용자의 로그인 실패 기록 확인
      pam_tally2 -u 사용자명 -r: 지정한 사용자 계정의 잠금 해제
      [root@rhel7.7 ~]# pam_tally2 -u root
      Login           Failures Latest failure     From
      root                0
      
    • 저장 정보:
      – 사용자의 로그인 시도 횟수를 추적
      – RHEL8부터 Depreciated됨
  12. /var/run/faillock/*
    • 파일 형식: text
    • 패키지: pam_faillock.so
    • 관련 명령어: faillock
      faillock --user 사용자명: 지정한 사용자의 로그인 실패 기록 확인
      faillock --user 사용자명 --reset: 지정한 사용자 계정의 잠금 해제
    • 기타:
      RHEL8부터 계정 잠금 정책을 설정하는 패키지로 pam_tally2 대신에 pam_faillock를 권장
      – /etc/security/faillock 파일에서 환경 설정
  13. /var/run/utmp
    • 파일 형식: binary
    • 패키지: systemd
    • 관련 명령어: w, who, finger
      [root@centos8 log]# w
       01:01:35 up  5:07,  3 users,  load average: 0.00, 0.04, 0.02
      USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
      root     pts/0    192.168.56.1     00:08    0.00s  0.38s  0.02s w
      root     seat0    login-           22:17    0.00s  0.00s  0.03s /usr/libexec/gdm-wayland-session --register-session gnome-s
      root     tty2     tty2             22:17    2days 51.70s  0.04s /usr/libexec/gsd-disk-utility-notify
      
    • 저장 정보:
      – 현재 로그인 중인 사용자의 정보를 저장
      세션 타임아웃(환경변수 TMOUT)이 잘못 설정되어 IDLE 시간이 장기간 유지되는지 확인 필요
  14. /var/log/wtmp
    • 파일 형식: binary
    • 패키지: systemd
    • 관련 명령어: last
      [root@centos8 log]# last | head
      root     pts/0        192.168.56.1     Sun Feb  4 00:08   still logged in
      root     pts/1        192.168.56.1     Sat Feb  3 22:30 - 00:05  (01:35)
      root     pts/0        192.168.56.1     Sat Feb  3 22:17 - 00:05  (01:48)
      root     tty2         tty2             Sat Feb  3 22:17   still logged in
      root     seat0        login screen     Sat Feb  3 22:17   still logged in
      root     pts/0        192.168.56.1     Sat Feb  3 21:41 - 22:02  (00:21)
      reboot   system boot  4.18.0-500.el8.x Fri Feb  2 09:52   still running
      root     pts/2        192.168.56.1     Thu Feb  1 22:50 - crash  (11:01)
      root     pts/1        192.168.56.1     Thu Feb  1 22:43 - crash  (11:08)
      root     pts/1        192.168.56.1     Thu Feb  1 22:06 - 22:33  (00:26)
      
    • 저장 정보:
      – 사용자의 로그인 및 로그아웃 이력을 기록
      – reboot 이력 등 시스템 종료, 부팅 정보도 기록
  15. /var/log/xferlog
    • 파일 형식: text
    • 패키지: vsftpd
    • 관련 명령어: cat
      [root@centos8 ~]# cat /etc/vsftpd/vsftpd.conf | egrep "^xferlog|^#xferlog"
      xferlog_enable=YES
      #xferlog_file=/var/log/xferlog
      xferlog_std_format=YES
      
    • 저장 정보:
      – FTP 접속과 관련된 작업이 기록된 ASCII 파일. 데이터 전송 내용 저장
      [root@centos8 ~]# cat /var/log/xferlog
      Sun Feb  4 05:26:03 2024 1 ::ffff:192.168.56.1 8 /root/ftptext.txt a _ i r root ftp 8 * c
      
      Sun Feb  4 05:26:03 2024   ▷ 전송 날짜와 시간
      1                          ▷ 전송 소요 시간(초)
      ::ffff:192.168.56.1        ▷ 접속IP
      8                          ▷ 전송 파일 크기(바이트)
      /root/ftptext.txt          ▷ 전송 파일 경로 및 파일이름
      a                          ▷ 전송 파일 타입(a: ASCII, b: Binary)
      _                          ▷ 액션 플래그(_: 액션없음, C: compressed, U: uncompressed, T: tar archive)
      i                          ▷ 전송 방향(i: incoming, o: outgoing, d: 서버 파일 삭제)
      r                          ▷ 접속 모드(r: real(로컬 사용자), a: 익명, g: 비밀번호를 입력한 guest(FTP서버에서 만든 가상 계정))
      root                       ▷ "r" 접속 모드로 인증된 사용자명
      c                          ▷ 전송 상태(c: 성공, i: 실패)
      
  16. 커널 메시지 버퍼(Kernel Message Buffer) 또는 Kernel Ring Buffer
    • 파일 형식: 시스템 메모리에 저장, /proc/kmsg 파일을 통해 접근
    • 관련 명령어: dmesg (실시간으로 메시지 버퍼의 내용을 화면에 출력)
      [root@centos8 log]# dmesg -T -x --level=emerg,alert,crit,err,warn
      kern  :warn  : [Wed Nov 22 00:29:40 2023] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
      kern  :crit  : [Wed Nov 22 00:29:41 2023] Warning: Unmaintained hardware is detected:  e1000:100E:8086 @ 0000:00:03.0
      kern  :err   : [Wed Nov 22 00:29:41 2023] [drm:vmw_host_printf [vmwgfx]] *ERROR* Failed to send host log message.
      kern  :crit  : [Wed Nov 22 00:29:41 2023] Warning: Unmaintained hardware is detected:  e1000:100E:8086 @ 0000:00:08.0
      kern  :warn  : [Wed Nov 22 00:29:43 2023] printk: systemd: 16 output lines suppressed due to ratelimiting
      kern  :warn  : [Fri Nov 24 10:54:49 2023] hrtimer: interrupt took 5416645 ns
      
    • 저장 정보:
      – 커널이 생성한 메시지와 경고를 저장하는 공간으로, 주로 시스템 이벤트와 관련된 로그 메시지를 포함
      – 커널 부팅 정보, 하드웨어 감지, 드라이버 로딩, 인터럽트, 오류 메시지 등을 저장
      – 부팅 시의 에러나 조치사항을 살펴보려면 이 메세지를 참조해야 함
      특히, 하드웨어 관련 문제나 커널 모듈 관련 문제를 진단하는 데 유용
  17. 저널 데이터베이스(영구: /var/log/journal/, 휘발성:/run/log/journal/)
    • 파일 형식: 저널 데이터베이스
    • 패키지: systemd-journald
    • 관련 명령어: journalctl (systemd의 저널 로깅 시스템을 사용하여 시스템 로그를 조회)
      [root@centos8 ~]# journalctl -f -u chronyd
      -- Logs begin at Wed 2023-11-22 00:29:48 KST. --
      Nov 25 01:55:56 centos8 chronyd[98739]: Using right/UTC timezone to obtain leap second data
      Nov 25 01:55:56 centos8 systemd[1]: Started NTP client/server.
      Nov 25 01:56:01 centos8 chronyd[98739]: Selected source 106.247.248.106 (2.centos.pool.ntp.org)
      Nov 25 01:56:01 centos8 chronyd[98739]: System clock wrong by 6354004.032021 seconds
      Feb 06 14:56:05 centos8 chronyd[98739]: System clock was stepped by 6354004.032021 seconds
      Feb 06 14:56:05 centos8 chronyd[98739]: System clock TAI offset set to 37 seconds
      
    • 저장 정보:
      – 로그 메시지를 스키마에 따라 구조화하고 메타데이터와 함께 더 많은 정보를 저장
      – 추가 정보 및 메타데이터가 저장되기 때문에 로깅 및 검색이 더 효율적
  18. /var/adm/sulog
    • 운영체계: Oracle Solaris 11.2
    • 파일형식: text
    • 저장정보:
      -시스템에서 su 명령을 실행하려는 사용자의 모든 시도에 대한 기록
      + : su 명령 성공, -: su 명령 실패
                     ▼
      SU 02/25 09:29 + console root-sys
      SU 02/25 09:32 + pts/3 user1-root
      SU 03/02 08:03 + pts/5 user1-root
      SU 03/03 08:19 + pts/5 user1-root
      SU 03/09 14:24 - pts/5 guest3-root
      SU 03/09 14:24 - pts/5 guest3-root
      SU 03/14 08:31 + pts/4 user1-root
      
  19. /var/log/httpd/access_log, /var/log/httpd/error_log
    • 파일형식: text
    • 패키지: Apache(httpd) 서버
    • 환경설정 파일: /ect/httpd/conf/httpd.conf파일의 CustomLog 지시자와 ErrorLog 지시자에 설정
    • access_log 저장정보: 웹 서버에 들어오는 HTTP 요청에 대한 접근 로그를 저장
      LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\””
      [root@centos8 ~]# cat /var/log/httpd/access_log
      192.168.56.1 - - [18/Mar/2024:06:41:53 +0900] "GET /icons/poweredby.png HTTP/1.1" 200 643 "http://192.168.56.104/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
      
      192.168.56.1                        ▷ 접속한 클라이언트의 호스트명 또는 IP주소
      -                                   ▷ 원격 로그이름(보통 “-”로 표시)
      -                                   ▷ 인증된 사용자 이름(보통 “-”로 표시)
      [18/Mar/2024:06:41:53 +0900]        ▷ 접속시간
      "GET /icons/poweredby.png HTTP/1.1" ▷ 요청 메소드 - GET, PUT 등
      200                                 ▷ 상태코드 - 200(OK), 403(Forbidden), 404(NOT FOUND) 등
      643                                 ▷ Body의 전송된 크기(byte)
      "http://192.168.56.104/"            ▷ 요청 URL
      "Mozilla/5.0 ....Safari/537.36"     ▷ 접속 정보 - 접속한 클라이언트의 OS 및 브라우저 정보 등
      
    • error_log 저장정보: 웹 서버에서 발생한 오류와 경고 메시지를 저장
      ErrorLogFormat “[%{u}t] [%-m:%l] [pid %P:tid %T] [client\ %a] %M”
      [root@centos8 ~]# cat /var/log/httpd/error_log
      [Mon Mar 18 06:41:53.777161 2024] [autoindex:error] [pid 3573:tid 139622756230912] [client 192.168.56.1:7771] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive
      
      [Mon Mar 18 06:41:53.777161 2024]      ▷ 오류가 발생한 날짜
      [autoindex:error]                      ▷ 오류를 생성한 모듈 : 로그 이벤트 수준
      [pid 3573:tid 139622756230912]         ▷ process id : thread id
      [client 192.168.56.1:7771]             ▷ 클라이언트의 IP 주소 
      AH01276: Cannot serve directory ...... ▷ 오류 로그 메시지
      

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다