카테고리 없음

auditd :: 시스템 호출 감사

gamjadori 2026. 8. 16. 17:05
728x90

auditd :: 시스템 호출 감사


* auditd: 리눅스 커널 레벨에서 누가, 언제, 어떤 파일에, 어떤 명령어로 접근했는지 기록하는 감사 도구

필요성: 파일 접근이나 명령어 실행을 실시간으로 감시해서 이 시각에 이 사용자가 이 파일을 열었다는 것까지 추적 가능

설치
sudo apt install auditd -y


서비스 상태 확인
sudo systemctl status auditd


특정 파일 감시 규칙 추가
sudo auditctl -w /etc/passwd -p wa -k passwd_watch

>> /etc/passwd 파일에 대한 쓰기(w)와 속성 변경(a) 시도를 감시하도록 규칙을 추가하는 명령어

현재 등록된 감시 규칙 확인
sudo auditctl -l


테스트로 감시 대상 파일 접속
sudo vi /etc/passwd

감사 로그에서 확인
sudo ausearch -k passwd_watch
>> 방금 등록한 이름표(passwd_watch)로 관련 감사 기록을 검색하는 명령어
결과: 접근한 시각, 실행한 사용자(uid), 사용한 프로그램(vi) 등이 상세하게 출력됨 (핵심 확인 포인트)

bastion@sieun:~$ sudo ausearch -k passwd_watch
----
time->Fri Aug 14 16:47:06 2026
type=PROCTITLE msg=audit(1786693626.532:288): proctitle=617564697463746C002D77002F6574632F706173737764002D70007761002D6B007061737377645F7761746368
type=SYSCALL msg=audit(1786693626.532:288): arch=c00000b7 syscall=206 success=yes exit=1080 a0=4 a1=ffffc860d3e0 a2=438 a3=0 items=0 ppid=195839 pid=195840 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="auditctl" exe="/usr/sbin/auditctl" subj=unconfined key=(null)
type=CONFIG_CHANGE msg=audit(1786693626.532:288): auid=1000 ses=3 subj=unconfined op=add_rule key="passwd_watch" list=4 res=1
----
time->Fri Aug 14 16:47:59 2026
type=PROCTITLE msg=audit(1786693679.516:298): proctitle=7669002F6574632F706173737764
type=PATH msg=audit(1786693679.516:298): item=0 name="/etc/passwd" inode=795918 dev=103:02 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1786693679.516:298): cwd="/home/bastion"
type=SYSCALL msg=audit(1786693679.516:298): arch=c00000b7 syscall=56 success=yes exit=3 a0=ffffffffffffff9c a1=acada0356040 a2=41 a3=1a4 items=1 ppid=195874 pid=195875 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=3 comm="vi" exe="/usr/bin/vim.tiny" subj=unconfined key="passwd_watch"
----
time->Fri Aug 14 16:47:59 2026
type=PROCTITLE msg=audit(1786693679.518:299): proctitle=7669002F6574632F706173737764
type=PATH msg=audit(1786693679.518:299): item=0 name=(null) inode=795918 dev=103:02 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1786693679.518:299): cwd="/home/bastion"
type=SYSCALL msg=audit(1786693679.518:299): arch=c00000b7 syscall=52 success=yes exit=0 a0=3 a1=81a4 a2=0 a3=0 items=1 ppid=195874 pid=195875 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=3 comm="vi" exe="/usr/bin/vim.tiny" subj=unconfined key="passwd_watch"
bastion@sieun:~$
  • comm="vi", exe="/usr/bin/vim.tiny": vi로 접근 기록 확인
  • key="passwd_watch": 등록한 규칙에 감지 확인
  • auid=1000: 실제로 이 작업을 시작한 사용자 계정
  • time->Fri Aug 14 16:47:59 2026: 접근 시각
  • name="/etc/passwd": 감시 대상 파일 그대로


특정 명령어 실행 자체를 감시하기
sudo auditctl -a always,exit -F arch=b64 -S execve -k command_watch

>> 시스템에서 실행되는 모든 명령어를 감시하도록 등록하는 규칙

명령어 실행 후 확인
whoami

sudo ausearch -k command_watch | tail -20

bastion@sieun:~$ sudo ausearch -k command_watch | tail -20
type=PATH msg=audit(1786693777.586:314): item=0 name="/usr/bin/sudo" inode=917862 dev=103:02 mode=0104755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1786693777.586:314): cwd="/home/bastion"
type=EXECVE msg=audit(1786693777.586:314): argc=4 a0="sudo" a1="ausearch" a2="-k" a3="command_watch"
type=SYSCALL msg=audit(1786693777.586:314): arch=c00000b7 syscall=221 success=yes exit=0 a0=becf8c5ada30 a1=becf8c5fc3e0 a2=becf8c5b43e0 a3=fae537e90c90 items=2 ppid=195855 pid=195901 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=3 comm="sudo" exe="/usr/lib/cargo/bin/sudo" subj=unconfined key="command_watch"
----
time->Fri Aug 14 16:49:37 2026
type=PROCTITLE msg=audit(1786693777.595:315): proctitle=2F7573722F7362696E2F756E69785F63686B7077640062617374696F6E0063686B657870697279
type=PATH msg=audit(1786693777.595:315): item=1 name="/lib/ld-linux-aarch64.so.1" inode=789458 dev=103:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1786693777.595:315): item=0 name="/usr/sbin/unix_chkpwd" inode=789554 dev=103:02 mode=0102755 ouid=0 ogid=42 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1786693777.595:315): cwd="/home/bastion"
type=EXECVE msg=audit(1786693777.595:315): argc=3 a0="/usr/sbin/unix_chkpwd" a1="bastion" a2="chkexpiry"
type=SYSCALL msg=audit(1786693777.595:315): arch=c00000b7 syscall=221 success=yes exit=0 a0=eb1651b48cb8 a1=ffffc156cbc0 a2=eb1651b60018 a3=0 items=2 ppid=195901 pid=195903 auid=1000 uid=0 gid=1000 euid=0 suid=0 fsuid=0 egid=42 sgid=42 fsgid=42 tty=pts0 ses=3 comm="unix_chkpwd" exe="/usr/sbin/unix_chkpwd" subj=unix-chkpwd key="command_watch"
----
time->Fri Aug 14 16:49:37 2026
type=PROCTITLE msg=audit(1786693777.597:319): proctitle=6175736561726368002D6B00636F6D6D616E645F7761746368
type=PATH msg=audit(1786693777.597:319): item=1 name="/lib/ld-linux-aarch64.so.1" inode=789458 dev=103:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1786693777.597:319): item=0 name="/usr/sbin/ausearch" inode=796071 dev=103:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1786693777.597:319): cwd="/home/bastion"
type=EXECVE msg=audit(1786693777.597:319): argc=3 a0="ausearch" a1="-k" a2="command_watch"
type=SYSCALL msg=audit(1786693777.597:319): arch=c00000b7 syscall=221 success=yes exit=0 a0=c7e276b6c010 a1=c7e276b80990 a2=c7e276b86f60 a3=31f89dadb0040 items=2 ppid=195904 pid=195905 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=3 comm="ausearch" exe="/usr/sbin/ausearch" subj=unconfined key="command_watch"

방금 실행한 명령어가 감사 로그에 기록됐는지 확인
 


로그 분석 노트와 연결
sudo ausearch -k passwd_watch -i

-i 옵션: 숫자(uid, 시각 등)를 사람이 읽기 쉬운 형태로 변환해서 출력하는 명령어

정리 명령어
sudo auditctl -D


등록했던 모든 감사 규칙을 삭제하는 명령어