ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Rocky9: Log
    공부합시다!/LInux 2023. 1. 14. 00:16
    728x90

    OS 및 Process는 system이 운영중일 때 발생하는 Event Log를 기록 및 저장합니다. 

    이러한 Log는 System Audit 및 Troubleshooting에 사용됩니다. 

    cat, less, tail등의 Utilyty를 이용하여 다양한 Log를 검사합니다.

     

    RHEL은 syslog protocol을 기반으로 하는 표준 로깅 시스템을 사용하여 시스템 메세지를 기록.

    다양한 프로그램들이 logging system을 사용하여 event를 저장하고 Log File을 구성합니다.

    RHEL에서는 systemc-journal과 rsyslog Service가 syslog메세지를 처리합니다.

     

    1. systemd-journal Service 에서 수집하는 event

     1.1. system kernel

     1.2. Booting Process 초기 단계의 출력

     1.3. Daemon Standard Output 및 Standard Error

     1.4. syslog event

     

    2. systemd-journald 서비스

     2.1 로그를 표준 형식으로 재구성하고 인덱싱된 구조적 시스템 저널에 저장합니ㅏㄷ. 

     2.2 기본적으로 이 저널은 재부팅 후 유지되지 않는 파일 시스템에 저장

     

    3. rsyslog 서비스

     3.1. 재부팅 후에도 지속되는 /var/log 디렉터리의 로그 파일에 syslog 메시지를 정렬하고 저장.

     3.2 각 메시지를 전송한 프로그램 유형 및 각 syslog 메시지의 우선 순위에 따라 로그 메시지를 특정 로그 파일에 정렬.

     

    4. /var/log 디렉토리 

     4.1.  시스템의 다른 서비스의 로그 파일이 포함

     4.2.  Apache 웹 서버는 /var/log 디렉터리의 하위 디렉터리에 있는 파일에 로그 메시지를 저장

    Log File 저장 Message 유형
    /var/log/message 대부분의 syslog 메시지가 여기에 기록. 단, 인증 및 이메일 처리와 예약된 작업 실행에 대한 메시지, 순수하게 디버깅에만 관련된 메시지는 예외.
    /var/log/secure 보안 및 인증 이벤트에 대한 syslog 메시지
    /var/log/maillog 메일 서버에 대한 syslog 메시지
    /var/log/cron 예약된 작업 실행에 대한 syslog 메시지
    /var/log/boot.log 시스템 시작에 대한 비 syslog 콘솔 메시지

     

    5. Event 저장

     5.1. 다양한 프로그램이 syslog Protocol을 사용하여 Event를 system log에 저장

     5.2.  각 로그 메시지는 기능(메시지를 생성하는 하위 시스템) 및 우선 순위(메시지 심각도)에 따라 분류.

     5.3. syslog 우선 순위

    Code 우선순위 설명
    0 emerg 시스템을 사용할 수 없음
    1 alert 즉각적인 조치 필요
    2 crit 심각한 상태
    3 err 심각하지 않은 오류 상태
    4 warning 경고 상태
    5 notice 정상적이지만 중요한 이벤트
    6 info 정보 이벤트
    7 debug 디버깅 수준의 메세지

     5.4. syslog 기능

    Code 기능 설명
    0 kern kernel Message
    1 user user level Message
    2 mail Mail System Message
    3 daemon System Daemon Message
    4 auth 인증 및 보안 Message
    5 syslog 내부 syslog Message
    6 lpr 프린터 Message
    7 news Network News Message
    8 uucp uucp protocol Message
    9 cron cron daemon Message
    10 authpriv non system 권한 부여 메세지
    11 ftp FTP Protocol Message
    16-23 local0~local7 사용자 지정 Local Message

     

     5.4. rsyslog 서비스는 로그 메시지의 기능 및 우선 순위를 사용하여 메시지를 어떻게 처리할지 결정

      5.4.1. 규칙은 /etc/rsyslog.conf 파일과 /etc/rsyslog.d 디렉터리의 파일(.conf 확장자)에서 이 기능과 우선 순위를 구성.

      5.4.2. 소 프트웨어 패키지는 /etc/rsyslog.d 디렉터리에 적절한 파일을 설치하여 규칙을 쉽게 추가 가능.

      5.4.3. syslog 메시지를 저장하는 방법을 제어하는 각 규칙에 해당하는 하나의 줄이 구성파일에 존재.

      5.4.4. 각 줄의 왼쪽은 규칙과 일치하는 syslog 메시지의 기능 및 우선 순위

      5.4.5. 각 줄의 오른쪽은 로그 메시지를 저장하거나 메시지를 전달할 파일을 표시

      5.4.6. 별표(*)는 모든 값과 일치하는 와일드카드입니다.

       5.4.6.1. 임의의 우선 순위로 authpriv 기능에 전송된 event를 /var/log/secure 파일에 저장

      5.4.7. 로그 메시지가 rsyslog.conf 파일에서 두 개 이상의 규칙과 일치하는 경우

       5.4.7.1. 이 경우 하나의 메시지가 두 개 이상의 로그 파일에 저장됩니다.

      5.4.8. 우선 순위 필드의 none 키워드는 저장되는 메시지를 제한하기 위해 표시된 기능에 대한 메시지가 지정된 파일에 저장되지 않음.

      5.4.9. syslog 메시지를 파일에 기록하는 대신 로그인한 모든 사용자의 터미널로 출력 가능

       5.4.9.1. rsyslog.conf 파일에는 우선 순위가 emerg인 모든 syslog 메시지를 로그인한 모든 사용자의 터미널로 출력

     

    # /etc/rsyslog.conf

     

    6. Log File 순환

     6.1. logrotate 명령은 /var/log 디렉터리의 공간을 너무 많이 차지하지 않도록 로그 파일을 순환

     6.2.로그 파일이 순환되면 순환 날짜를 나타내는 확장자로 파일 이름이 변경.

      6.2.1. 이전 /var/log/messages 파일이 2022년 3월 20일에 순환되면 /var/log/messages-20220320 파일로 이름변경.

      6.2.2. 이전 로그 파일이 순환되면 로그 파일을 생성하고 로그 파일을 작성한 서비스에 통보.

     6.3. 일반적으로 4주 기간 순환된 후 디스크 공간을 확보하기 위해 가장 오래된 로그 파일부터 삭제

     6.4. cron 작업은 logrotate 명령을 매일 실행하여 로그 파일의 순환 요구 사항 확인

     6.5. 대부분의 로그 파일은 매주 순환

     6.6. logrotate 명령은 일부 로그 파일을 더 빠르게 또는 더 느리게 순환하거나 특정 크기에 도달할 때 순환.

     

    7. syslog 항목 분석

     7.1.로그 메시지는 로그 파일 시작 부분에 가장 오래된 메시지가 있고 끝에 최신 메시지가 있는 상태로 시작

     7.2. rsyslog 서비스는 표준 형식을 사용하여 로그 파일에 항목을 기록

      7.2.1. /var/log/secure log file의 log message 구조

    Jan 06 20:11:48 localhost sshd[1403]: Failed password for root from 10.0.0.253 port 59344 ssh2
    
    Jan 06 20:11:48			Time Stamp
    localhost				log Message를 전송한 Host
    sshd[1403]				log Message를 전송한 App or Process Name 및 PID 
    Failed password for~	전송된 Message
     

     

    8. Log Event Mornitoring

     8.1. tail -f /path/to/file 명령은 지정된 파일의 마지막 10줄을 출력하며, 파일에 새로 작성된 줄을 계속 출력

      8.1.1. 실패한 login 시도 모니터링

    첫 번째 터미널에서 tail 명령을 실행합니다.
    [root@host ~]# tail -f /var/log/secure
    
    두 번째 터미널에서 ssh 명령을 실행합니다.
    [root@local ~]# ssh root@localhost
    root@localhost's password: It1
    ...output omitted...
    [root@hostA ~]#
    
    로그 메시지는 첫 번째 터미널에 표시됩니다.
    ...output omitted...
    Mar 20 09:01:13 host sshd[2712]: Accepted password for root from 10.0.0.1 port 56801 ssh2
    Mar 20 09:01:13 host sshd[2712]: pam_unix(sshd:session): session opened for user root by (uid=0)

     

    9. 수동으로 syslog Message 전송

     9.1. logger 명령은 rsyslog 서비스에 메시지를 전송

     9.2. logger은 -p 옵션으로 달리 지정하지 않는 한, 우선 순위가 notice인 사용자 유형(user.notice)에 메시지를 전송합

     9.3. rsyslog 서비스 구성에 대한 변경 사항을 테스트 활요.

      9.3.1. /var/log/boot.log 로그 파일에 기록되는 rsyslog 서비스에 메시지를 전송

     

    10. Log 확인 명령어 및 파일

     10.1. # w, who, whoami

       10.1.1. 현재 login한 사용자 정보

       10.1.2. /var/run/utmp

     10.2. # last

      10.2.1. 성공한 login, out 정보

      10.2.1. /var/log/wtmp

     10.3. lastb

      10.3.1. 실패한 login 정보

      10.3.2. /var/log/btmp

     10.4. lastlog

      10.4.1. 사용자별 마지막으로 login한 정보

      10.4.2. /var/log/lastlog

     

    지금까지 Log 정보에 대해서 살펴보았습니다.

    다음은 journalctl 입니다.

     

    Have a nice day!

     

     

    728x90

    '공부합시다! > LInux' 카테고리의 다른 글

    Rocky9: root password reset  (0) 2023.01.17
    Rocky9: NTP (Network Time Protocol)  (0) 2023.01.15
    Rocky9: System Journal  (0) 2023.01.13
    Rocky9: sudo  (0) 2023.01.12
    CentOS7: at & cron  (0) 2023.01.03
Designed by Tistory.