Linux 로그 경로 정리 · 37/50 · Part 4. journald / rsyslog / auditd

선행 학습 → 09. Linux 로그와 보안 이벤트의 관계 · Linux 시스템 보안 기초 시리즈
이번 글 → auditd 구조 이해
이어서 → 38. audit.log 경로와 구조

1. 들어가며

지금까지 본 로그는 대부분 프로그램이 스스로 남기는 기록이었습니다. 프로그램이 로그를 남기지 않거나(대부분의 명령), 공격자가 로그 기능을 끄면 기록이 없습니다. auditd는 다릅니다. 커널이 시스템 콜 수준에서 기록하므로 프로그램의 협조가 필요 없습니다.

핵심 요약

  • 커널 audit 서브시스템이 규칙에 맞는 이벤트를 만들고, auditd가 /var/log/audit/audit.log 에 기록한다.
  • 규칙이 없으면 기록도 없다 → 규칙 설계가 곧 가시성
  • 핵심 필드 auid: 최초 로그인 사용자 ID. sudo/su 후에도 변하지 않는다.

2. 핵심 개념

용어설명
kernel audit커널 내부 감사 기능. 시스템 콜 진입/종료, 파일 접근을 규칙과 비교
auditd커널이 보낸 레코드를 받아 파일로 기록하는 사용자 공간 데몬
audit rules무엇을 기록할지 정의 (auditctl, /etc/audit/rules.d/*.rules)
syscall프로그램이 커널에 요청하는 동작 (execve=실행, openat=열기, connect=연결 …)
audit record한 줄의 기록 (type=SYSCALL, EXECVE, PATH, CWD …)
event같은 msg=audit(시각:일련번호) 를 공유하는 레코드 묶음
auidaudit UID — 로그인 시 PAM(pam_loginuid)이 설정, 이후 불변
uid / euid현재 실제/유효 사용자 (sudo 후 0)
exe / comm실행 파일 경로 / 프로세스 이름(16자)
pid / ppid / ses프로세스, 부모, 로그인 세션
key (-k)규칙에 붙인 이름 — 검색·SIEM 룰의 기준

3. 로그 생성 구조

auditd 감사 파이프라인

Process (deploy → sudo → root 셸) ── syscall(execve, openat, connect ...)
                                        ↓
                          Kernel audit ── rules 비교 (auditctl -l)
                                        ↓ 일치 시 레코드 생성 (netlink)
                                      auditd ──▶ /var/log/audit/audit.log
                                        │         (auditd.conf: log_format, max_log_file, num_logs)
                                        └─▶ audisp 플러그인 (syslog 전송, af_unix → SIEM 에이전트)

auid가 중요한 이유:

deploy 로그인  → auid=1001 uid=1001
sudo /bin/bash → auid=1001 uid=0      ← "root가 했다"가 아니라 "deploy로 들어온 사람이 root로 했다"
useradd ...    → auid=1001 uid=0
cron 이 실행   → auid=unset(4294967295) ← 로그인 세션이 아닌 데몬/cron 실행

4. 실제 로그 경로

항목경로 / 명령비고
감사 로그/var/log/audit/audit.logauditd.conf 의 log_file
데몬 설정/etc/audit/auditd.conf실습 Rocky 9.8 기본: log_format = ENRICHED, max_log_file = 8, num_logs = 5, max_log_file_action = ROTATE
영구 규칙/etc/audit/rules.d/*.rules → augenrules --load/etc/audit/audit.rules 는 생성 결과
현재 규칙auditctl -l
상태auditctl -senabled, lost, backlog
설치Rocky 기본 설치 / Ubuntu apt install auditd

ENRICHED 형식은 원시 레코드 끝에 UID→이름 등의 해석값을 덧붙여, 다른 서버에서 분석해도 사용자 이름을 알 수 있게 합니다.

5. 명령어 실습

systemctl is-active auditd
auditctl -s                     # enabled 1 이면 동작, lost 가 증가하면 레코드 유실
auditctl -l                     # 현재 규칙 ("No rules" = 기본값, 실행 가시성 없음)
grep -E '^(log_file|log_format|max_log_file|num_logs|max_log_file_action|space_left_action|disk_full_action) ' /etc/audit/auditd.conf
ls /etc/audit/rules.d/

# 로그인 세션의 auid 확인
cat /proc/self/loginuid          # 현재 셸의 auid
sudo cat /proc/self/loginuid     # sudo 후에도 같은 값

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — 감사 규칙 파일

위 이미지는 Rocky Linux 9.8 실습 환경에서 감사 규칙 파일을 실제로 확인한 결과입니다.

7. 로그 필드 분석

필드값 예질문
auid1001 (deploy)누가 로그인해서 시작했나?
uid / euid0어떤 권한으로 실행했나?
ses12어느 로그인 세션인가? (logind 세션 번호와 연결)
exe/usr/bin/curl무엇을 실행했나? (경로 위장 확인)
commcurl프로세스 이름 (위조 가능)
pid / ppid4188 / 4151프로세스 트리
ttypts1대화형 원격 세션인가? ((none) = 비대화형)
keyexec_log어떤 규칙에 걸렸나?

8. 보안관점

정상의심
auditd active, 규칙 로드됨auditd 중지 / auditctl -D (규칙 전체 삭제) / -e 0 (비활성)
lost 0lost 증가 (부하·공격으로 레코드 유실)
운영자 auid로 관리 명령서비스 계정 auid의 셸 실행
cron 실행은 auid=unset로그인 사용자 auid가 비정상 시간 실행

규칙 끝에 -e 2 를 두면 재부팅 전까지 규칙 변경이 불가능(immutable)해져, 공격자가 규칙을 지우는 것을 막을 수 있습니다(변경하려면 재부팅 필요 — 운영 영향 검토).

9. SOC 관점

  • Detection: Wazuh는 /var/log/audit/audit.log 를 log_format audit 로 수집하고, 기본 룰 80700(Audit: Messages grouped)을 기반으로 key별 커스텀 룰을 만든다(47편 실측).
  • Triage: 실행 Alert의 auid 로 사람을 특정 → 인증 로그로 출발지 IP 확인.
  • Hardening: 보안 기준에 "auditd 설치 + 필수 규칙 + -e 2" 포함.

10. 실습 체크리스트

[ ] kernel audit / auditd / rules / record / event 구분
[ ] auditd.conf 기본값 확인
[ ] auditctl -s 로 enabled / lost 확인
[ ] auditctl -l 로 규칙 확인
[ ] auid 와 uid 차이 설명 (loginuid 실습)
[ ] 규칙 삭제·비활성화 공격과 -e 2 대응 설명

11. 핵심 정리

  • auditd는 커널이 시스템 콜 수준에서 만든 기록을 저장한다.
  • 규칙이 없으면 기록이 없으므로 규칙 설계가 가시성을 결정한다.
  • auid는 sudo/su 후에도 최초 로그인 사용자를 가리킨다.
  • 같은 msg=audit(시각:번호) 레코드들이 하나의 이벤트다.
  • auditd 중지·규칙 삭제·레코드 유실은 그 자체로 경보 대상이다.

12. 다음 편 연결

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

0개의 댓글