11.5. 로그 파일 감사 이해
기본적으로 감사 시스템은 /var/log/audit/audit.log
파일에 로그 항목을 저장합니다. 로그 순환이 활성화된 경우 순환된 audit.log
파일이 동일한 디렉터리에 저장됩니다.
/etc/ssh/sshd_config
파일을 읽거나 수정하기 위해 모든 시도를 기록하려면 다음 감사 규칙을 추가합니다.
# auditctl -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 nametype=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
필드는 다음과 같이 기록합니다.-
audit(time_stamp: ID ) 형식의 타임스탬프와 고유한 레코드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 컨텍스트를 기록합니다. nametype=NORMAL
-
nametype
필드는 지정된 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
로 해석됩니다.