# Auditd 로그

## 개요

Panther는 다음을 수집하는 것을 지원합니다 [auditd](https://sematext.com/glossary/auditd/) Linux Audit Daemon에서 생성된 로그를, 스트리밍하여 [HTTP 소스](https://docs.panther.com/ko/data-onboarding/data-transports/http)로 전달된 후에, [Fluent Bit.](https://docs.fluentbit.io/manual/)

## auditd 감사 로그를 Panther에 온보딩하는 방법

### 1단계: Panther에서 새 auditd 로그 소스 생성

1. Panther 콘솔의 왼쪽 탐색 바에서 클릭하세요 **구성** > **로그 소스.**
2. 를 선택하고 Panther가 설치된 계정 ID를 입력하십시오. **새로 만들기**.
3. "Auditd"를 검색한 후 해당 타일을 클릭하세요.
   * 슬라이드 아웃 패널에서 **전송 메커니즘** 우측 상단의 드롭다운은 미리 채워진 상태일 것입니다 **HTTP** 옵션.
4. 를 선택하고 Panther가 설치된 계정 ID를 입력하십시오. **설정 시작**.
5. Panther의 [HTTP 소스 구성에 대한 지침을 따르세요](https://docs.panther.com/ko/data-transports/http#how-to-set-up-an-http-log-source-in-panther)5단계부터 시작하여.
   * 설정할 때 **인증 방법** 소스에 대해, 우리는 [**공유 비밀(Shared Secret)**](https://docs.panther.com/ko/data-transports/http#shared-secret).
   * 이 소스로 전송된 페이로드는 다음의 적용을 받습니다 [모든 HTTP 소스에 대한 페이로드 요구사항](https://docs.panther.com/ko/data-transports/http#payload-requirements).
   * HTTP 엔드포인트 생성이 완료될 때까지 다음 단계로 진행하지 마세요.

### 2단계: Fluent Bit 구성

1. 다음을 따르세요 [Fluent Bit 시작 안내](https://docs.fluentbit.io/manual/installation/getting-started-with-fluent-bit) Fluent Bit를 서비스로 설치하려면.
2. 생성하세요 [Fluent Bit 구성 파일](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/configuration-file).

   * `[INPUT]` 변수:
     * **이름:** 이를 로 설정하세요 `tail` 와
     * **경로**: 로그 파일 경로로 이것을 설정하세요.
   * `[OUTPUT]` 변수:
     * **호스트**: Panther URL을 입력하세요.
       * 예: `logs.instance-name.runpanther.net`
     * **URI**: HTTP Source 수집 URL의 끝부분(이 프로세스의 1단계에서 생성된)을 입력하세요. 이것은로 시작합니다 `/http/`.
       * 예: `/http/cb015ee4-543c-4489-9f4b-testaa16d7a`
     * **헤더**: Panther 콘솔에서 1단계에서 HTTP 소스를 구성할 때 생성한 헤더 이름과 생성한 시크릿을 입력하세요.
     * **이름**: 다음으로 설정 `http`.
     * **TLS**: 다음으로 설정 `켜기`.
     * **포트**: 다음으로 설정 `443`.

   ```editorconfig
   [SERVICE]
       Flush      1

   [INPUT]
       Name       tail
       Path       /var/log/audit/audit.log

   [OUTPUT]
       Name       http
       Match      *
       Host       logs.instance-name.runpanther.net
       Port       443
       URI        /http/cb015ee4-543c-4489-9f4b-testaa16d7a
       Header     x-sender-header {YOUR_SECRET_HERE}
       Format     json_lines
       TLS        On
       TLS.Verify On
   ```
3. Fluent Bit을 시작하고 새 구성 파일의 경로를 전달하세요.

## 지원되는 로그 유형

### Linux.Auditd

다음은 Linux 감사 로그 스키마를 정의합니다:

```yaml
schema: Linux.Auditd
description: Linux 감사 로그
referenceURL: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-understanding_audit_log_files
필드:
  - 이름: type
    required: true
    description: 감사 레코드 유형. 전체 목록은 https://access.redhat.com/articles/4409591#audit-record-types-2 를 참조하세요
    type: string
  - name: a0
    description: 시스템 호출의 첫 번째 인수를 16진 표기법으로 기록합니다.
    type: string
  - name: a1
    description: 시스템 호출의 두 번째 인수를 16진 표기법으로 기록합니다.
    type: string
  - name: a2
    description: 시스템 호출의 세 번째 인수를 16진 표기법으로 기록합니다.
    type: string
  - name: a3
    description: 시스템 호출의 네 번째 인수를 16진 표기법으로 기록합니다.
    type: string
  - name: acct
    description: 프로세스가 실행된 사용자 계정 이름을 기록합니다.
    type: string
  - 이름: action
    description: 무결성 정책 룰에서 발생하는 동작을 기록합니다.
    type: string
  - name: appraise_type
    description: 무결성 정책 룰에서 사용된 평가 유형을 기록합니다.
    type: string
  - name: addr
    description: IPv4 또는 IPv6 주소를 기록합니다. 이 필드는 일반적으로 호스트명 필드 다음에 오며 해당 호스트명이 해석되는 주소를 포함합니다.
    type: string
    지표:
      - ip
  - name: arch
    description: 시스템의 CPU 아키텍처에 대한 정보를 16진 표기법으로 기록합니다.
    type: string
  - name: calipso_doi
    description: RFC5570 Calipso 항목의 DOI를 기록합니다.
    type: string
  - name: calipso_type
    description: RFC5570 Calipso 항목의 유형을 기록합니다.
    type: string
  - name: capability
    description: 특정 Linux 권한을 설정하는 데 사용된 비트 수를 기록합니다. Linux 권한에 대한 자세한 내용은 capabilities(7) 매뉴얼 페이지를 참조하세요.
    type: string
  - name: cap_fe
    description: 유효한 파일 시스템 기반 권한 비트 설정과 관련된 데이터를 기록합니다.
    type: string
  - name: cap_fi
    description: 상속된 파일 시스템 기반 권한 설정과 관련된 데이터를 기록합니다.
    type: string
  - name: cap_fp
    description: 허용된 파일 시스템 기반 권한 설정과 관련된 데이터를 기록합니다.
    type: string
  - name: cap_fver
    description: 파일 시스템 기반 권한의 버전을 기록합니다.
    type: string
  - name: cap_pe
    description: 유효한 프로세스 기반 권한 설정과 관련된 데이터를 기록합니다.
    type: string
  - name: cap_pi
    description: 상속된 프로세스 기반 권한 설정과 관련된 데이터를 기록합니다.
    type: string
  - name: cap_pp
    description: 허용된 프로세스 기반 권한 설정과 관련된 데이터를 기록합니다.
    type: string
  - name: cause
    description: 무결성 정책 룰에서 원인을 기록합니다.
    type: string
  - name: cgroup
    description: 감사 이벤트가 생성될 당시 프로세스를 포함하고 있던 cgroup의 경로를 기록합니다.
    type: string
  - name: cmd
    description: 실행된 전체 명령줄을 기록합니다. 이는 exe 필드가 /bin/bash와 같은 셸 인터프리터를 기록하고 cmd 필드가 실행된 나머지 명령줄(예: helloworld.sh --help)을 기록하는 셸 인터프리터의 경우에 유용합니다.
    type: string
  - 이름: code
    description: seccomp 동작을 기록합니다.
    type: string
  - name: comm
    description: 실행된 명령을 기록합니다. 이는 exe 필드가 /bin/bash와 같은 셸 인터프리터를 기록하고 comm 필드가 실행된 스크립트의 이름(예: helloworld.sh)을 기록하는 경우에 유용합니다.
    type: string
  - name: compat
    description: seccomp 동작에서의 시스템 호출 호환성 모드를 기록합니다.
    type: string
  - name: cwd
    description: 시스템 호출이 호출된 디렉터리의 경로를 기록합니다.
    type: string
  - name: data
    description: TTY 레코드와 관련된 데이터를 기록합니다.
    type: string
  - name: dev
    description: 이벤트에 기록된 파일 또는 디렉터리를 포함하는 장치의 마이너 및 메이저 ID를 기록합니다.
    type: string
  - name: devmajor
    description: 메이저 장치 ID를 기록합니다.
    type: string
  - name: devminor
    description: 마이너 장치 ID를 기록합니다.
    type: string
  - name: exe
    description: 분석된 프로세스를 호출하는 데 사용된 실행 파일의 경로를 기록합니다.
    type: string
  - name: exit
    description: '시스템 호출이 반환한 종료 코드를 기록합니다. 이 값은 시스템 호출에 따라 달라집니다. 다음 명령으로 값을 사람이 읽을 수 있는 형태로 해석할 수 있습니다: ausearch --interpret --exit exit_code'
    type: string
  - name: family
    description: 사용된 주소 프로토콜의 유형(IPv4 또는 IPv6)을 기록합니다.
    type: string
  - name: feature
    description: 설정되거나 해제되는 감사 기능을 기록합니다.
    type: string
  - 이름: file
    description: 무결성 측정에 관련된 파일을 기록합니다.
    type: string
  설명: 파일명
    description: 파일의 유형을 기록합니다.
    type: string
  - name: flags
    description: 파일 시스템 이름 플래그를 기록합니다.
    type: string
  - name: fowner
    description: 무결성 정책 룰에서 사용된 파일 소유자를 기록합니다.
    type: string
  - name: fsgid
    description: 분석된 프로세스를 시작한 사용자의 파일 시스템 그룹 ID를 기록합니다.
    type: string
  - name: fsmagic
    description: 무결성 정책 룰에서 사용된 파일시스템 매직을 기록합니다.
    type: string
  - name: fsuuid
    description: 무결성 정책 룰에서 사용된 fsuuid를 기록합니다.
    type: string
  - name: fsuid
    description: 분석된 프로세스를 시작한 사용자의 파일 시스템 사용자 ID를 기록합니다.
    type: string
  - name: func
    description: 무결성 정책 룰에 관련된 함수를 기록합니다.
    type: string
  - name: hash
    description: 무결성 측정에 관련된 파일의 해시를 기록합니다.
    type: string
  - 이름: hostname
    description: 호스트 이름을 기록합니다.
    type: string
    지표:
      - hostname
  - name: icmptype
    description: 수신된 인터넷 제어 메시지 프로토콜(ICMP) 패킷의 유형을 기록합니다. 이 필드를 포함하는 감사 메시지는 일반적으로 iptables에 의해 생성됩니다.
    type: string
  - 이름: id
    description: 변경된 계정의 사용자 ID를 기록합니다.
    type: string
  - name: inode
    description: 감사 이벤트에 기록된 파일 또는 디렉터리와 연관된 inode 번호를 기록합니다.
    type: string
  - name: inode_gid
    description: inode 소유자의 그룹 ID를 기록합니다.
    type: string
  - name: inode_uid
    description: inode 소유자의 사용자 ID를 기록합니다.
    type: string
  - 이름: ip
    description: seccomp 동작에서의 명령어 포인터를 기록합니다.
    type: string
    지표:
      - ip
  - name: items
    description: 이 레코드에 첨부된 경로 레코드 수를 기록합니다.
    type: string
  - 이름: key
    description: 특정 이벤트를 생성한 룰과 연관된 사용자 정의 문자열을 기록합니다.
    type: string
  - name: list
    description: '감사 룰 리스트 ID를 기록합니다. 알려진 ID 목록은 다음과 같습니다: 0 — user, 1 — task, 4 — exit, 5 — exclude'
    type: string
  - name: mode
    description: 파일 또는 디렉터리 권한을 숫자 표기법으로 기록합니다.
    type: string
  - name: msgtype
    description: 사용자 기반 AVC 거부 시 반환되는 메시지 유형을 기록합니다. 메시지 유형은 D-Bus에 의해 결정됩니다.
    type: string
  - 이름: name
    description: 시스템 호출에 인수로 전달된 파일 또는 디렉터리의 전체 경로를 기록합니다.
    type: string
  - name: new-disk
    description: 가상 머신에 할당된 새 디스크 리소스의 이름을 기록합니다.
    type: string
  - name: new-mem
    description: 가상 머신에 할당된 새 메모리 리소스의 양을 기록합니다.
    type: string
  - name: new-vcpu
    description: 가상 머신에 할당된 새 가상 CPU 리소스의 수를 기록합니다.
    type: string
  - name: new-net
    description: 가상 머신에 할당된 새 네트워크 인터페이스 리소스의 MAC 주소를 기록합니다.
    type: string
  - name: new_gid
    description: 사용자에게 할당된 그룹 ID를 기록합니다.
    type: string
  - name: new_lock
    description: 감사 기능에 설정된 잠금의 새 값을 기록합니다.
    type: string
  - name: nsec
    description: 시스템 시계가 이동된 나노초 수를 기록합니다.
    type: string
  - name: ocomm
    description: 대상 프로세스를 시작하는 데 사용된 명령을 기록합니다. 이 필드는 OBJ_PID 유형의 레코드에만 해당합니다.
    type: string
  - name: old_lock
    description: 감사 기능에 설정된 잠금의 이전 값을 기록합니다.
    type: string
  - name: oses
    description: 대상 프로세스의 세션 ID를 기록합니다. 이 필드는 OBJ_PID 유형의 레코드에만 해당합니다.
    type: string
  - name: obj
    description: 객체의 SELinux 컨텍스트를 기록합니다. 객체는 파일, 디렉터리, 소켓 또는 주체의 동작을 받는 모든 것이 될 수 있습니다.
    type: string
  - name: objtype
    description: 시스템 호출 맥락에서 PATH 레코드 객체의 의도를 기록합니다.
    type: string
  - name: obj_gid
    description: 객체의 그룹 ID를 기록합니다.
    type: string
  - name: obj_lev_high
    description: 객체의 높은 SELinux 레벨을 기록합니다.
    type: string
  - name: obj_lev_low
    description: 객체의 낮은 SELinux 레벨을 기록합니다.
    type: string
  - name: obj_role
    description: 객체의 SELinux 역할을 기록합니다.
    type: string
  - name: obj_type
    description: 객체의 유형을 기록합니다.
    type: string
  - name: obj_uid
    description: 객체의 UID를 기록합니다
    type: string
  - name: obj_user
    description: 객체와 연관된 사용자를 기록합니다.
    type: string
  - name: old-disk
    description: 새 디스크 리소스가 가상 머신에 할당될 때 이전 디스크 리소스의 이름을 기록합니다.
    type: string
  - name: old-mem
    description: 새 메모리 양이 가상 머신에 할당될 때 이전 메모리 리소스의 양을 기록합니다.
    type: string
  - name: old-vcpu
    description: 새 가상 CPU가 가상 머신에 할당될 때 이전 가상 CPU 리소스의 수를 기록합니다.
    type: string
  - name: old-net
    description: 새 네트워크 인터페이스가 가상 머신에 할당될 때 이전 네트워크 인터페이스 리소스의 MAC 주소를 기록합니다.
    type: string
  - name: old_prom
    description: 네트워크 프로미스큐이티 플래그의 이전 값을 기록합니다.
    type: string
  - name: path
    description: AVC 관련 감사 이벤트의 경우 시스템 호출 인수로 전달된 파일 또는 디렉터리의 전체 경로를 기록합니다
    type: string
  - name: perm
    description: 이벤트를 생성하는 데 사용된 파일 권한(즉 읽기, 쓰기, 실행 또는 속성 변경)을 기록합니다
    type: string
  - name: ppid
    description: 부모 프로세스 ID(PPID)를 기록합니다.
    type: string
  - name: proctitle
    description: 분석된 프로세스를 호출하는 데 사용된 명령의 전체 명령줄을 기록합니다. 이 필드는 Audit 로그 파서에 사용자가 영향을 미치지 못하도록 16진 표기법으로 인코딩됩니다. 텍스트는 이 감사 이벤트를 트리거한 명령으로 디코딩됩니다. ausearch 명령으로 감사 레코드를 검색할 때 -i 또는 --interpret 옵션을 사용하여 16진 값을 자동으로 사람이 읽을 수 있는 형태로 변환하세요.
    type: string
  - name: prom
    description: 네트워크 프로미스큐이티 플래그를 기록합니다.
    type: string
  - name: proto
    description: 사용된 네트워킹 프로토콜을 기록합니다. 이 필드는 iptables에 의해 생성된 감사 이벤트에만 해당합니다.
    type: string
  - name: res
    description: 감사 이벤트를 트리거한 작업의 결과를 기록합니다.
    type: string
  - name: resp
    description: fanotify 접근 제어 결정의 응답을 기록합니다.
    type: string
  - 이름: result
    description: 감사 이벤트를 트리거한 작업의 결과를 기록합니다.
    type: string
  - name: saddr
    description: 소켓 주소를 기록합니다.
    type: string
  - name: sec
    description: 시스템 시계가 이동된 초 수를 기록합니다.
    type: string
  - name: ses
    description: 분석된 프로세스가 호출된 세션의 세션 ID를 기록합니다.
    type: string
  - name: sig
    description: 프로그램을 비정상적으로 종료시키는 신호 번호를 기록합니다. 일반적으로 이는 시스템 침입의 징후입니다.
    type: string
  - name: subj
    description: 주체의 SELinux 컨텍스트를 기록합니다. 주체는 프로세스, 사용자 또는 객체에 대해 동작하는 모든 것이 될 수 있습니다.
    type: string
  - name: subj_clr
    description: 주체의 SELinux 결재(clearance)를 기록합니다.
    type: string
  - name: subj_role
    description: 주체의 SELinux 역할을 기록합니다.
    type: string
  - name: subj_sen
    description: 주체의 SELinux 민감도(sensitivity)를 기록합니다.
    type: string
  - name: subj_type
    description: 주체의 유형을 기록합니다.
    type: string
  - name: subj_user
    description: 주체와 연관된 사용자를 기록합니다.
    type: string
  - name: success
    description: 시스템 호출이 성공했는지 실패했는지를 기록합니다.
    type: string
  - name: syscall
    description: 커널에 전송된 시스템 호출 유형을 기록합니다.
    type: string
  - name: terminal
    description: 터미널 이름(/dev/ 없이)을 기록합니다.
    type: string
  - name: tty
    description: 제어 터미널의 이름을 기록합니다. 프로세스에 제어 터미널이 없으면 값은 (none)으로 사용됩니다.
    type: string
  - name: vm
    description: 감사 이벤트가 발생한 가상 머신의 이름을 기록합니다.
    type: string
  - name: xattr
    description: EVM에 의해 수정되고 보호되는 확장 속성 집합을 기록합니다.
    type: string
  - name: pid
    description: pid 필드의 의미는 이 필드의 값 출처에 따라 달라집니다. 사용자 공간에서 생성된 필드에서는 이 필드가 프로세스 ID를 가집니다. 커널에서 생성된 필드에서는 이 필드가 스레드 ID를 가집니다. 스레드 ID는 단일 스레드 프로세스의 경우 프로세스 ID와 같습니다. 이 스레드 ID 값은 사용자 공간에서 사용되는 pthread_t ID 값과 다릅니다. 자세한 내용은 gettid(2) 매뉴얼 페이지를 참조하세요.
    type: string
  - name: sauid
    description: 송신자 감사 로그인 사용자 ID를 기록합니다. 이 ID는 커널이 원래 auid를 전송하는 사용자를 볼 수 없기 때문에 D-Bus에서 제공합니다.
    type: string
  - name: sgid
    description: 분석된 프로세스를 시작한 사용자의 설정 그룹 ID(set group ID)를 기록합니다.
    type: string
  - name: oauid
    description: 시스템에 로그인하여(예: su 사용과 반대되는) 대상 프로세스를 시작한 사용자의 사용자 ID를 기록합니다. 이 필드는 OBJ_PID 유형의 레코드에만 해당합니다.
    type: string
  - name: opid
    description: 대상 프로세스의 프로세스 ID를 기록합니다. 이 필드는 OBJ_PID 유형의 레코드에만 해당합니다.
    type: string
  - name: ouid
    description: 대상 프로세스의 실제 사용자 ID를 기록합니다
    type: string
  - name: ogid
    description: 객체 소유자의 그룹 ID를 기록합니다.
    type: string
  - 이름: uid
    description: 분석된 프로세스를 시작한 사용자의 실제 사용자 ID를 기록합니다.
    type: string
    지표:
      - actor_id
  - name: suid
    description: 분석된 프로세스를 시작한 사용자의 설정 사용자 ID(set user ID)를 기록합니다.
    type: string
  - name: egid
    description: 분석된 프로세스를 시작한 사용자의 유효 그룹 ID를 기록합니다.
    type: string
  - name: auid
    description: 감사 사용자 ID를 기록합니다. 이 ID는 로그인 시 사용자에게 할당되며 사용자의 신원이 변경되더라도(예: su -john으로 사용자 계정을 전환할 때) 모든 프로세스가 상속합니다.
    type: string
  - name: euid
    description: 분석된 프로세스를 시작한 사용자의 유효 사용자 ID를 기록합니다.
    type: string
  - name: gid
    description: 그룹 ID를 기록합니다.
    type: string
  - name: extra_message_fields
    description: Panther가 정의한 필드입니다. auditd 로그의 msg 필드는 임의의 키-값 쌍을 포함할 수 있으며 이를 맵으로 구조화합니다
    유형: json
  - 이름: timestamp
    required: true
    description: 감사 이벤트가 발생한 시점
    type: timestamp
    timeFormats:
      - unix
    isEventTime: true
  - 이름: eventId
    description: 감사 이벤트의 ID. 동일한 감사 이벤트의 일부로 생성된 경우 여러 레코드가 동일한 타임스탬프와 ID를 공유할 수 있다는 점에 유의하세요
    type: string
```
