본문 바로가기

리눅스

[draft] 리눅스에서 auditd(감사)를 설치하고 사용하는 방법

728x90

리눅스에서 auditd(감사)를 설치하고 사용하는 방법

auditd는 Linux 커널의 감사 프레임워크를 기반으로 동작하는 데몬으로 시스템에서 발생하는 주요 이벤트를 추적하고 기록합니다.

 

이를 통해 다음과 같은 보안 요구사항을 충족할 수 있습니다.

  • 파일 접근 및 변경 추적
  • 사용자 행위 감사 (로그인/명령 실행)
  • 시스템 콜 기반 행위 분석
  • 보안 사고 대응 및 포렌식

1. 설치

Ubuntu/Debian 계열

sudo apt update
sudo apt install auditd audispd-plugins

CentOS/RHEL 계열

sudo yum install audit

2. 서비스 관리

서비스 시작

sudo systemctl start auditd

부팅 시 자동 시작

sudo systemctl enable auditd

상태 확인

sudo systemctl status auditd

3. auditd 설정

auditd의 기본 설정 파일은 /etc/audit/auditd.conf에 있습니다.

cat /etc/audit/auditd.conf
#
# This file controls the configuration of the audit daemon
#

local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = adm
log_format = ENRICHED
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
transport = TCP
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
q_depth = 1200
overflow_action = SYSLOG
max_restarts = 10
plugin_dir = /etc/audit/plugins.d
end_of_event_timeout = 2

주요 옵션 설명

  • log_file : 감사 로그 파일 경로
  • log_format : ENRICHED 권장 (해석 편의성 향상)
  • max_log_file : 로그 파일 최대 크기 (MB)
  • num_logs : 로그 로테이션 개수
  • space_left : 디스크 여유 공간 임계치 (%)
  • admin_space_left_action : 공간 부족 시 동작
  • disk_full_action : 디스크 full 시 동작
  • flush : 로그 flush 방식

4. 감사 규칙 설정

auditd는 감사 이벤트를 정의하는 규칙을 사용합니다.

cat /etc/audit/rules.d/audit.rules
# 기존 규칙 초기화
-D

# 버퍼 크기 증가
-b 8192

# 이벤트 처리 대기 시간
--backlog_wait_time 60000

# 실패 시 동작 (1 = syslog)
-f 1

5. 파일 삭제 감시

규칙 추가 (일시 적용)

sudo auditctl -w /tmp/testfile.txt -p wra -k delete_tmp_testfile

옵션 설명

  • -w 감시 대상 파일
  • -p 권한 (w:쓰기, r:읽기, a:속성 변경)
  • -k 이벤트 식별 키

영구 적용 (권장)

sudo vi /etc/audit/rules.d/delete-file.rules
-w /tmp/testfile.txt -p wra -k delete_tmp_testfile

적용

sudo augenrules --load

6. 테스트

파일 생성

echo "test file" > /tmp/testfile.txt

파일 삭제

rm /tmp/testfile.txt

7. 로그 조회

특정 이벤트 조회

sudo ausearch -k delete_tmp_testfile

리포트 형태 확인

sudo aureport -f

8. 로그 해석 방법

주요 로그 필드

시간

time->Fri Sep 22 10:03:35 2023

이벤트 유형

  • SYSCALL : 시스템 콜 정보
  • PATH : 파일 경로
  • CWD : 실행 위치
  • PROCTITLE : 실행 명령

핵심 분석 포인트

comm="rm"
exe="/usr/bin/rm"
name="/tmp/testfile.txt"
nametype=DELETE
  • /usr/bin/rm 명령으로 /tmp/testfile.txt 삭제됨

사용자 정보

uid=0
auid=1002
  • uid : 현재 실행 사용자
  • auid : 로그인 사용자

9. 운영에서 자주 사용하는 규칙

1) passwd 파일 변경 감시

-w /etc/passwd -p wa -k passwd_change

2) sudo 사용 감시

-w /var/log/sudo.log -p wa -k sudo_log

3) 권한 변경 감시

-a always,exit -F arch=b64 -S chmod -S chown -k perm_change

4) 실행 파일 추적

-a always,exit -F arch=b64 -S execve -k exec_log

10. 성능 및 운영 팁

버퍼 크기 조정 필수

-b 8192 이상 권장

과도한 rule 금지

  • rule 많으면 성능 저하
  • 필요한 것만 필터링

logrotate 연동

/etc/logrotate.d/audit

실시간 모니터링

tail -f /var/log/audit/audit.log

 

참고URL

- RedHat Docs(시스템 감사) : https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/8/html/security_hardening/auditing-the-system_security-hardening

- RedHat Docs(시스템 감사) : https://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/8/html/security_hardening/starting-the-audit-service_auditing-the-system

- Auditd가 포함된 Oracle Linux 감사 : https://docs.oracle.com/ko/learn/ol-auditd/#introduction

- auditd : https://sematext.com/glossary/auditd/

 

728x90