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

선행 학습 → 03. /var/log 디렉터리 구조 · 기초 23. head와 tail
이번 글 → Linux 로그 파일과 디렉터리 확인 방법
이어서 → 05. 로그 파일의 권한과 소유권

1. 들어가며

로그를 "읽기 전에" 먼저 해야 할 일은 로그 파일 자체를 점검하는 것입니다. 언제 마지막으로 기록됐는지, 누가 쓸 수 있는지, 크기가 이상하지 않은지 — 이 메타데이터가 로그 내용의 신뢰도를 결정합니다.

핵심 요약

  • ls -lah → 전체 조망, find → 조건 검색, stat → 파일 하나의 정밀 메타데이터
  • 로그 파일의 mtime은 마지막 기록 시각, ctime은 메타데이터 변경 시각
  • 조사 시 less·cat은 atime을 바꿀 수 있다 → 필요한 경우 사본으로 작업

2. 핵심 개념

시간이름로그 파일에서의 의미
mtime (Modify)내용 변경마지막으로 로그가 추가/수정된 시각
ctime (Change)inode 변경권한·소유자 변경, 이름 변경, 내용 변경 시에도 갱신
atime (Access)읽기누가 읽었는지의 흔적 (relatime 정책으로 부정확)
Birth생성파일시스템·커널 지원 시 표시 (로테이션 후 새 파일 생성 시각)

3. 로그 생성 구조

로그 파일 조사 순서

[1] ls -lah /var/log       → 무엇이 있나 (크기·권한·mtime 조망)
        ↓
[2] find 조건 검색          → 최근 변경 / 비정상 권한 / 0바이트
        ↓
[3] stat 파일              → 정밀 시간(MAC+Birth), inode
        ↓
[4] 판단                    → 기록 중단? 변조? 정상 순환?

4. 실제 로그 경로

이번 글은 특정 파일이 아니라 /var/log 전체와 주요 파일을 대상으로 합니다.

/var/log/                     (전체 조망)
/var/log/secure  | auth.log   (인증 로그 메타데이터 확인 대상 1순위)
/var/log/audit/audit.log      (감사 로그 — 권한 0600 기대)
/var/log/journal/             (영구 저널 존재 여부)

5. 명령어 실습

# [1] 전체 조망: 사람이 읽기 쉬운 크기 + 정확한 시간
ls -lah --time-style=full-iso /var/log | head -30

# [2] 조건 검색
find /var/log -maxdepth 2 -type f -mmin -60            # 최근 60분 내 기록된 로그
find /var/log -type f -size 0                           # 0바이트 로그 (순환 직후 or 비움)
find /var/log -type f -perm -o+w                        # 누구나 쓸 수 있는 로그 (위험)
find /var/log -type f ! -user root -printf '%u %p\n'    # root 소유가 아닌 로그

# [3] 정밀 확인
stat /var/log/secure
stat -c '%n | size=%s | perm=%a | owner=%U:%G | mtime=%y | ctime=%z' /var/log/secure*

stat /var/log/* 처럼 와일드카드로 한 번에 볼 수도 있지만 출력이 길어집니다. stat -c 포맷으로 한 줄씩 요약하는 편이 비교에 유리합니다.

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — stat로 시간 정보 확인

위 이미지는 Rocky Linux 9.8 실습 환경에서 실제로 실행한 stat 결과입니다.

아래는 판단 예를 설명하기 위한 예시 출력입니다.

[예시 출력]
/var/log/secure | size=0     | perm=600 | owner=root:root | mtime=2026-09-20 02:23:40 | ctime=2026-09-20 02:23:40
/var/log/secure-20260914 | size=211904 | perm=600 | owner=root:root | mtime=2026-09-14 03:11:02 | ctime=2026-09-14 03:11:02

해석: 현재 secure 가 0바이트이고 mtime이 새벽 02:23 — 정기 로테이션 시각(보통 cron.daily 새벽 3시대)과 맞지 않습니다. "비워졌을 가능성"을 가설로 세우고 journald·audit·원격 로그로 확인합니다(44편).

7. 로그 필드 분석

stat 필드확인 질문
Size서비스 활동량 대비 너무 작지 않은가?
Access: (0600/-rw-------)로그 권한이 기대값과 같은가?
Uid / Gidroot / syslog / adm 외 소유자가 있는가?
Modify마지막 기록 시각이 현재와 크게 떨어져 있지 않은가?
ChangeModify와 다르다면 무엇(권한·소유권·이름)이 바뀌었나?
Birth로테이션으로 새 파일이 만들어진 시각과 맞는가?
Inode파일이 교체(삭제 후 재생성)되면 inode가 바뀐다

8. 보안관점

정상의심
mtime이 최근(서비스 활동 중)서비스는 활발한데 mtime이 수 시간 전에서 멈춤
Change == Modify (기록에 의한 갱신)Change만 최근 → 권한/소유자 변경 흔적
순환 직후에만 0바이트순환 시각과 무관한 0바이트
inode가 로테이션 시점에만 변경로테이션 없이 inode 변경(파일 교체)

9. SOC 관점

  • Wazuh FIM(syscheck) 을 로그 디렉터리에 적용하면 권한·소유자 변경을 Alert로 받을 수 있다. (단, 계속 바뀌는 로그 내용 자체는 FIM 대상에서 제외하는 것이 일반적)
  • Triage: "로그가 안 들어온다"는 수집 경보(Agent disconnected / no events) 발생 시 첫 확인은 stat 의 mtime.
  • Evidence: 수집 시점의 stat 출력은 증거 목록(Chain of Custody)에 함께 기록한다(45편).

10. 실습 체크리스트

[ ] ls -lah --time-style=full-iso 로 /var/log 조망
[ ] find 로 최근 변경 / 0바이트 / o+w / 비root 소유 로그 검색
[ ] stat 로 secure(auth.log) 의 MAC 타임 확인
[ ] Modify 와 Change 가 다른 이유 설명 가능
[ ] inode 변화로 파일 교체 여부 판단
[ ] 결과를 증거 목록 형식으로 기록

11. 핵심 정리

  • 로그 내용보다 먼저 로그 파일의 메타데이터를 본다.
  • mtime = 마지막 기록, ctime = 메타데이터 변경, inode 변경 = 파일 교체.
  • find 로 0바이트·쓰기 가능·비root 소유 로그를 빠르게 걸러낸다.
  • 비정상 메타데이터는 가설일 뿐, 다른 로그로 교차검증한다.
  • 조사 결과(stat 출력)는 증거 기록으로 남긴다.

12. 다음 편 연결

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

0개의 댓글