Linux 로그 경로 정리 · 19/50 · Part 2. RHEL / Rocky Linux 로그 경로

선행 학습 → 12. /var/log/messages 분석 · 서비스 · 프로세스 관리 시리즈
이번 글 → Rocky Linux 서비스 이벤트 추적
이어서 → 20. Rocky Linux 로그 기반 초동조사

1. 들어가며

cron과 함께 공격자가 자주 쓰는 지속성 수단이 systemd 서비스 등록(MITRE T1543.002)입니다. 정상 서비스처럼 보이는 이름으로 유닛 파일을 만들고 enable 하면 재부팅마다 자동 실행됩니다.

핵심 요약

  • 흐름: systemctl → systemd(PID 1) → 서비스 프로세스 → journald → /var/log/messages
  • 로그만으로는 "누가 systemctl enable 했는지" 알기 어렵다 → audit 필요.
  • 증거 3축: 유닛 파일(내용·시각) · 서비스 로그(Started/Reloading) · 실행 주체(audit)

2. 핵심 개념

항목위치보안 의미
시스템 유닛 (패키지)/usr/lib/systemd/system/패키지가 설치 (rpm으로 검증 가능)
관리자 유닛/etc/systemd/system/수동 생성 — 공격자 유닛의 주 위치
사용자 유닛~/.config/systemd/user/사용자 권한 지속성
enable 링크/etc/systemd/system/multi-user.target.wants/부팅 자동 시작
drop-in/etc/systemd/system/<unit>.d/*.conf기존 정상 서비스의 ExecStart 덮어쓰기

3. 로그 생성 구조

서비스 이벤트가 로그가 되기까지

관리자/공격자: vi /etc/systemd/system/x.service ; systemctl daemon-reload ; systemctl enable --now x
      │                         │                               │
      │ (audit -w 룰 있을 때)     ▼                               ▼
      │                systemd: "Reloading."          systemd: "Created symlink ..." , "Started x.service"
      ▼                         └────────────── journald ───────────────┘
 audit.log (auid, exe=systemctl)                  │
                                                  ├─▶ journalctl -u x
                                                  └─▶ rsyslog ──▶ /var/log/messages

4. 실제 로그 경로

/var/log/messages                systemd 의 Started / Stopped / Reloading
journalctl -u <unit>             특정 서비스 로그
journalctl _PID=1                systemd 자체 메시지
/var/log/audit/audit.log         systemctl 실행 주체 (EXECVE 룰), 유닛 디렉터리 감시 (-w 룰)
/etc/systemd/system/             유닛 파일

5. 명령어 실습

# 1) 최근 생성·수정된 유닛 파일 (관리자 영역)
find /etc/systemd/system /usr/lib/systemd/system -name '*.service' -newermt '-3 days' -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort

# 2) 패키지 소속이 아닌 유닛 (rpm 이 모르는 파일)
for f in /etc/systemd/system/*.service; do rpm -qf "$f" >/dev/null 2>&1 || echo "NOT-PKG: $f"; done

# 3) 유닛 내용과 실행 경로
systemctl cat <unit>
systemctl show <unit> -p ExecStart -p FragmentPath -p ActiveEnterTimestamp

# 4) 로그로 등록·기동 시점 확인
journalctl _PID=1 --since today -o short-iso | grep -E 'Reloading|Created symlink|Started' | tail
journalctl -u <unit> -o short-iso --no-pager | head

# 5) 누가 systemctl 을 실행했나 (audit EXECVE 룰이 있을 때)
ausearch -c systemctl -ts today -i | grep -E '^type=(SYSCALL|EXECVE)' | tail -6

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — 서비스 이벤트 추적

위 이미지는 Rocky Linux 9.8 실습 환경의 실제 실행 결과입니다.

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

[예시 로그]
Sep 20 02:18:30 web01 systemd[1]: Reloading.
Sep 20 02:18:31 web01 systemd[1]: Created symlink /etc/systemd/system/multi-user.target.wants/syscheck.service → /etc/systemd/system/syscheck.service.
Sep 20 02:18:31 web01 systemd[1]: Started syscheck.service - System Check.

7. 로그 필드 분석

로그알 수 있는 것알 수 없는 것
Reloading.유닛 설정이 다시 읽힘무엇이 바뀌었는지
Created symlink ... wants/enable 됨 (부팅 자동 시작)누가 실행했는지
Started syscheck.service기동 시각, 설명(Description)실제 실행 파일 → systemctl cat

"알 수 없는 것"을 채우는 것이 audit(주체)과 유닛 파일(내용)입니다.

8. 보안관점

정상의심
rpm -qf 로 패키지 소속 확인됨패키지에 속하지 않는 유닛
ExecStart=/usr/sbin/...ExecStart=/tmp/..., /usr/local/bin/.xxx, bash -c "curl ..."
변경관리 시간 Reloading원격 세션 직후 Reloading → Created symlink
서비스 이름과 설명 일치정상 서비스 흉내(dbus-org.freedesktop... 류)

9. SOC 관점

  • Detection: Wazuh FIM으로 /etc/systemd/system 감시, audit -w /etc/systemd/system -p wa -k systemd_mod.
  • Triage: 신규 서비스 Alert → ExecStart 경로의 파일 해시·생성 시각.
  • Investigation: 서비스 기동 시각 이후 해당 프로세스의 네트워크 연결(audit connect, ss -tnp).
  • Response: systemctl disable --now 전에 유닛 파일·실행 파일·로그를 보존한다.

10. 실습 체크리스트

[ ] 유닛 파일 위치 3곳과 의미 설명
[ ] 최근 생성 유닛 탐색
[ ] 패키지 비소속 유닛 탐색
[ ] Reloading / Created symlink / Started 로그 조회
[ ] ExecStart 경로 검증
[ ] audit 로 systemctl 실행 주체 확인

11. 핵심 정리

  • 서비스 이벤트는 systemd → journald → messages 로 기록된다.
  • Created symlink ... wants 는 부팅 자동 시작 등록의 흔적이다.
  • 로그는 "언제"를, 유닛 파일은 "무엇을", audit은 "누가"를 알려준다.
  • 패키지 비소속 유닛과 비정상 ExecStart 경로는 지속성 신호다.
  • 조치 전 유닛·실행 파일·로그를 먼저 보존한다.

12. 다음 편 연결

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

0개의 댓글