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

선행 학습 → 13. /var/log/secure 분석 · 기초 38. cron 작업 스케줄링
이번 글 → /var/log/cron 분석
이어서 → 15. /var/log/maillog 분석

1. 들어가며

cron은 공격자가 가장 즐겨 쓰는 지속성(Persistence) 수단입니다(MITRE ATT&CK T1053.003). 재부팅 후에도, 계정 비밀번호가 바뀐 후에도 정해진 시각마다 악성 코드를 다시 실행하기 때문입니다. 기존 기초 38편이 cron 사용법이었다면, 여기서는 cron이 남기는 로그로 지속성을 탐지합니다.

핵심 요약

  • /var/log/cron = cron.* → 실행(CROND CMD) 과 변경(crontab REPLACE/EDIT) 이 모두 남는다.
  • 로그에는 "무엇을 실행했나"는 있지만 "crontab 내용 전체"는 없다 → 파일을 함께 본다.
  • 새로 나타난 CMD, 숨김 경로(/.xxx), 5분 주기 반복은 강한 신호다.

2. 핵심 개념

로그 문자열기록 주체의미
CROND[PID]: (user) CMD (command)crond해당 사용자 권한으로 명령 실행
crontab[PID]: (user) BEGIN EDIT (user) / END EDITcrontab -e대화형 편집
crontab[PID]: (user) REPLACE (user)crontab 파일 설치crontab file 로 통째 교체
crontab[PID]: (root) LIST (user)crontab -l조회
run-parts[PID]: (/etc/cron.hourly) starting ...run-parts정기 디렉터리 실행
anacron[PID]: Job 'cron.daily' startedanacron일 단위 작업 실행
CROND[PID]: (CRON) ORPHAN (no passwd entry)crond삭제된 사용자의 crontab 잔존

3. 로그 생성 구조

cron 로그와 지속성

[변경]  crontab -e / crontab file ──▶ /var/spool/cron/<user> 기록 ──▶ log: crontab[...] (REPLACE|EDIT)
[변경]  vi /etc/crontab, /etc/cron.d/*  ──▶ 파일만 바뀜, crontab 로그 없음 (!)
                                            ↓
[실행]  crond 매 분 점검 ──▶ 조건 일치 ──▶ log: CROND[...] (user) CMD (...)
                                            ↓
                          journald ──(cron facility)──▶ rsyslog ──▶ /var/log/cron

주의: /etc/crontab 이나 /etc/cron.d/ 를 에디터로 직접 수정하면 crontab 명령 로그가 남지 않습니다. 이 경우 실행 로그(CROND CMD) 와 파일 변경 시각, auditd -w /etc/cron.d 룰 이 증거가 됩니다.

4. 실제 로그 경로

대상Rocky / RHELUbuntu / Debian
cron 로그/var/log/cron기본: /var/log/syslog (cron.log 규칙 주석 처리)
사용자 crontab/var/spool/cron/<user>/var/spool/cron/crontabs/<user>
시스템 crontab/etc/crontab, /etc/cron.d/동일
정기 디렉터리/etc/cron.{hourly,daily,weekly,monthly}동일

5. 명령어 실습

C=/var/log/cron

# 실행된 명령 목록 (빈도순) — 평소와 다른 CMD 찾기
grep 'CMD (' $C | sed -E 's/.*\((\w+)\) CMD \((.*)\)$/\1 | \2/' | sort | uniq -c | sort -rn | head -20

# crontab 변경 이력
grep -E 'crontab\[.*\((REPLACE|BEGIN EDIT|END EDIT|DELETE)' $C

# 의심 패턴: 숨김 경로, /tmp, /dev/shm, 네트워크 도구
grep 'CMD (' $C | grep -E '/\.[a-z]|/tmp/|/dev/shm|curl|wget|bash -i|nc ' 

# 로그와 파일 대조 (현재 crontab 내용)
ls -la --time-style=full-iso /var/spool/cron/ /etc/cron.d/
cat /var/spool/cron/root 2>/dev/null

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — cron 로그

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

아래는 실습 시나리오 로그(가상 데이터) 입니다.

[실습 시나리오 로그 · 가상 데이터]
Sep 20 02:01:01 web01 CROND[2903]: (root) CMD (run-parts /etc/cron.hourly)
Sep 20 02:17:05 web01 crontab[4231]: (root) REPLACE (root)
Sep 20 02:20:01 web01 CROND[4420]: (root) CMD (/usr/local/bin/.syscheck >/dev/null 2>&1)
Sep 20 02:25:01 web01 CROND[4425]: (root) CMD (/usr/local/bin/.syscheck >/dev/null 2>&1)
Sep 20 02:30:01 web01 CROND[4430]: (root) CMD (/usr/local/bin/.syscheck >/dev/null 2>&1)

7. 로그 필드 분석

필드값해석
변경 방식REPLACE대화형 편집이 아닌 파일로 통째 교체 — 스크립트 자동화 흔적
대상 사용자(root)root crontab 변경
실행 경로/usr/local/bin/.syscheck점(.)으로 시작하는 숨김 파일
출력 처리>/dev/null 2>&1흔적 최소화
주기02:20, 02:25, 02:305분 간격 (*/5)

8. 보안관점

정상의심
run-parts /etc/cron.hourly, 백업·로그 정리처음 등장한 CMD
변경관리 일정에 맞춘 END EDIT원격 세션 중 REPLACE
절대경로의 알려진 스크립트숨김 파일, /tmp, /dev/shm, `curl
일 1회1~5분 주기 반복 (비콘/채굴 유지)

9. SOC 관점

  • Detection: Wazuh는 crontab REPLACE 에 대해 2833 "Root's crontab entry changed." (level 8)를 발생시킵니다(47편 실측). auditd -w /var/spool/cron -p wa -k cron_mod 를 추가하면 변경 주체(auid) 까지 확인됩니다(40편).
  • Triage: crontab 변경 Alert → 같은 시각 secure 에 원격 세션이 있었는가?
  • Investigation: CMD의 파일 경로 → 파일 생성 시각·해시 → 네트워크 연결 여부 (48편)
  • Response: crontab 항목 제거 전 파일과 로그를 먼저 보존한다.

10. 실습 체크리스트

[ ] CROND CMD / crontab REPLACE·EDIT 문자열 구분
[ ] 실행 명령 빈도 집계로 신규 CMD 탐지
[ ] crontab 변경 이력 조회
[ ] /etc/cron.d 직접 수정 시 로그 공백 이해
[ ] 로그와 /var/spool/cron 파일 대조
[ ] Ubuntu 에서 cron 로그 위치 차이 설명

11. 핵심 정리

  • /var/log/cron 에는 실행(CMD)과 변경(REPLACE/EDIT)이 함께 남는다.
  • REPLACE 는 파일을 통째로 설치한 흔적으로 자동화된 공격에서 흔하다.
  • 시스템 crontab 직접 수정은 변경 로그를 남기지 않으므로 실행 로그·파일 시각·audit으로 보완한다.
  • 숨김 경로, 짧은 주기, 출력 버림은 지속성 의심 신호다.
  • Ubuntu 기본 설정에서는 cron 로그가 syslog 에 섞인다.

12. 다음 편 연결

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

0개의 댓글