auditd는 /var/log/audit/audit.log에 기록하며, 이는 root만 읽을 수 있습니다. 원본 형식에서 시간 창을 가장 빠르게 내보내는 방법은 다음과 같습니다:
sudo ausearch --raw -ts yesterday > web-03_audit.log
/var/log/audit가 존재하지 않으면, auditd가 설치되지 않은 것입니다. 이는 Debian과 Ubuntu의 기본값입니다. 이 경우 커널의 감사 이벤트는 journal로 이동하며, journalctl _TRANSPORT=audit에서 찾을 수 있습니다.
auditd는 Linux의 “누가 무엇을 실행하고, 어떤 파일을 건드렸는가”에 대한 답변입니다: 프로세스 실행, 파일 접근, 권한 변경 및 계정 변경까지, syscall까지 다룹니다. Prime Core는 440개 MITRE ATT&CK 기법에 매핑된 auditd 데이터에 대한 1350개의 탐지 규칙을 보유하고 있습니다. 그 중에는 악의적인 셸 사용 (T1059.004), 심어진 SSH 키 (T1098.004), 중요한 파일에 대한 권한 변경 (T1222.002)가 포함됩니다.
시작하기 전에
실행 중이며, 무엇을 기록하고 있습니까?
systemctl is-active auditd
sudo auditctl -l
Red Hat 계열 시스템은 기본적으로 auditd를 설치합니다; Debian과 Ubuntu는 auditd 패키지가 필요합니다. auditctl -l이 No rules를 출력하면 여전히 로그인, 인증 및 SELinux 거부에 대한 기본 기록을 얻을 수 있습니다. 그러나 명령 실행이나 파일 액세스 기록은 없습니다, 아무도 이를 요청하지 않았기 때문입니다.
Root 전용. /var/log/audit는 엄격히 잠겨 있으므로, sudo를 계획하십시오.
회전은 auditd의 자체 기능입니다. auditd는 /etc/audit/auditd.conf의 max_log_file 및 num_logs를 기준으로 스스로 로그를 회전시키며, audit.log.1, audit.log.2 등으로 이동합니다. 더 오래된 기록은 이러한 파일에 있습니다.
형식에 익숙해지는 데 시간이 걸립니다. 하나의 이벤트는 종종 동일한 msg=audit(<epoch>:<serial>) 스탬프를 공유하는 여러 줄(SYSCALL, EXECVE, CWD, PATH, PROCTITLE)로 구성됩니다. 공백이 있는 값은 16진수로 인코딩됩니다. 이는 정상입니다.
단계 1: ausearch를 사용한 내보내기
ausearch는 시간, 기록 유형 또는 규칙 키로 필터링하며, –raw는 원본 형식을 유지합니다:
# 하루, 원본
sudo ausearch --raw -ts yesterday -te today > web-03_audit.log
keywords인 today, yesterday, this-week, recent (최근 10분)은 날짜 형식으로부터 당신을 구해줍니다. 명시적 날짜는 지역 설정을 따르며, 예를 들어 en_US에서는 10/19/2026 00:00:00인데 이는 ‘no matches’라는 놀람의 주된 원인이 됩니다.
업로드를 위해 –raw를 유지하십시오: 원본 기록은 해석된 보기보다 더 많은 정보를 제공합니다.
모든 것을 가져오려면, 파일을 오래된 순서로 연결하십시오:
sudo cat $(ls -tr /var/log/audit/audit.log*) > web-03_audit_all.log
단계 2 (auditd 없음): journal에서 감사 이벤트 가져오기
auditd가 없으면, 커널의 감사 기록은 여전히 journald에 도달합니다:
sudo journalctl _TRANSPORT=audit --since yesterday -o json --no-pager > web-03_audit.jsonl
규칙이 로드되지 않은 경우 대부분 로그인 및 SELinux 또는 AppArmor 메시지를 기대할 수 있지만, 없는 것보다는 낫습니다.
LogTotal에 업로드, 정리 및 검토
[PROOF: confirm LogTotal parses raw auditd format. If it doesn’t yet, publish this guide with the journal JSON route only, or hold it until support lands.]
- 업로드. 열기 logtotal.com 및 파일을 드롭하세요.
- 정화. [PROOF: what gets masked in auditd records: usernames, hostnames, IPs, paths]. Look it over before you continue.
- 검토.
문제가 발생했을 때
| 증상 | 가능한 원인 | Fix |
|---|---|---|
| /var/log/audit가 존재하지 않음 | auditd가 설치되지 않음 | 저널 경로 사용 (2단계) |
| 권한 거부됨 | root가 아님 | sudo |
| 로그인만 존재함, 명령 없음 | 로드된 실행 규칙 없음 | 예상됨; 미래를 위한 규칙 추가 |
| ausearch에 <일치 없음> | 날짜 형식이 지역 설정과 일치하지 않음 | today, yesterday, this-week 사용 |
| 커널 메시지에 “backlog limit exceeded” | 커널이 로드 중에 감사 이벤트를 놓침 | 로그에 간격이 있는 것으로 취급; backlog_limit 증가 |
FAQ
지금 auditd를 켜야 하나요?
네, 다음 번을 위해. 규칙이 모든 것을 결정하므로, 자체적으로 작성하기보다는 알려진 규칙 세트에서 시작하십시오. audit 패키지는 샘플 규칙을 제공하며, 잘 유지관리되는 커뮤니티 세트도 존재합니다.
auditd 또는 저널: 어떤 것이 진짜 기록인가?
auditd가 실행 중인 경우, /var/log/audit/audit.log가 완전한 것입니다. 저널은 구성에 따라 부분 사본을 가질 수 있습니다.