7.6. 감사 로그 파일 이해
기본적으로 감사 시스템은
/var/log/audit/audit.log
파일에 로그 항목을 저장합니다. 로그 순환이 활성화된 경우 순환된 audit.log
파일이 동일한 디렉터리에 저장됩니다.
다음 감사 규칙은
/etc/ssh/sshd_config
파일을 읽거나 수정하려고 할 때마다 기록됩니다.
-w /etc/ssh/sshd_config -p warx -k sshd_config
예를 들어 다음 명령을 사용하여
auditd
데몬이 실행 중인 경우 감사 로그 파일에 새 이벤트가 생성됩니다.
~]$ cat /etc/ssh/sshd_config
audit.log
파일의 이 이벤트는 다음과 같습니다.
type=SYSCALL msg=audit(1364481363.243:24287): arch=c000003e syscall=2 success=no exit=-13 a0=7fffd19c5592 a1=0 a2=7fffd19c4b50 a3=a items=1 ppid=2686 pid=3538 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="cat" exe="/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config" type=CWD msg=audit(1364481363.243:24287): cwd="/home/shadowman" type=PATH msg=audit(1364481363.243:24287): item=0 name="/etc/ssh/sshd_config" inode=409248 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 objtype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 type=PROCTITLE msg=audit(1364481363.243:24287) : proctitle=636174002F6574632F7373682F737368645F636F6E666967
위의 이벤트는 동일한 타임스탬프와 일련 번호를 공유하는 네 개의 레코드로 구성됩니다. 레코드는 항상
type=
키워드로 시작합니다. 각 레코드는 공백이나 쉼표로 구분된 여러 name=값
쌍으로 구성됩니다. 위 이벤트의 자세한 분석은 다음과 같습니다.
첫 번째 레코드
type=SYSCALL
type
필드에는 레코드의 유형이 포함됩니다. 이 예에서SYSCALL
값은 이 레코드가 커널에 대한 시스템 호출에 의해 트리거되었음을 지정합니다.가능한 모든 유형 값 및 해당 설명 목록은 감사 레코드 유형 항목을 참조하십시오.msg=audit(1364481363.243:24287):
msg
필드는 다음과 같이 기록합니다.감사 양식에서 타임스탬프 및 레코드의 고유 ID(time_stamp:ID)
. 동일한 감사 이벤트의 일부로 생성된 경우 여러 레코드가 동일한 타임스탬프 및 ID를 공유할 수 있습니다. 타임 스탬프는 1970년 1월 1일 00:00:00부터 UTC 이후의 Unix 시간 형식을 사용합니다.- 다양한 이벤트별
이름= 커널 또는 사용자 공간 애플리케이션에서 제공하는값
쌍입니다.
arch=c000003e
arch
필드에는 시스템의 CPU 아키텍처에 대한 정보가 포함되어 있습니다. 값c000003e
은 16진수 표기법으로 인코딩됩니다. ausearch 명령으로 감사 레코드를 검색할 때-i
또는--interpret
옵션을 사용하여 16진수 값을 사람이 읽을 수 있는 동등한 값으로 자동 변환합니다.c000003e
값은x86_64
로 해석됩니다.syscall=2
syscall
필드는 커널에 전송된 시스템 호출 유형을 기록합니다. 값2
는/usr/include/asm/unistd_64.h
파일에서 사람이 읽을 수 있는 것과 일치시킬 수 있습니다. 이 경우2
는공개
시스템 호출입니다. ausyscall 유틸리티를 사용하면 시스템 호출 번호를 사람이 읽을 수 있는 해당 번호로 변환할 수 있습니다. ausyscall --dump 명령을 사용하여 숫자와 함께 모든 시스템 호출 목록을 표시합니다. 자세한 내용은 ausyscall(8) 도움말 페이지를 참조하십시오.success=no
success
필드는 특정 이벤트에 기록된 시스템 호출이 성공 또는 실패인지를 기록합니다. 이 경우 전화가 성공하지 못했습니다.exit=-13
exit
필드에는 시스템 호출에서 반환된 종료 코드를 지정하는 값이 포함되어 있습니다. 이 값은 시스템 호출마다 다릅니다. 다음 명령을 사용하여 사람이 읽을 수 있는 해당 값을 해석할 수 있습니다.~]# ausearch --interpret --exit -13
이전 예에서는 감사 로그에 종료 코드-13
로 실패한 이벤트가 포함되어 있다고 가정합니다.a0=7fffd19c5592
,a1=0
,a2=7fffd19c5592
,a3=a
a0
필드의a
0 필드는 이 이벤트에서 시스템 호출의 16진수 표기법으로 인코딩된 처음 네 개의 인수를 기록합니다. 이러한 인수는 사용되는 시스템 호출에 따라 다릅니다. ausearch 유틸리티에서 해석할 수 있습니다.items=1
items
필드에는 syscall 레코드를 따르는 PATH 보조 레코드 수가 포함되어 있습니다.ppid=2686
ppid
필드는 PPID(Parent Process ID)를 기록합니다. 이 경우2686
은 상위 프로세스의 PPID(예:bash
)였습니다.pid=3538
pid
필드는 PID(프로세스 ID)를 기록합니다. 이 경우3538
은cat
프로세스의 PID입니다.auid=1000
auid
필드는 loginuid인 감사 사용자 ID를 기록합니다. 이 ID는 로그인 시 사용자에게 할당되며, 예를 들어 사용자 계정을 su - john 명령으로 전환하여 모든 프로세스에서 상속됩니다.uid=1000
uid
필드는 분석 프로세스를 시작한 사용자의 사용자 ID를 기록합니다. 사용자 ID는 다음 명령을 사용하여 사용자 이름으로 해석될 수 있습니다. ausearch -i --uid UID.gid=1000
gid
필드는 분석 프로세스를 시작한 사용자의 그룹 ID를 기록합니다.euid=1000
euid
필드는 분석 프로세스를 시작한 사용자의 유효한 사용자 ID를 기록합니다.suid=1000
suid
필드는 분석 프로세스를 시작한 사용자의 설정된 사용자 ID를 기록합니다.fsuid=1000
fsuid
필드는 분석 프로세스를 시작한 사용자의 파일 시스템 사용자 ID를 기록합니다.egid=1000
egid
필드는 분석 프로세스를 시작한 사용자의 유효한 그룹 ID를 기록합니다.sgid=1000
sgid
필드는 분석 프로세스를 시작한 사용자의 세트 그룹 ID를 기록합니다.fsgid=1000
fsgid
필드는 분석 프로세스를 시작한 사용자의 파일 시스템 그룹 ID를 기록합니다.tty=pts0
tty
필드는 분석 프로세스가 호출된 터미널을 기록합니다.ses=1
ses
필드는 분석 프로세스가 호출된 세션의 세션 ID를 기록합니다.comm="cat"
comm
필드는 분석 프로세스를 호출하는 데 사용된 명령의 명령줄 이름을 기록합니다. 이 경우 cat 명령을 사용하여 이 감사 이벤트를 트리거했습니다.exe="/bin/cat"
exe
필드는 분석 프로세스를 호출하는 데 사용된 실행 파일의 경로를 기록합니다.subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
subj
필드는 분석 프로세스가 실행 시 레이블이 지정된 SELinux 컨텍스트를 기록합니다.key="sshd_config"
key
필드는 감사 로그에서 이 이벤트를 생성한 규칙과 연관된 관리자 정의 문자열을 기록합니다.
두 번째 레코드
type=CWD
- 두 번째 레코드에서
type
필드 값은CWD
- 현재 작업 디렉터리입니다. 이 유형은 첫 번째 레코드에 지정된 시스템 호출을 호출한 프로세스가 실행된 작업 디렉터리를 기록하는 데 사용됩니다.이 레코드의 목적은 상대 경로가 연결된 PATH 레코드에 캡처되는 경우 현재 프로세스의 위치를 기록하는 것입니다. 이렇게 하면 절대 경로를 재구성할 수 있습니다. msg=audit(1364481363.243:24287)
msg
필드는 첫 번째 레코드의 값과 동일한 타임스탬프 및 ID 값을 보유합니다. 타임 스탬프는 1970년 1월 1일 00:00:00부터 UTC 이후의 Unix 시간 형식을 사용합니다.cwd="/home/user_name"
cwd
필드에는 시스템 호출이 호출된 디렉터리의 경로가 포함됩니다.
세 번째 레코드
type=PATH
- 세 번째 레코드에서
type
필드 값은PATH
입니다. 감사 이벤트에는 시스템 호출에 인수로 전달되는 모든 경로에 대한PATH
-type 레코드가 포함됩니다. 이 감사 이벤트에서는 하나의 경로(/etc/ssh/sshd_config
)만 인수로 사용되었습니다. msg=audit(1364481363.243:24287):
msg
필드는 첫 번째 및 두 번째 레코드의 값과 동일한 타임스탬프 및 ID 값을 보유합니다.item=0
item
필드는SYSCALL
유형 레코드에서 참조되는 총 항목 수, 현재 레코드를 나타냅니다. 이 숫자는 0을 기반으로 하며, 값이0
이면 첫 번째 항목임을 의미합니다.name="/etc/ssh/sshd_config"
name
필드는 시스템 호출에 전달된 파일 또는 디렉터리의 경로를 인수로 기록합니다. 이 경우/etc/ssh/sshd_config
파일이었습니다.inode=409248
inode
필드에는 이 이벤트에 기록된 파일 또는 디렉터리와 연결된 inode 번호가 포함됩니다. 다음 명령은409248
inode 번호와 연결된 파일 또는 디렉터리를 표시합니다.~]# find / -inum 409248 -print /etc/ssh/sshd_config
dev=fd:00
dev
필드는 이 이벤트에 기록된 파일 또는 디렉터리가 포함된 장치의 마이너 및 주요 ID를 지정합니다. 이 경우 값은/dev/fd/0
장치를 나타냅니다.mode=0100600
mode
필드는st_mode
필드의 stat 명령에서 반환된 대로 숫자 표기법으로 인코딩된 파일 또는 디렉터리 권한을 기록합니다. 자세한 내용은stat(2)
매뉴얼 페이지를 참조하십시오. 이 경우0100600
은-rw-------
로 해석될 수 있습니다. 즉, root 사용자만/etc/ssh/sshd_config
파일에 대한 읽기 및 쓰기 권한을 갖습니다.ouid=0
- O
uid
필드는 오브젝트 소유자의 사용자 ID를 기록합니다. ogid=0
ogid
필드는 오브젝트 소유자의 그룹 ID를 기록합니다.rdev=00:00
rdev
필드에는 특수 파일에 대한 기록된 장치 식별자만 포함됩니다. 이 경우 기록된 파일이 일반 파일이므로 사용되지 않습니다.obj=system_u:object_r:etc_t:s0
obj
필드는 실행 시 기록된 파일 또는 디렉터리의 레이블이 지정된 SELinux 컨텍스트를 기록합니다.objtype=NORMAL
objtype
필드는 지정된 syscall의 컨텍스트에서 각 경로 레코드의 작업의 의도를 기록합니다.cap_fp=none
cap_fp
필드는 파일 또는 디렉터리 오브젝트의 허용된 파일 시스템 기반 기능의 설정과 관련된 데이터를 기록합니다.cap_fi=none
cap_fi
필드는 파일 또는 디렉터리 오브젝트의 상속된 파일 시스템 기반 기능의 설정과 관련된 데이터를 기록합니다.cap_fe=0
cap_fe
필드는 파일 또는 디렉터리 오브젝트의 유효 시스템 기반 기능의 설정을 기록합니다.cap_fver=0
cap_fver
필드는 파일 또는 디렉터리 오브젝트의 파일 시스템 기반 기능의 버전을 기록합니다.
네 번째 레코드
type=PROCTITLE
type
필드에는 레코드의 유형이 포함됩니다. 이 예제에서PROCTITLE
값은 이 레코드가 커널에 대한 시스템 호출에 의해 트리거되는 이 감사 이벤트를 트리거한 전체 명령줄을 제공하도록 지정합니다.proctitle=636174002F6574632F7373682F737368645F636F6E666967
proctitle
필드는 분석 프로세스를 호출하는 데 사용된 명령의 전체 명령줄을 기록합니다. 이 필드는 사용자가 감사 로그 구문 분석기에 영향을 미치지 않도록 16진수 표기법으로 인코딩됩니다. 텍스트는 이 감사 이벤트를 트리거한 명령에 대해 디코딩합니다. ausearch 명령으로 감사 레코드를 검색할 때-i
또는--interpret
옵션을 사용하여 16진수 값을 사람이 읽을 수 있는 동등한 값으로 자동 변환합니다.636174002F6574632F7373682F736F636F6E666967
값은cat /etc/ssh/sshd_config
로 해석됩니다.
위에서 분석한 감사 이벤트는 이벤트에 포함될 수 있는 가능한 모든 필드의 하위 집합만 포함합니다. 모든 이벤트 필드 및 해당 설명 목록은 감사 이벤트 필드를 참조하십시오. 모든 이벤트 유형 및 해당 설명 목록은 감사 레코드 유형을 참조하십시오.
예 7.6. 추가 audit.log
이벤트
다음 감사 이벤트는
auditd
데몬의 시작을 기록합니다. ver
필드에는 시작된 감사 데몬의 버전이 표시됩니다.
type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=1000 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success
다음 감사 이벤트는 UID가 1000인 사용자의 실패한 시도를 기록하여 root 사용자로 로그인합니다.
type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=1000 auid=1000 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/0 res=failed'