리눅스 책 정리(8)

eunyeong·2023년 2월 20일
0

Linux_book

목록 보기
8/8

8단원 로그 관리

[학습목표]

  • 운영적인 측면과 보안적인 측면에서 매우 중요한 용도로 쓰이는 이벤트에 대한 기록(로그)의 개념에 대해 알아보기
  • 이벤트 로그 관리 시스템인 rsyslog에 대해 알아보고 설정하는 법에 대해 알아보기
  • systemd-journal을 통해 저장된 로그 데이터를 조회하는 방법에 대해 알아보기

8.1 로그 아키텍쳐

8.1.1 로그 관리 데몬

8.1.2 로그 파일 위치

  • 다음 데이터들이 Systemd-journald 데몬에게 전달

: 커널로그메시지, syslog 메시지, 표준출력 및 에러에 대한 서비스 메시지

  • /run/log/journal 디렉토리에 모든 로그를 저장한 저널 데이터 파일을 생성
  • syslog 형태의 로그는 rsyslogd에 전달됨. 그 로그들은 /var/log 에 해당 로그 파일들을 생성하고 저장.

8.1.3 로그 파일의 순환

  • 로그 파일이 생성된 후 일정 기간이 지나거나 일정 크기에 도달한 경우 백업 후 새로운 로그 파일을 생성해야함. 또한 백업 파일도 일정 기간, 일정 개수가 늘어날 경우 삭제하도록 하는데 이를 순환이라고 함.
  • cron작업에 의해 logrotate 유틸리티를 사용하여 이루어짐
  • /etc/logroate.conf 파일을 사용하여 설정할 수 있음

8.2 rsyslogd

  • 유닉스나 리눅스 계열 시스템에서 로그를 기록하기 위한 표준 프로토콜인 syslog에서 암호화 옵션 등을 추가하여 보안이 강화된 프로세스
  • /etc/rsyslog.conf 파일을 사용하여 저장할 로그의 종류 및 우선순위를 설정할 수 있음

8.2.1 /etc/rsyslog.conf

  • Rule 부분에는 전달되는 로그의 규칙들이 정의되어 있음
  • 규칙을 정의할 때 공백을 기준으로 앞부분은 필터(Filter)라고 하고 뒷부분을 행동(Action)이라 함
  • 필터는 현재 기능과 우선순위 형식으로 되어있음
  • 행동 부분은 필터에 해당하는 로그들이 저장되는 파일의 위치

8.2.2 필터(Filter)

* 기능 부분에 표시 되어 있다면 모든 기능의 로그를 의미함

** 우선순위가 지정되면 해당 우선순위뿐만 아니라, 상위의 우선순위까지 포함됨

기능 기반 필터설명
kern커널메시지
user유저 레벨 메시지
mail메일 관련 메시지
deamon시스템 데몬 메시지
auth및 인가 메시지
cron스케줄 작업 메시지
authpriv보안 및 인가 메시지
ftpftp 데몬 메시지
local0-local7사용자 정의 기능
우선순위 기반 필터 (0부터 7까지)설명
emerg시스템 사용 불가
alert즉시 조취를 취해야 할 상태
crit치명적인 상태
err, error에러발생
warn, warning경고발생
notice일반적이지만 중요
info정보
debug디버깅 메시지

8.2.3 행동(Action)

1) 로그 파일에 저장

  • /var/log/secure과 같이 행동 부분에 해당 파일 경로를 입력함. 복수의 필터 규칙이 지정될 경우 전체 필터의 로그 메시지를 한 파일에 저장
  • 일반적으로 syslog에 의해 발생된 로그는 바로 동기화가 이루어지지만 Dash(-) 기호가 추가로 있는 경우 메모리 버퍼에 저장한 후 여유가 있을 때 한꺼번에 저장함

2) 사용자에게 전달

  • omusrmsg는 사용자 메시지 출력 모듈, 로그인 된 사용자에게 선택된 로그 메시지를 전달

3) 기타 로그 메시지 전달 방식

  • 콘솔 및 터미널, 원격 시스템, Discard(~)

8.3 systemd-journald

  • 저널 데이터는 구조화되어 있어 인덱싱을 통해 사용자가 원하는 내용을 쉽고 자세하게 찾을 수 있다는 장점이 있음

8.3.1 journalctl 사용

  • journalctl [option][argument]

1) 기본 사용

  • 기본 journalctl 을 실행할 경우 현재 저장된 저널 데이터를 순차적으로 출력함
  • 출력은 시간 순으로 출력되고, 가장 먼저 출력되는 데이터는 시스템이 부팅 될 때 발생하는 이벤트

2) 우선순위를 지정하여 저널 데이터 출력

  • journalctl + “-p” 옵션을 사용하여 특정 우선순위를 지정하여 로그를 출력할 수 있음
  • alert 우선순위부터 err 우선순위까지 범위를 지정하는 경우 journalctl -p alert..err와 같이 시작과 끝을 지정하여 사용 가능

3) 최근에 발생한 저널 데이터 출력

  • journalctl -r : 최근의 저널 데이터부터 역순으로 로그를 조회하고 싶을 경우 사용함
  • journalctl -n : 최근 데이터부터 일정 개수를 조회할 경우에 옵션 뒤에 숫자를 입력하여 지정 가능. 기본 값은 10으로 지정되어 있음

4) 저널 데이터 모니터링

  • journalctl -f : 최근에 발생한 저널 데이터 10개 출력 후 포그라운드 상태로 출력 대기 상태를 유지함.

5) 특정 날짜의 저널 데이터 조회

  • journalctl —since ‘YYYY-MM-DD hh:mm:ss’ 형식을 사용함. 기본 시간 값은 00:00:00으로 지정됨.

6) 특정 기간의 저널 데이터 조회

  • journalctl —since ‘yyyy-mm-dd hh:mm:ss’ —until ‘yyyy-mm-dd’

7) 저널 데이터의 출력 설정

  • journalctl -o [output-type]
  • output-type : short, verbose, json, json-pretty 등..
short기본 출력 형식
verboseshort에서 출력 되지 않는 전체 정보 출력
json한줄로 만들어진 json 파일로 출력
json-pretty정렬된 json 파일

8) 특정 저널 데이터 검색

  • journalctl -o verbose(output-type) 를 이용하여 로그 메시지의 정보를 찾음. 그 중 pid,uid,gid 등의 정보를 통해 해당 값을 지정하여 찾을 수 있음.
  • journalctl _PID=1 과 같이 지정하여 사용
_PID로그 프로세스의 PID
_UID로그 발생 사용자의 UID
_GID로그 발생 그룹의 GID
_COMM로그를 발생시킨 명령
_SYSTEMD_UNIT로그를 발생시킨 서비스의 유닛 명
  • 서로 다른 검색조건을 사용한 경우 AND조건이 출력되고
  • 같은 검색조건에 다른 값을 사용할 경우 과 OR 조건이 출력됨

8.3.2 저널 데이터의 영구 저장

  • 저널 데이터가 저장되는 파일은 시스템이 재부팅 되면 삭제됨

1) 설정 방법

  1. 기존 디렉토리 설정 값 확인
  • ls -ld /run/log/journal/ 을 통해 정보를 확인하고 (사용자, 사용자 그룹, 권한 정보 등 확인)
  • 저널 데이터를 영구적으로 저장할 디렉토리에 동일하게 권한 및 소유권 정보를 설정함
  1. 저널 데이터 저장 디렉토리 생성 및 설정 변경
  • mkdir /var/log/journal
  • chown root:systemd-journal /var/log/journal
  • chmod g+s /var/log/journal
  • systemctl restart systemd-journald

*** 저널 데이터 파일의 크기가 현재 파일시스템 전체 사이즈의 10%를 초과하면 안됨

*** 현재 파일시스템의 여유 공간 중 15%를 초과하면 안됨

2) journalctl boot-id

  • journalctl —list-boots 를 통해 시스템 재부팅으로 인해 분리된 저널 데이터를 각각 조회할 수 있음
  • 어느 부트 번호(boot-id)가 어느 시간대의 저널 데이터를 저장하고 있는 지 확인할 수 있음.
  • 해당 부트 번호를 지정하여 저널 데이터를 조회할 수 있음 ex) journalctl -b 9d40df62411b499b80659f47cceca727
profile
아무것도 모르는 초보

0개의 댓글