웹사이트 검색

CentOS/RHEL에서 Auditd 도구를 사용하여 Linux 시스템 감사 알아보기


시스템 감사는 단순히 특정 대상 시스템에 대한 심층 분석을 의미합니다. 감사는 해당 시스템을 구성하는 다양한 부분에 대한 검사와 다양한 관심 영역에 대한 비판적 평가(필요한 경우 테스트)로 구성됩니다.

추가 읽기: Lynis – Linux 시스템용 보안 감사 및 검색 도구

일반적으로 auditd로 알려진 Linux 감사 시스템인 RHEL/CentOS의 중요한 하위 시스템 중 하나입니다. 시스템의 보안 관련 정보를 추적하는 수단을 구현합니다. 사전 구성된 규칙을 사용하여 시스템에서 발생하는 이벤트에 대한 방대한 양의 정보를 수집하고 이를 로그 파일에 기록하여 감사 시도를 생성합니다.

이벤트의 날짜와 시간, 유형, 결과 등의 정보를 기록할 수 있습니다. 이벤트를 일으킨 사용자, 파일/데이터베이스에 대한 수정 사항 PAM, LDAP, SSH 등과 같은 시스템 인증 메커니즘을 사용합니다.

Auditd는 또한 감사 구성 파일에 대한 변경 사항이나 감사 로그 파일에 대한 액세스 시도, 시스템으로 정보를 가져오거나 내보내려는 모든 노력과 기타 많은 보안 관련 정보를 등록합니다.

Linux 감사 시스템이 중요한 이유는 무엇입니까?

  1. 시스템에서 실행하기 위해 외부 프로그램이나 프로세스가 필요하지 않아 자립적입니다.
  2. 고도로 구성 가능하므로 원하는 시스템 작업을 볼 수 있습니다.
  3. 이는 시스템의 잠재적인 손상을 탐지하거나 분석하는 데 도움이 됩니다.
  4. 독립적인 탐지 시스템으로 작동할 수 있습니다.
  5. 침입 탐지 시스템과 함께 작동하여 침입 탐지를 활성화할 수 있습니다.
  6. 법의학 조사를 감사하는 데 필수적인 도구입니다.

Linux 감사 시스템 구성 요소

감사 시스템에는 다음과 같은 두 가지 핵심 구성 요소가 있습니다.

  • 사용자 공간 애플리케이션 및 유틸리티/도구
  • 커널 측 시스템 호출 처리 – 이는 사용자 공간 애플리케이션의 시스템 호출을 받아들이고 이를 세 가지 유형의 필터, 즉 user, task, exit<를 통해 전달합니다. 또는 제외.

가장 중요한 부분은 커널에서 사전 구성된 규칙을 기반으로 정보를 수집하고 로그 파일에 항목을 생성하는 사용자 공간 감사 데몬(auditd)입니다. 기본 로그는 /var/log/audit/audit.log입니다.

또한 audispd(감사 디스패처 데몬)는 auditd와 상호작용하고 실시간 수행을 원하는 다른 프로그램에 이벤트를 보내는 이벤트 멀티플렉서입니다. 이벤트 처리.

감사 시스템에서 정보를 관리하고 검색하기 위한 다양한 사용자 공간 도구가 있습니다.

  • auditctl – 커널의 감사 시스템을 제어하기 위한 유틸리티입니다.
  • ausearch – 특정 이벤트에 대한 감사 로그 파일을 검색하는 유틸리티입니다.
  • aureport – 기록된 이벤트 보고서를 생성하는 유틸리티입니다.

RHEL/CentOS/Fedora에서 감사 도구를 설치하고 구성하는 방법

먼저 다음과 같이 rpm 명령과 grep 유틸리티를 사용하여 감사 도구가 시스템에 설치되어 있는지 확인하십시오.

rpm -qa | grep audit

위 패키지가 설치되어 있지 않은 경우 루트 사용자로 이 명령을 실행하여 설치하십시오.

yum install audit

다음으로 auditd가 활성화되어 실행 중인지 확인하고 터미널에서 아래 systemctl 명령을 실행하세요.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

이제 기본 구성 파일 /etc/audit/auditd.conf를 사용하여 auditd를 구성하는 방법을 살펴보겠습니다. 여기의 매개변수를 사용하면 로그 파일 위치 정의, 최대 로그 파일 수, 로그 형식, 전체 디스크 처리 방법, 로그 회전 및 기타 다양한 옵션 등 서비스 실행 방법을 제어할 수 있습니다.

vi /etc/audit/auditd.conf

아래 샘플 출력에서 매개변수는 설명이 필요하지 않습니다.

감사 규칙 이해

앞서 언급했듯이 auditd는 규칙을 사용하여 커널에서 특정 정보를 수집합니다. 이러한 규칙은 기본적으로 /etc/audit/rules.d/audit.rules 파일(CentOS의 경우)에서 규칙을 사전 구성할 수 있는 auditctl 옵션(man 페이지 참조)입니다. 6, /etc/audit/audit.rules 파일을 사용하여 시작 시 로드되도록 합니다.

정의할 수 있는 감사 규칙에는 세 가지 종류가 있습니다.

  • 제어 규칙 - 감사 시스템의 동작과 일부 구성을 수정할 수 있습니다.
  • 파일 시스템 규칙(파일 감시라고도 함) - 특정 파일이나 디렉터리에 대한 액세스 감사를 활성화합니다.
  • 시스템 호출 규칙 – 모든 프로그램에서 수행된 시스템 호출의 기록을 허용합니다.

이제 편집을 위해 기본 구성 파일을 엽니다.

vi /etc/audit/rules.d/audit.rules

이 파일의 첫 번째 섹션에는 제어 규칙이 포함되어야 합니다. 그런 다음 중간 섹션에 감사 규칙(파일 감시 및 시스템 호출 규칙)을 추가하고 마지막 섹션에는 제어 규칙이기도 한 불변성 설정이 포함됩니다.

감사 통제 규칙의 예

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

감사 파일 시스템 규칙의 예

다음 구문을 사용하여 파일 감시를 정의할 수 있습니다.

-w /path/to/file/or/directory -p permissions -k key_name

옵션은 다음과 같습니다.

  • w – 감시할 파일이나 디렉터리를 지정하는 데 사용됩니다.
  • p – 기록할 권한, r – 읽기 액세스, w – 쓰기 액세스, x – 액세스를 실행하고 a – 파일 또는 디렉터 속성을 변경합니다.
  • -k – 특정 로그 항목을 생성한 규칙(또는 규칙 집합)을 식별하기 위한 선택적 문자열을 설정할 수 있습니다.

이러한 규칙을 사용하면 감사를 통해 중요한 시스템 파일을 변경하는 이벤트를 감시할 수 있습니다.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Auditd 시스템 호출 규칙의 예

아래 양식을 사용하여 시스템 호출 규칙을 설정할 수 있습니다.

-a action,filter -S system_call -F field=value -k key_name

어디 :

  • action – 항상 또는 절대라는 두 가지 값이 가능합니다.
  • 필터 – 커널 규칙 일치 필터(작업, 종료, 사용자 및 제외)가 이벤트에 적용되도록 지정합니다.
  • 시스템 호출 – 시스템 호출 이름입니다.
  • 필드 – 규칙을 수정하기 위한 아키텍처, PID, GID 등과 같은 추가 옵션을 지정합니다.

다음은 정의할 수 있는 몇 가지 규칙입니다.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

그런 다음 마지막으로 파일 끝에 불변성 설정을 추가합니다. 예를 들면 다음과 같습니다.

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
샘플 감사 규칙 구성 파일

auditctl 유틸리티를 사용하여 Auditd 규칙을 설정하는 방법

또는 다음 예와 같이 auditctl을 사용하여 실행 중에 auditd에 옵션을 보냅니다. 이러한 명령은 구성 파일의 규칙을 재정의할 수 있습니다.

현재 로드된 모든 감사 규칙을 나열하려면 -l 플래그를 전달합니다.

auditctl -l

다음으로 몇 가지 규칙을 추가해 보세요.

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

감사 로그 파일 이해

모든 감사 메시지는 기본적으로 /var/log/audit/audit.log 파일에 기록됩니다. 로그 항목 형식을 이해하기 위해 규칙을 로드하고 규칙과 일치하는 이벤트 후에 생성된 로그 항목을 확인하겠습니다.

비밀 백업 디렉터리가 있다고 가정하면 이 감사 규칙은 이 디렉터리에 액세스하거나 수정하려는 모든 시도를 기록합니다.

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

이제 다른 시스템 계정을 사용하여 위 디렉터리로 이동하고 ls 명령을 실행해 보세요.

cd /backups/secret_files/
ls

로그 항목은 다음과 같습니다.

위 이벤트는 세 가지 유형의 감사 기록으로 구성됩니다. 첫 번째는 type=SYSCALL입니다.

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

두 번째는 type=CWD입니다.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

마지막은 type=PATH입니다.

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

감사 시스템 참조에서 모든 이벤트 필드(예: msg, Arch, ses 등)의 전체 목록과 해당 의미를 찾을 수 있습니다.

지금은 여기까지입니다. 다음 글에서는 ausearch를 사용하여 감사 로그 파일을 쿼리하는 방법을 살펴보겠습니다. 감사 로그에서 특정 정보를 검색하는 방법을 설명하겠습니다. 질문이 있으시면 아래 댓글 섹션을 통해 문의해 주세요.