Linux 로그 경로 정리 · 10/50 · Part 1. Linux 로그 기본 구조

선행 학습 → 09. Linux 로그와 보안 이벤트의 관계
이번 글 → Linux 로그를 읽을 때 주의할 점
이어서 → 11. Rocky Linux 주요 로그 경로

1. 들어가며

로그 분석에서 가장 위험한 결론은 "로그에 없으니 일어나지 않았다" 입니다. 로그는 설정된 범위 안에서만, 정상 동작하는 동안에만, 변조되지 않았을 때만 사실을 말합니다. Part 1을 마무리하며 로그를 읽을 때의 함정을 정리합니다.

핵심 요약

  • 로그는 완전하지도, 유일하지도, 변하지 않지도 않는다.
  • 결론 전에 "기록 범위 · 중복 · 환경 차이 · 무결성 · 시간"을 점검한다.
  • "없음"은 결론이 아니라 추가 조사 항목이다.

2. 핵심 개념

#함정실제 예확인 방법
1모든 이벤트가 로그로 남지 않음auditd 룰 없는 서버에서 명령 실행 기록 부재auditctl -l, 수집 정책 문서
2같은 이벤트가 여러 로그에 기록SSH 로그인이 secure·journal·audit·wtmp 에 모두 존재건수 집계 시 소스별로 분리
3배포판별 차이Rocky secure ↔ Ubuntu auth.log/etc/os-release
4설정에 따른 차이Ubuntu 24.04 기본은 cron.log 비활성/etc/rsyslog.conf, rsyslog.d/
5로그 삭제·변조 가능root 권한으로 sed -i 한 줄 삭제원격 로그·audit·journal 대조
6시간 동기화 문제서버 간 3분 차이, TZ 불일치timedatectl, chronyc tracking

3. 로그 생성 구조

로그 해석의 6가지 함정

                   ┌─ (1) 기록 범위 밖 → 로그 없음
Event ─────────────┼─ (2) 여러 경로 → 중복 기록
                   ├─ (3)(4) 환경·설정 → 다른 파일, 다른 형식
                   ▼
                  Log ─── (5) 삭제·변조 ───▶ 남은 로그만 보임
                   │
                   └─ (6) 시간 오차 ───▶ 순서가 틀린 타임라인

4. 실제 로그 경로

함정별로 확인할 설정·로그 위치입니다.

(1) /etc/audit/rules.d/*.rules, auditctl -l          → 기록 범위
(2) /var/log/secure, journal, audit.log, wtmp          → 중복 소스
(3) /etc/os-release                                   → 배포판
(4) /etc/rsyslog.conf, /etc/rsyslog.d/, /etc/systemd/journald.conf → 저장 설정
(5) 중앙 로그 서버 사본, /var/log/audit/audit.log      → 대조 소스
(6) /etc/chrony.conf, timedatectl                     → 시간

5. 명령어 실습

# (1) 기록 범위
auditctl -l | head; grep -E '^Storage|^#Storage' /etc/systemd/journald.conf

# (2) 중복 확인: 같은 로그인이 몇 개 소스에 있는가
grep -c 'Accepted' /var/log/secure
journalctl -u sshd --since today | grep -c Accepted
last -F | grep -c 'pts/'

# (4) 설정 차이: 규칙이 실제로 켜져 있는가
grep -vE '^\s*#|^\s*$' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null

# (5) 로깅 서비스 중단 흔적
journalctl -u rsyslog -u auditd -u systemd-journald --since "-7d" | grep -Ei 'stop|start|exit'

# (6) 시간
timedatectl | grep -E 'Time zone|synchronized'

6. 로그 예시

아래는 함정을 설명하기 위한 예시 로그입니다.

[예시] 함정 (5): 로컬 secure 에는 02:13~02:15 기록이 없지만 …
  local  /var/log/secure    : Sep 20 02:15:30 web01 sudo[4150]: deploy : ... COMMAND=/bin/bash
  central /logs/web01/secure: Sep 20 02:14:52 web01 sshd[4101]: Accepted password for deploy from 203.0.113.45 ...
  → 로컬에는 "로그인 기록 없이 sudo 만 있는" 모순이 생긴다. (44편에서 실제 실습)

[예시] 함정 (6): 서버 간 시간 차이
  web01  Sep 20 02:14:52  Accepted password for deploy
  fw01   Sep 20 02:11:40  ALLOW 203.0.113.45 → web01:22     ← 3분 12초 느린 시계

7. 로그 필드 분석

관찰성급한 결론올바른 다음 단계
명령 실행 로그 없음"명령 실행 안 함"auditd 룰 존재 여부 확인
로그인 5건 × 소스 3개 = 15건 집계"로그인 15회"소스별로 분리, 세션 ID/PID로 중복 제거
cron 파일 없음 (Ubuntu)"cron 기록 없음"syslog / journal -u cron 확인
특정 구간 로그 공백"공격자가 삭제"재부팅·로테이션·서비스 중단·저부하 시간대 여부 확인
이벤트 순서 역전"로그 조작"NTP, TZ, 버퍼링 지연 확인

8. 보안관점

  • 정상: 공백 구간이 재부팅(-- Boot), 로테이션 시각, 서비스 재시작과 일치.
  • 의심: 공백 앞뒤에 root 세션이 있고, audit에 로그 파일 대상 sed/truncate/> 기록이 있으며, 원격 로그에는 해당 구간이 존재.

의심이 3가지 이상 겹칠 때 "변조 가능성 높음"으로 판단하고, 하나만으로는 단정하지 않습니다.

9. SOC 관점

SOC 단계함정 대응
Detection수집 파이프라인 헬스 체크(에이전트 끊김, 이벤트 급감)도 Alert로 운영
Triage"로그 없음"을 종결 사유로 쓰지 않는다
Investigation최소 2개 이상 독립 소스로 교차검증
Report가시성 한계(수집 범위, 시간 보정값)를 명시

10. 실습 체크리스트

[ ] 6가지 함정 설명 가능
[ ] auditd / journald / rsyslog 기록 범위 확인
[ ] 동일 이벤트 중복 소스 확인
[ ] 로깅 서비스 중단 흔적 조회
[ ] 서버 간 시간 편차 확인
[ ] "로그 없음"을 조사 항목으로 전환하는 문장 작성

11. 핵심 정리

  • 로그는 설정된 범위 안의 사실만 기록한다.
  • 같은 이벤트가 여러 로그에 남으므로 집계 시 중복을 제거한다.
  • 배포판·설정 차이로 파일 이름과 존재 여부가 달라진다.
  • 로그 공백은 삭제의 증거가 아니라 조사의 출발점이다.
  • 시간 동기화와 기준 시간대를 확인하지 않은 타임라인은 신뢰할 수 없다.
  • 결론은 독립된 2개 이상의 소스로 교차검증한 뒤 내린다.

12. 다음 편 연결

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

0개의 댓글