Linux 로그 경로 정리 · 29/50 · Part 3. Ubuntu / Debian 로그 경로

선행 학습 → 28. RHEL과 Ubuntu 로그 경로 차이 · 10. Linux 로그를 읽을 때 주의할 점
이번 글 → 배포판별 로그 분석 전략
이어서 → 30. Linux 로그 경로 자동 탐색 스크립트

1. 들어가며

실무에서 만나는 서버는 교재와 다릅니다. 하드닝 템플릿, 오래된 OS, 컨테이너, 클라우드 이미지, 관리자가 바꿔 놓은 설정… 경로 암기는 금방 한계에 부딪힙니다. 필요한 것은 "처음 보는 서버에서도 5분 안에 로그를 찾아내는 절차"입니다.

핵심 요약

  • 순서: OS 확인 → Logging System 확인 → Service 확인 → Journal / File 확인 → Event 검색
  • 파일 경로의 정답은 설정 파일 안에 있다(rsyslog.conf, journald.conf, auditd.conf, 서비스 설정).
  • 파일이 없으면 저널, 저널이 없으면 중앙 수집본으로 내려간다.

2. 핵심 개념

단계질문확인 수단
OS어떤 계열·버전인가?/etc/os-release
Logging Systemjournald만? rsyslog도? auditd는?systemctl is-active, 패키지 조회
Service조사 대상 이벤트를 만드는 서비스는?systemctl list-units --type=service
Journal / File어디에 저장되나?rsyslog.conf 규칙, journald.conf Storage, 서비스 설정
Event무엇을 검색하나?키워드·필드·시간 범위

3. 로그 생성 구조

경로 암기 대신 '탐색 전략'

OS 확인 (/etc/os-release)
 ↓
Logging System 확인 ──┬─ rsyslog 있음 → 규칙 파일에서 경로 추출
                      ├─ journald 만   → journalctl (Storage=persistent?)
                      └─ auditd 있음   → auditd.conf log_file, 규칙 목록
 ↓
Service 확인 (sshd? ssh? nginx? mariadb?) → 서비스 설정에서 로그 경로
 ↓
Journal / File 확인 (존재·크기·mtime·순환 파일)
 ↓
Event 검색 (시간 범위 → 키워드 → 교차검증)

4. 실제 로그 경로

"정답이 적힌 곳" 목록:

알고 싶은 것확인할 설정
rsyslog 파일 경로/etc/rsyslog.conf, /etc/rsyslog.d/*.conf
저널 저장 위치/etc/systemd/journald.conf (Storage=), /var/log/journal 존재
감사 로그 경로/etc/audit/auditd.conf (log_file)
Apache/etc/httpd/conf/httpd.conf / /etc/apache2/ (ErrorLog, CustomLog)
Nginx/etc/nginx/nginx.conf (access_log, error_log)
MariaDB/MySQL/etc/my.cnf, /etc/my.cnf.d/ / /etc/mysql/ (log_error, general_log_file)
원격 전송rsyslog @@host / omfwd, Wazuh /var/ossec/etc/ossec.conf

5. 명령어 실습

# [1] OS
. /etc/os-release; echo "$ID $VERSION_ID ($ID_LIKE)"

# [2] Logging system
systemctl is-active systemd-journald rsyslog syslog-ng auditd 2>/dev/null
grep -E '^\s*Storage' /etc/systemd/journald.conf /etc/systemd/journald.conf.d/*.conf 2>/dev/null

# [3] 경로를 설정에서 추출 (rsyslog 파일 액션)
grep -hvE '^\s*#' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null | grep -oE '(file="|\s-?)/var/log/[^" ]+' | tr -d ' "-' | sed 's/^file=//' | sort -u
grep -E '^log_file' /etc/audit/auditd.conf 2>/dev/null

# [4] 서비스별 로그 경로
systemctl list-units --type=service --state=running --no-legend | awk '{print $1}' | head -30
grep -rhE '^\s*(ErrorLog|CustomLog|access_log|error_log|log_error|general_log_file)' /etc/httpd /etc/apache2 /etc/nginx /etc/my.cnf* /etc/mysql 2>/dev/null

# [5] 원격 전송 여부 (중앙 수집본 존재 가능성)
grep -rhE '@@?[0-9a-zA-Z]|omfwd' /etc/rsyslog.conf /etc/rsyslog.d/ 2>/dev/null
grep -A2 '<server>' /var/ossec/etc/ossec.conf 2>/dev/null

6. 로그 예시

실제 실행 결과 — Ubuntu 24.04 · root@ubuntu-lab — 로깅 시스템 판별

위 이미지는 Ubuntu 24.04 실습 환경에서 로깅 시스템을 실제로 판별한 결과입니다.

7. 로그 필드 분석

판별 결과에 따른 분석 경로:

판별 결과1차 소스2차 소스
rsyslog + journald(persistent) + auditd파일저널·audit 교차
rsyslog 없음, journald persistentjournalctl중앙 수집본
journald volatile, rsyslog 없음현재 부팅 저널만중앙 수집본 필수
auditd 없음인증·서비스 로그실행 흔적은 셸 히스토리·파일 시각(약한 증거)

8. 보안관점

  • 판별 과정에서 설정이 기본값과 다르면 그 자체가 조사 대상이다 (예: authpriv 규칙 삭제, Storage=none).
  • 설정 파일의 mtime/ctime과 사고 시간대를 비교한다.

9. SOC 관점

  • 온보딩 점검: 새 서버를 SIEM에 연결할 때 이 5단계로 로깅 구성을 문서화해 두면 사고 시 시간을 절약한다.
  • Triage: Alert 원본이 없을 때 "어디서 찾을지"를 이 순서로 결정한다.
  • Report: 판별 결과(가시성 수준)를 보고서 "분석 한계" 항목에 기록한다.

10. 실습 체크리스트

[ ] 5단계 순서 설명
[ ] rsyslog 규칙에서 파일 경로 추출
[ ] journald Storage 설정 확인
[ ] 서비스 설정에서 로그 경로 추출
[ ] 원격 전송 설정 확인
[ ] 판별 결과별 1차/2차 소스 선택

11. 핵심 정리

  • 로그 경로는 외우지 말고 설정에서 찾는다.
  • OS → 로깅 시스템 → 서비스 → 저장소 → 이벤트 순서로 좁혀 간다.
  • 파일이 없으면 저널, 저널이 휘발성이면 중앙 수집본이다.
  • 기본값과 다른 로깅 설정은 그 자체로 조사 대상이다.
  • 판별 결과는 분석의 한계로 보고서에 남긴다.

12. 다음 편 연결

구분글
◀ 이전 글28. RHEL과 Ubuntu 로그 경로 차이
▶ 다음 글30. Linux 로그 경로 자동 탐색 스크립트
시리즈Linux 로그 경로 정리 전체 보기
선행 시리즈리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글