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

선행 학습 → 23. /var/log/syslog 분석
이번 글 → /var/log/kern.log 분석
이어서 → 25. /var/log/daemon.log 분석

1. 들어가며

커널 로그는 사용자 공간 프로그램이 숨기기 어려운 시스템 최하단의 기록입니다. 루트킷의 커널 모듈 로딩, 익스플로잇 시도로 인한 세그폴트, 방화벽 차단, 자원 고갈(채굴) 같은 흔적이 여기 남습니다.

핵심 요약

  • 소스는 하나(커널 링 버퍼), 보는 창은 셋: dmesg · journalctl -k · /var/log/kern.log
  • Ubuntu는 kern.* → kern.log (+ syslog 중복), RHEL은 messages 에 포함
  • 보안 키워드: module, taint, segfault, Out of memory, [UFW BLOCK], audit:

2. 핵심 개념

창범위특징
dmesg현재 부팅의 링 버퍼크기 제한으로 오래된 메시지 밀려남, 일반 사용자 제한(kernel.dmesg_restrict)
journalctl -k [-b -1]저널에 저장된 커널 메시지영구 저널이면 과거 부팅도 조회
/var/log/kern.logrsyslog가 기록한 파일순환·압축, grep 용이
커널 이벤트예시 문자열보안 의미
모듈 로딩loading out-of-tree module taints kernel서명 없는/외부 모듈 → 루트킷 가능성
세그폴트segfault at 0 ip ... error 4 in libc...익스플로잇 실패, 불안정한 악성코드
OOMOut of memory: Killed process 1234 (xmrig)채굴 등 자원 남용
방화벽[UFW BLOCK] ... SRC= DST= DPT=스캐닝, 차단된 연결
감사audit: type=1400 ... apparmor="DENIED"AppArmor/SELinux 차단

3. 로그 생성 구조

커널 로그의 위치

Kernel (printk) ──▶ ring buffer (/dev/kmsg)
                        ├──▶ dmesg                  (직접 읽기)
                        └──▶ journald (_TRANSPORT=kernel)
                                 ├──▶ journalctl -k
                                 └──▶ rsyslog kern.* ──▶ /var/log/kern.log (Ubuntu)
                                                    └─▶ /var/log/messages (RHEL, *.info 규칙)

4. 실제 로그 경로

배포판파일명령
Ubuntu / Debian/var/log/kern.log, kern.log.1, kern.log.N.gzjournalctl -k
Rocky / RHEL/var/log/messages 안의 kernel: 태그journalctl -k
공통—dmesg -T (사람이 읽는 시간, 정확도 주의)

5. 명령어 실습

# 커널 로그 창 3개 비교
dmesg -T | tail -5
journalctl -k -b --no-pager | tail -5
tail -5 /var/log/kern.log 2>/dev/null || grep 'kernel:' /var/log/messages | tail -5

# 커널 오염(taint) 상태: 0 이면 깨끗
cat /proc/sys/kernel/tainted

# 모듈 로딩 흔적과 현재 모듈 대조
journalctl -k --since "-7d" | grep -Ei 'module|taint'
lsmod | head -20

# 세그폴트 / OOM
journalctl -k --since "-7d" | grep -Ei 'segfault|Out of memory|Killed process'

# 방화벽 (UFW 로깅이 켜져 있을 때)
grep -h 'UFW BLOCK' /var/log/kern.log* 2>/dev/null | grep -oE 'SRC=[0-9.]+ DST=[0-9.]+.*DPT=[0-9]+' | awk '{print $1,$NF}' | sort | uniq -c | sort -rn | head

6. 로그 예시

실제 실행 결과 — Ubuntu 24.04 · root@ubuntu-lab — 커널 메시지

위 이미지는 Ubuntu 24.04 실습 환경의 실제 커널 메시지 조회 결과입니다.

아래는 판단 설명용 예시 로그입니다.

[예시 로그]
2026-09-20T02:19:07.100200+09:00 web02 kernel: syshelper: loading out-of-tree module taints kernel.
2026-09-20T02:19:07.100300+09:00 web02 kernel: syshelper: module verification failed: signature and/or required key missing - tainting kernel
2026-09-20T03:40:12.882100+09:00 web02 kernel: Out of memory: Killed process 6120 (kworkerd) total-vm:2458100kB

7. 로그 필드 분석

로그필드해석
out-of-tree module모듈명 syshelper배포판 커널에 포함되지 않은 모듈
verification failed서명 없음Secure Boot 환경이 아니면 로딩됨 → 루트킷 의심
OOM Killed프로세스명 kworkerd커널 스레드 이름(kworker) 흉내 — 사용자 공간 프로세스라면 위장

8. 보안관점

정상의심
DKMS 드라이버(VirtualBox, NVIDIA)로 인한 taint알 수 없는 모듈명, 로그인 세션 직후 로딩
드문 세그폴트 (앱 버그)같은 서비스의 반복 세그폴트 (익스플로잇 시도)
메모리 부족 시 OOM이름 위장 프로세스의 반복 OOM
방화벽 차단 산발한 IP의 순차 포트 차단

주의: 루트킷이 로드되면 이후 커널 로그 자체를 숨길 수 있습니다. 로딩 시점의 로그를 중앙 수집본에서 확인하는 것이 중요합니다.

9. SOC 관점

  • Detection: 모듈 로딩은 audit -a always,exit -F arch=b64 -S init_module,finit_module -k modules 로 주체까지 기록.
  • Triage: taint 발생 Alert → 모듈명·로딩 시각 → 같은 시각 인증/실행 로그.
  • Response: 루트킷 의심 시 라이브 분석 결과를 신뢰하기 어려우므로 메모리·디스크 이미징 후 오프라인 분석으로 전환.

10. 실습 체크리스트

[ ] dmesg / journalctl -k / kern.log 차이 설명
[ ] /proc/sys/kernel/tainted 확인
[ ] 모듈 로딩 흔적과 lsmod 대조
[ ] 세그폴트 / OOM 검색
[ ] UFW 차단 출발지 집계
[ ] 모듈 로딩 audit 룰 이해

11. 핵심 정리

  • 커널 로그는 링 버퍼 하나를 세 창(dmesg·journal·파일)으로 본다.
  • Ubuntu는 kern.log, RHEL은 messages 에서 커널 메시지를 찾는다.
  • 서명 없는 모듈 로딩과 taint는 루트킷 조사의 출발점이다.
  • 반복 세그폴트·위장 프로세스 OOM도 침해 신호가 될 수 있다.
  • 커널 수준 침해는 로컬 로그 신뢰도가 낮으므로 중앙 수집본과 이미징으로 확인한다.

12. 다음 편 연결

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

0개의 댓글