AnbyMata의 해킹 노트

[Blue Team] EP.7 - Linux 로그 구조 및 파일 체계 본문

Blue Team (SOC)/Linux Log Analysis

[Blue Team] EP.7 - Linux 로그 구조 및 파일 체계

AnbyMata 2026. 4. 20. 22:00

[7-1] Linux 로그의 기본 지도 - /var/log 

인증 및 권한 (Auth & Permission)

- /var/log/auth.log (Ubuntu/Debian) & /var/log/secure (RHEL 계열)

→ 사용자 로그인 성공/실패, sudo 권한 상승, su 전환 등 인증과 관련된 기록들

 

시스템 및 서비스 (System & Service)

- /var/log/syslog (Ubuntu/Debian) & /var/log/messages (RHEL 계열)

→ 시스템 전반의 운영 메시지 및 커널 로그 기록들

 

- /var/log/kern.log (Ubuntu/Debian) & /var/log/dmesg (RHEL 계열)

커널 수준에서 발생하는 하드웨어 및 드라이버 관련 메시지

 

- journalctl

systemd 기반의 바이너리 로그를 조회하는 도구.

→ 전통적인 파일 로그에 남지 않은 서비스 단위의 상세 내역 확인에 사용

 

감사 및 행위 (Audit & Behavior)

- /var/log/audit/audit.log

auditd 서비스가 기록하는 커널 수준의 감사 로그 기록들

→ 파일 접근이나 명령어 실행등의 정밀 분석에 사용

 

- ~/.bash_history

→ 사용자가 shell에서 입력한 명령어 기록들

→ 조작 가능성이 높아 보조 지표로만 사용

 

세션 및 접속 기록 (Session Records)

- /var/log/wtmp

→ 과거 및 현재의 로그인/로그아웃 전체 기록

 

- /var/log/btmp

→ 실패한 로그인 시도들만 기록

→ brute force 공격 탐지에 효과적

 

- /var/log/lastlog

→ 계정별 마지막 로그인 시각

 

 

[7-2] auth.log / secure 주요 기록

- SSH 인증 실패 (Failed password, Failed publickey)

 + invalid user(외부 IP가 존재하니 않는 계정)이나 root(관리자 계정)으로 접속 시도

 + brute force (무차별 대입) 공격의 직접적인 증거

 

- SSH 인증 성공 (Accepted password, Accepted publickey)

 + 인증이 성공하여 세션이 열린 기록

 + 평소와 다른 시간대나 생소한 IP에서의 인증 성공은 계정 탈취의 가능성일 수 있음

 

- 권한 상승 및 전환 (sudo, su)

 + 일반 사용자가 관리자 권한을 획득하거나 다른 계정으로 전환한 기록

 

- PAM 및 세션 관련 메시지

 + 계정 잠금, 정책 위반 기록

 + 세션의 시작과 종료 (session opened/closed)를 기록하여 공격자의 체류 시간 파악

 

 

[7-3] syslog / messages 주요 기록

- 서비스 운영 및 프로세스 실행 추적

 + systemd나 각종 데몬의 시작/중지 이력 및 서비스 제어 기록

 → auth.log 에서 성공한 로그인 시점 확인 후, 같은 시각 syslog 에서 어떤 서비스나 의심스러운 프로세스가 설행되었는지 대조하여 로그인 직후의 행위를 추적

 

- 스케줄러 (cron) 기반 지속성 감시

 + 예약된 스케줄러 (cron)가 실행된 시점과 실행된 명령어 기록

 → 야간, 주말 등의 취약 시간대에 실행된 비정상적인 cron 기록을 통해 공격자가 재부팅 후에도 권한 유지를 위해 심어둔 persistence(지속성 유지) 수단을 찾음

 

- 시스템 이상 징후 및 장애 분석

 + 서비스 장애, 커널 오류, 네트워크 상태 변경 등 시스템의 전반적인 오류와 경고 메시지 기록

 → 서비스의 갑작스런 재시작 또는 로그 삭제 시도 흔적이 공격자의 활동 시간과 일치하는지 확인해 안과관계 증명

 

- 애플리케이션 계층 공격 탐지

 + Nginx나 Apache 같은 웹 서버가 syslog 로 보내는 상세 에러 메시지 기록

 → 웹 서비스 공격 (access.log) 징후가 보이면, 즉시 syslog 에서 관련 서비스의 비정상 종료나 상세 에러를 확인해 공격의 실체와 성공 여부 파악

 

 

[7-4] journalctl 

- journalctl = systemd-journald 서비스가 수집한 바이러이 형식의 로그를 조회하는 도구

- 공격자가 흔적 제거를 위해 /var/log/auth.log 같은 텍스트 파일을 삭제해도 바이너리 저널에 원본이 남아 있을 수 있음

- 서비스별 깔끔한 필터링 가능

- 부팅 세션별로 로그가 구분되어 사고 타임라인 구성이 편리

- 기본 설정에 따라 재부팅 시 로그 소실 가능

- 보통 SIEM 수집기는 파일 로그 기반이라, 저널 로그가 텍스트 파일로 정상 전달되는지 점검 필요

 

journalctl 주요 명령어

1. 침투 흔적 및 실시간 모니터링

 - `journalctl -xe`

 → 시스템의 최신 이벤트와 상세 오류 메시지 함께 확인

 

 - `journalctl -u sshd`

 →  SSH 서비스 관련 로그만 필터링하여 조회

 

2. 특정 시간대 및 조건별 추적

 - `journalctl -u cron --since "2026-04-20 00:00:00"`

 → 특정 시점 이후의 예약 작업 실행 기록 확인

 

 - `journalctl _COMM=sudo`

 → sudo 명령을 실행한 기록만 필터링하여 조회

 

 - `journalctl -k`

 → kernel에서 발생하는 이벤트만 필터링하여 조회

 

3. 시스템 부팅 및 오류 세션 분석

 - `journalctl -b`

 → 현제 부팅 세션의 전체 로그 확인

 

 - `journalctl -b -1`

 → 재부팅 직전 시점의 로그 확인

 

 - `journalctl -p err -n 50`

 → 가장 최근 발생한 에러(err) 등급 이상의 로그 50줄 조회

 

 

[7-5] wtmp / btmp / utmp

- 리눅스는 텍스트 로그 (auth.log, secure)와 별개로, 로그인 세션 정보를 Binary 형식으로 별도 저장함

 

wtmp ( last 명령어 )

- 시스템의 모든 로그인 및 로그아웃 전체 기록

 

btmp ( lastb 명령어 )

- 실패한 로그인 시도만 기록

 

utmp / who ( w 명령어 )

- 지금 현재 시스템에 로그인해 있는 현재 세션 정보 조회

 

 

[7-6] auditd / audit.log

auditd 장점

- 실행 명령 및 인자 전체 기록 (type=EXECVE)

 → 실행된 프로그램뿐만 아니라, 실행 시 입력한 옵션과 인자 값까지 모두 보여줌

 

- 파일 무결성 추적 (type=PATH)

 → 특정 민감 파일 (.ssh/authorized_keys, /etc/shadow...)에 누가 접근했는지, 생성/수정/삭제 여부를 실시간 추적

 

- 실제 사용자 식별 (auid)

 → 공격자가 sudo를 통해 root 권한으로 활동해도 최초 접속 시의 사용자 ID (Audit User ID)를 끝까지 추적

 

- 커널 수준 수집 (type=SYSCALL)

 → Shell 레벨을 넘어서는 시스템 콜 (syscall) 단위의 기록 제공 로그 신뢰도 매우 높음

 

주의사항

- 설정의 중요성: 기본 설정만으로는 수집 범위가 제한적 보안 규칙 (audit.rules) 설정 필요

- 데이터 폭증: 너무 세밀히 설정 시 로그 양이 너무 많음 시스템 성능에 악영향

- 복잡한 형식: 로그가 사람이 읽기엔 복잡 전문적인 파싱 도구나 SIEM 솔루션을 통한 시각화 필요

 

 

[7-7] logrotate와 압축 로그

- 리눅스는 logrotate 도구를 통해 로그 파일을 주기적으로 관리함

 + auth.log = 현재 기록되고 있는 활성 로그 파일

 + auth.log.1 = 어제 기록되었던 로그가 백업된 상태 (압축 전)

 + auth.log.2.gz = 2일 전 기록된 백업 로그가 압축된 상태 (용량 절감)

 + auth.log.3.gz = 3일 전 기록된 백업 로그가 압축된 상태 (용량 절감)

 + RHEL 계열은 `secure-20260420` 같이 날짜 기반 이름 사용

 

압축 로그 전용 조회 명령어 (Z-Commands)

- zgrep (= grep) : 압축된 로그 내 특정 키워드 (IP, 계정 등) 검색

- zless (= less) : 압축 파일 내용을 페이지 단위로 확인

- zcat (= cat) : 압축 파일 전체 내용 조회

- zdiff (= diff) : 압축된 두 로그 파일 간의 차이점 비교

 

 

[7-8] 리눅스 로그 조회 워크플로우

1. 현재 보기 ( tail -f )

 - 실시간으로 발생 중인 최신 로그 동향 파악

 → brute force 공격이나 시스템에러를 실시간 모니터링

 

2. 문맥 보기 ( less )

 - 로그 파일 전체를 보며 흐름 파악

 → 특정 이벤트 발생 전후의 사용자 행위를 파악해 공격의 맥락 파악

 

3. 필터링 ( grep )

 - 특정 키워드(IP, 사용자명, 파일명 등)가 포함된 라인만 조회

 → 알려진 IOC(침해 지표)가 시스템 내에 있는지 확인

 

4. 패턴 요약 ( awk, sort, uniq )

 - 대량의 로그 데이터를 가공해 빈도 집계 및 이상 패턴 발견

 → 공격의 규모와 대상을 수치화

 

5. 과거 확장 ( zgrep )

 - 압축된 과거의 로그 파일들 검색

 → 예전에 발생했을지 모를 초기 침투 흔적 추적

 

 


[Blue Team] EP.7 - Linux 로그 구조 및 파일 체계. END.