Linux 로그 경로 정리 · 40/50 · Part 4. journald / rsyslog / auditd
선행 학습 → 39. auditd로 execve 추적 · 파일 · 권한 · 사용자 관리 시리즈
이번 글 → auditd로 중요 파일 접근 추적
이어서 → 41. logrotate 이해
공격자가 노리는 파일은 정해져 있습니다. 계정(/etc/passwd), 비밀번호 해시(/etc/shadow), 권한(/etc/sudoers), 원격 접속 설정(/etc/ssh/sshd_config), 지속성(cron, systemd), 그리고 흔적(로그). 이 파일들에 감시 규칙을 걸면 "누가, 언제, 어떤 프로그램으로 읽거나 바꿨는지"가 남습니다.
핵심 요약
-w <path> -p <rwxa> -k <key>: r 읽기 · w 쓰기 · x 실행 · a 속성 변경- 읽기(
r) 감시는/etc/shadow처럼 읽는 것 자체가 의심스러운 파일에만- 로그 디렉터리 감시는
auid!=unset조건으로 rsyslog 같은 데몬 쓰기를 제외해야 쓸 만하다.
| 대상 | 규칙 예 | key | MITRE |
|---|---|---|---|
| 계정 | -w /etc/passwd -p wa, -w /etc/group -p wa | identity | T1136 |
| 해시 | -w /etc/shadow -p rwa | shadow | T1003.008 |
| 권한 | -w /etc/sudoers -p wa, -w /etc/sudoers.d/ -p wa | priv_esc | T1548.003 |
| SSH | -w /etc/ssh/sshd_config -p wa, -w /root/.ssh/ -p wa | sshd_conf | T1098.004 |
| cron | -w /etc/crontab -p wa, -w /etc/cron.d/ -p wa, -w /var/spool/cron/ -p wa | cron_mod | T1053.003 |
| systemd | -w /etc/systemd/system/ -p wa | systemd_mod | T1543.002 |
| 감사 설정 | -w /etc/audit/ -p wa | audit_conf | T1562.001 |
| 로그 | -a always,exit -F dir=/var/log -F perm=wa -F auid>=1000 -F auid!=unset | log_tamper | T1070.002 |

프로세스 (auid=1001, uid=0) ── openat("/etc/shadow", O_RDONLY) / rename / write / chmod
↓
kernel audit: 감시 경로·권한 일치? (-w /etc/shadow -p rwa)
↓ 일치
SYSCALL(openat, key=shadow, exe=/usr/bin/cat) + PATH(name=/etc/shadow, nametype=NORMAL) + CWD + PROCTITLE
↓
/var/log/audit/audit.log
편집기 주의: vi 는 임시 파일을 만들고 rename으로 교체하므로 PATH 레코드에 nametype=DELETE/CREATE 가 나타납니다. "쓰기"가 파일 교체 형태로 남는 것을 이해해야 합니다.
/etc/audit/rules.d/60-files.rules 파일 감시 규칙 (영구)
/var/log/audit/audit.log 기록
# 규칙 파일 (변경관리 승인 후)
cat <<'EOF' | sudo tee /etc/audit/rules.d/60-files.rules
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p rwa -k shadow
-w /etc/sudoers -p wa -k priv_esc
-w /etc/sudoers.d/ -p wa -k priv_esc
-w /etc/ssh/sshd_config -p wa -k sshd_conf
-w /etc/crontab -p wa -k cron_mod
-w /etc/cron.d/ -p wa -k cron_mod
-w /var/spool/cron/ -p wa -k cron_mod
-w /etc/systemd/system/ -p wa -k systemd_mod
-w /etc/audit/ -p wa -k audit_conf
-a always,exit -F dir=/var/log -F perm=wa -F auid>=1000 -F auid!=unset -k log_tamper
EOF
sudo augenrules --load && sudo auditctl -l | wc -l
# (Ubuntu 는 /var/spool/cron/crontabs/ 경로)
# 조회
ausearch -k shadow -ts today -i | grep -E '^type=(SYSCALL|PATH)' | grep -oE 'auid=[^ ]+|exe=[^ ]+|name=[^ ]+'
ausearch -k identity,priv_esc,sshd_conf -ts today -i # 여러 key 는 쉼표 대신 개별 조회 권장
aureport -f -i --summary -ts today | head # 파일별 요약
ausearch -k는 하나의 key 값을 받습니다. 여러 key는 개별로 조회하거나aureport -k로 먼저 분포를 봅니다.

위 이미지는 Rocky Linux 9.8 실습 환경의 실제 실행 결과입니다.
아래는 판단 설명용 예시 출력(ausearch -i 형식)입니다.
[예시 출력]
type=PATH msg=audit(09/20/26 02:17:40.101:2061) : item=0 name=/etc/shadow inode=1311 nametype=NORMAL ...
type=SYSCALL msg=audit(09/20/26 02:17:40.101:2061) : syscall=openat success=yes ... auid=deploy uid=root comm=cat exe=/usr/bin/cat key=shadow
type=PATH msg=audit(09/20/26 02:18:02.330:2064) : item=1 name=/etc/ssh/sshd_config nametype=CREATE ...
type=SYSCALL msg=audit(09/20/26 02:18:02.330:2064) : syscall=rename success=yes ... auid=deploy uid=root comm=sed exe=/usr/bin/sed key=sshd_conf
| 이벤트 | 필드 | 해석 |
|---|---|---|
| shadow 읽기 | exe=/usr/bin/cat, auid=deploy | 해시 덤프 시도 (오프라인 크래킹 준비) |
| sshd_config 교체 | syscall=rename, comm=sed, nametype=CREATE | sed -i 로 설정 변경 (예: PermitRootLogin yes) |
| 정상 비교 | exe=/usr/sbin/useradd + identity | 계정 관리 도구에 의한 변경 |
| 정상 | 의심 |
|---|---|
passwd/useradd 가 /etc/shadow 수정 | cat/cp/python 이 /etc/shadow 읽기 |
변경관리 시간 sshd_config 수정 | 원격 세션 중 수정 + sshd 재시작 |
패키지 설치로 /etc/systemd/system 변경 | 로그인 사용자 auid로 유닛 생성 |
| 로그 디렉터리 쓰기 없음(auid 조건) | sed/truncate/shred 가 /var/log 쓰기 |
ses → 같은 세션의 execve 목록(39편) → 인증 로그(18편).[ ] 감시 대상 8개 범주와 key 설계
[ ] -p r / w / x / a 의미 구분
[ ] 로그 디렉터리 감시에 auid 조건 적용
[ ] 편집기 rename 동작과 nametype 이해
[ ] ausearch -k / aureport -f 조회
[ ] FIM(무엇) + audit(누가) 교차 설명
-w 감시는 파일 단위, -a ... -F dir= 는 조건 조합이 가능하다./etc/shadow 처럼 읽는 것 자체가 의심스러운 파일에만 건다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 39. auditd로 execve 추적 |
| ▶ 다음 글 | 41. logrotate 이해 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |