Linux 시스템 보안 기초 · 43/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
일반 로그가 '서비스가 남긴 메시지'라면, auditd는 '커널이 기록하는 행위 그 자체'입니다. 어떤 syscall이, 누구에 의해, 어떤 파일에 실행되었는지까지 남기죠. 침해 분석에서 가장 강력한 증거원입니다.
auditd 규칙의 핵심 요소:
-w /etc/shadow -p rwa)execve, connect)auid, uid, arch 등으로 범위 지정특히 auid(로그인 UID) 가 중요합니다. su/sudo로 root가 되어도 auid는 원래 로그인 사용자를 가리켜, '실제 누가 했는가'를 추적할 수 있습니다.
사용자 행위 (파일 열기/명령 실행)
│ system call
▼
Kernel
│ audit 규칙 매칭
▼
auditd
│
▼
/var/log/audit/audit.log ── ausearch/aureport로 분석
│
▼
SIEM / Wazuh
커널 감사 서브시스템은 규칙에 매칭되는 이벤트를 auditd로 보냅니다. execve 감사는 실행되는 모든 명령을, watch는 지정 파일 접근을 기록합니다. 각 이벤트에는 auid·uid·euid·pid·ppid·exe·key가 붙어 '누가(auid) 어떤 권한으로(euid) 무엇을(exe)' 했는지 재구성할 수 있습니다.
auid의 힘: 사용자가 로그인하면 PAM(12편)이 auid를 설정합니다. 이후 su로 root가 되어도 auid는 유지되어, root 뒤에 숨은 실제 사용자를 밝혀냅니다(45편). 단, 로그인 세션이 없는 컨텍스트에서는 auid가 unset입니다.
# 규칙 추가: shadow 접근 감시 + 사용자 명령 감사
sudo auditctl -w /etc/shadow -p rwa -k shadow_watch
sudo auditctl -a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=unset -k user_exec
# 현재 규칙 확인
sudo auditctl -l
# 키로 이벤트 검색(가독 출력)
sudo ausearch -k shadow_watch -i | tail
이 시리즈 실습에서 실제로 규칙을 걸고 cat /etc/shadow를 포착한 결과입니다. (실제 캡처)
$ sudo auditctl -l
-w /etc/shadow -p rwa -k shadow_watch
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=-1 -F key=user_exec
$ sudo ausearch -k shadow_watch -i | tail
type=SYSCALL ... syscall=openat success=yes ... comm=cat exe=/usr/bin/cat key=shadow_watch
type=PATH ... name=/etc/shadow inode=... mode=file,640 ouid=root ogid=shadow
cat이 /etc/shadow를 연 사실이 syscall·경로·소유자와 함께 기록됩니다. 이것이 일반 로그에는 없는 auditd만의 정밀함입니다. (참고: 본 컨테이너의 su는 완전한 로그인 세션을 만들지 않아 일부 이벤트의 auid가 unset으로 남습니다 — 실제 서버에서는 로그인 세션의 auid가 채워집니다.)
auditd는 강력한 만큼 규칙 설계가 중요합니다. 너무 넓으면 로그 폭증, 너무 좁으면 사각지대가 생깁니다. CIS/보안 표준 규칙셋(예: Neo23x0 auditd rules)을 기반으로 조정하는 것이 실무적입니다.
ausearch -k로 키 기반 신속 검색auditd는 EDR이 없는 환경에서 호스트 가시성의 핵심입니다. Wazuh는 auditd를 통합해 execve·파일 접근을 MITRE ATT&CK에 매핑하고, auid로 실제 행위자를 추적합니다. 이 시리즈 실습에서 걸어 둔 키(identity, priv_config, sshd_config, cron_persist, user_exec, user_connect)는 앞선 편들의 탐지 포인트(계정·권한·SSH·cron·네트워크)를 auditd로 통합한 것입니다.
[ ] watch/syscall 규칙 작성
[ ] auditctl -l로 규칙 확인
[ ] ausearch -k로 이벤트 검색
[ ] auid로 실제 행위자 추적
[ ] auditd 동작 상태 상시 점검
다음 편에서는 44. 파일 접근 감사 를 다룹니다. auditd로 중요 파일 접근을 추적하는 구체적 감사 규칙을 봅니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.