Linux 로그 경로 정리 · 03/50 · Part 1. Linux 로그 기본 구조
선행 학습 → 02. Linux 로그가 생성되는 과정 · 기초 48. Linux 로그와 journalctl
이번 글 → /var/log 디렉터리 구조
이어서 → 04. Linux 로그 파일과 디렉터리 확인 방법
/var/log 는 Linux 로그의 기본 저장소입니다. 하지만 이 디렉터리 안에 무엇이 있는지는 배포판·설치 패키지·설정에 따라 서버마다 다릅니다. 이번 글에서는 "표준 목록 암기"가 아니라 디렉터리 구조를 보고 서버의 로깅 구성을 추론하는 법을 익힙니다.
핵심 요약
/var/log의 내용은 "무엇이 설치·설정되어 있는가"의 거울이다.- 파일(rsyslog 산출물) · 디렉터리(서비스별) · 바이너리(wtmp/btmp/lastlog, journal)로 나눠 본다.
- 파일이 없으면 → 오류가 아니라 설정 차이부터 의심한다.
/var/log 안의 항목은 만들어지는 주체에 따라 세 부류입니다.
| 부류 | 누가 만드나 | 예 |
|---|---|---|
| rsyslog 산출 텍스트 | rsyslog 규칙 (/etc/rsyslog.conf) | messages, secure, cron, maillog, syslog, auth.log |
| 서비스 전용 디렉터리 | 각 서비스 설정 | httpd/, nginx/, mariadb/, audit/, apt/ |
| 바이너리 기록 | login 계열, systemd | wtmp, btmp, lastlog, journal/ |
바이너리 파일은 cat으로 보지 않습니다. last, lastb, lastlog, journalctl 같은 전용 도구를 사용합니다.

/var/log [Rocky/RHEL 기본] [Ubuntu/Debian 기본]
├── messages | syslog 범용 시스템 로그 범용 시스템 로그
├── secure | auth.log 인증·권한 인증·권한
├── cron cron 실행 (syslog 에 포함, cron.log 는 기본 비활성)
├── maillog | mail.log 메일 메일
├── boot.log 부팅 시 서비스 출력 (환경별)
├── audit/audit.log auditd auditd 설치 시
├── httpd/ | apache2/ Apache Apache
├── nginx/ Nginx Nginx
├── dnf.log | apt/, dpkg.log 패키지 패키지
├── wtmp / btmp / lastlog 로그인 기록(바이너리) 동일
└── journal/ 영구 저널(존재 시) 영구 저널(기본 존재)
| 경로 | 내용 | 보는 도구 |
|---|---|---|
/var/log/messages (RHEL) | info 이상 범용 메시지 (mail·authpriv·cron 제외) | less, grep |
/var/log/secure (RHEL) | authpriv.* | grep |
/var/log/syslog (Ubuntu) | auth 제외 전체 | grep |
/var/log/auth.log (Ubuntu) | auth,authpriv.* | grep |
/var/log/audit/audit.log | 커널 감사 레코드 | ausearch, aureport |
/var/log/wtmp | 로그인/로그아웃/재부팅 | last -F |
/var/log/btmp | 로그인 실패 | lastb -F (root) |
/var/log/lastlog | 사용자별 마지막 로그인 | lastlog |
# 전체 구조 한눈에 (수정 시간순)
ls -lat /var/log | head -25
# 2단계 깊이까지 파일만
find /var/log -maxdepth 2 -type f | sort | head -40
# 텍스트 / 바이너리 구분
file /var/log/secure /var/log/wtmp 2>/dev/null
# 바이너리 로그는 전용 도구로
last -F | head -5
lastb -F 2>/dev/null | head -5

위 이미지는 Rocky Linux 9.8 실습 환경에서 실제로 실행한 /var/log 조회 결과입니다. 설치하지 않은 서비스의 디렉터리는 존재하지 않는다는 점을 확인할 수 있습니다.
아래는 로테이션 흔적을 설명하기 위한 예시 출력입니다.
[예시 출력]
-rw-------. 1 root root 48213 Sep 20 02:24 secure
-rw-------. 1 root root 211904 Sep 14 03:11 secure-20260914 ← Rocky: dateext (날짜 접미사)
-rw-r----- 1 syslog adm 38102 Sep 20 02:24 auth.log
-rw-r----- 1 syslog adm 51022 Sep 14 00:00 auth.log.1 ← Ubuntu: 숫자 접미사
-rw-r----- 1 syslog adm 9211 Sep 7 00:00 auth.log.2.gz ← delaycompress 후 압축
ls -l 결과에서 SOC가 보는 필드:
| 필드 | 의미 | 분석 포인트 |
|---|---|---|
권한 -rw------- | root만 읽기/쓰기 | 누구나 쓸 수 있으면 변조 위험 (5편) |
소유자/그룹 syslog adm | 기록 주체와 열람 그룹 | adm 그룹 구성원 = 로그 열람 가능자 |
| 크기 | 누적량 | 순환 직후가 아닌데 갑자기 작아졌다면 의심 |
| mtime | 마지막 기록 시각 | 서비스가 살아있는데 mtime이 멈춰 있으면 로깅 중단 의심 |
| 접미사 | 순환 방식 | -YYYYMMDD(RHEL) / .1 .2.gz(Ubuntu) |
| 정상 | 의심 |
|---|---|
| 설치된 서비스와 로그 디렉터리가 일치 | 설치 이력 없는 서비스 로그 디렉터리 존재 |
| 로테이션 주기(주 1회 등)에 맞춘 파일 증가 | 순환 파일 누락(secure-20260914 다음이 없음) |
secure 크기가 점진 증가 | 크기 0 또는 급감 |
/var/log 소유자 root | 일반 사용자 소유 로그 파일 |
localfile 로 등록할 수 있다(47편).location 필드(예: /var/log/secure)로 원본 파일을 바로 찾아간다.secure-2026*, auth.log.*.gz)까지 포함해야 사고 시간대를 모두 덮는다(42편).ls -la --time-style=full-iso)을 증거 목록에 포함한다.[ ] /var/log 항목을 rsyslog 산출 / 서비스 디렉터리 / 바이너리로 분류
[ ] 설치된 서비스와 로그 디렉터리 대응 확인
[ ] 바이너리 로그를 last / lastb / lastlog 로 확인
[ ] 로테이션 접미사로 배포판 추정
[ ] 비정상 크기·mtime·권한 파일 확인
[ ] 사고 시간대를 덮는 순환 파일 범위 확인
/var/log 의 구성은 서버의 설치·설정 상태를 그대로 반영한다.wtmp 등)는 전용 도구로 본다.messages/secure, Ubuntu는 syslog/auth.log 가 중심이다.-날짜, Ubuntu .숫자(.gz) 가 기본이다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 02. Linux 로그가 생성되는 과정 |
| ▶ 다음 글 | 04. Linux 로그 파일과 디렉터리 확인 방법 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |