Linux 시스템 보안 기초 · 42/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
journalctl은 systemd 저널을 조회하는 도구입니다. 단순 조회를 넘어, 시간·서비스·우선순위·부팅 단위로 로그를 정밀하게 잘라 보는 능력이 보안 분석의 속도를 좌우합니다. 이번 편은 실무 필터링 기법에 집중합니다.
핵심 필터 옵션:
| 옵션 | 용도 |
|---|---|
-u <unit> | 특정 서비스만 |
-p <level> | 우선순위(err/warning 등) |
--since/--until | 시간 범위 |
-b | 특정 부팅 |
-g <pattern> | 패턴 검색(grep) |
-o verbose/json | 상세/기계판독 출력 |
이들을 조합하면 '어제 오후 ssh 서비스의 경고 이상'처럼 정밀 조회가 됩니다.
전체 저널 (수만 줄)
│ -u ssh (서비스 필터)
│ --since today (시간 필터)
│ -p warning (우선순위 필터)
▼
관련 이벤트 (수십 줄) ← 분석 가능한 크기로 축소
저널은 각 로그에 구조화된 필드(_SYSTEMD_UNIT, PRIORITY, _PID, _UID 등)를 붙여 저장합니다. journalctl의 필터는 이 필드를 조건으로 거릅니다. 텍스트 grep과 달리 필드 기반이라 정확하고 빠릅니다.
보안 분석 워크플로: 넓게 시작해 좁혀 갑니다. '전체 → 서비스 → 시간 → 우선순위 → 패턴' 순으로 필터를 누적해 수만 줄을 분석 가능한 수십 줄로 줄입니다. -o json은 SIEM 연동·자동 분석에 유용합니다.
# ssh 서비스의 오늘 경고 이상
sudo journalctl -u ssh -p warning --since today
# 이번 부팅의 커널 메시지 중 특정 패턴
sudo journalctl -b -k -g 'error|fail'
# 특정 시간 범위 + 기계판독
sudo journalctl --since '2026-09-25 14:00' --until '2026-09-25 15:00' -o json | head
# 저널 무결성/저장 상태
sudo journalctl --verify; journalctl --disk-usage
실습 컨테이너에서 journalctl 조회 형식입니다. (실제 캡처 — 환경 특성상 일부는 형식 예시)
$ sudo journalctl --disk-usage
Archived and active journals take up ... in the file system.
$ sudo journalctl -u ssh --since today | tail -3
Sep 25 14:03:11 host sshd[2140]: Accepted password for alice from 192.168.10.5 ...
-u ssh로 SSH 이벤트만 추려 보면 인증 흐름(12편)을 빠르게 확인할 수 있습니다. --verify로 저널 무결성을 확인하면 로그 조작 여부의 단서를 얻습니다.
--verify 실패(저널 손상/조작 가능성)/run만, 재부팅 시 소실) 설정저널은 기본이 휘발성(volatile)일 수 있습니다. 영속 저장(/var/log/journal)과 원격 전송을 병행해야 재부팅·삭제에도 증거가 남습니다(43편의 auditd 보존과 함께).
--verify로 저널 무결성 확인-o json으로 자동 분석·SIEM 연동journalctl은 초동 분석의 기본 도구지만, 로컬 조회는 조작에 취약하므로 SOC는 저널을 SIEM으로 전송해 중앙에서 분석합니다. -o json 출력은 Filebeat/Fluentd 등으로 ELK/Wazuh에 태워 파싱·상관분석합니다. 시간 필터링 능력은 침해 타임라인(46편) 구성의 기본기입니다.
[ ] -u/-p/--since 조합 필터링 연습
[ ] -g로 패턴 검색
[ ] --verify로 무결성 확인
[ ] 저널 영속/원격 전송 설정 확인
다음 편에서는 43. auditd와 Linux 감사 를 다룹니다. syscall 단위로 '누가 무엇을 했는가'를 기록하는 auditd를 정면으로 다룹니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.