리눅스 Audit 시스템은 해당 시스템의 보안관련 정보를 트래킹할 수 있는 방법을 제공합니다. 사전 설정된 규칙에 따라 Audit은 시스템에서 발생된 이벤트에 관해 많은 정보를 포함하는 로그를 생성하는데요, 이러한 정보는 미션 크리티컬한 환경에서 보안 정책과 위반사항을 모니터링 하는데에 효과적입니다. 이러한 Audit 시스템은 추가적인 보안을 시스템에 제공하지는 않지만 시스템 보안정책의 위반을 파악하는데 이용되며 이를 SELinux와 같은 추가적인 보안 수단과 조합한다면 위험을 예방하는데 효과적으로 사용될 수 있습니다.

Audit이 로그로 기록 가능한 요소들은 다음과 같습니다.

  • 날짜와 시간, 유형 및 이벤트의 결과
  • 주체와 객체의 민감도 레이블
  • 일련의 이벤트를 발생시킨 사용자 ID
  • Audit의 모든 수정사항과 Audit 로그파일 접근시도
  • SSH나 Kerberos 등의 모든 인증메커니즘 이용기록
  • /etc/passwd와 같은 데이터베이스의 수정사항
  • 시스템으로 파일을 가져오거나 시스템에서 파일을 가져가려는 행위
  • 사용자 ID, 주체와 객체 레빌 및 기타속성을 기반으로 이벤트를 포함하거나 배제

 

Audit 시스템은 크게 두 가지 부분, 사용자 공간 애플리케이션과 유틸리티 부분,  커널 측 시스템 호출 처리 부분으로 구분됩니다.  커널 컴포넌트는 사용자 공간 프로그램에서 시스템 호출을 수신하고 그것들을 user, task, exit로 이뤄진 3 개의 필터 중 하나를 통해 필터링합니다. 시스템 호출이 필터를 통과 한 후에는 exclude 필터로 보내지고, 그 후  Audit 규칙에 기초해 추가적인 프로세스를 위해 Audit 데몬으로 전달됩니다. 다음 그림은 이 과정을 보여줍니다.

Audit 시스템 아키텍처(Source: Redhat Document)

사용자 공간 Audit 데몬은 커널에서 정보를 수집하고 로그 파일에 해당 항목을 생성합니다. 기타 Audit 사용자 공간 유틸리티는 Audit 데몬, 커널 Audit  구성 요소 또는 감사 로그 파일과 상호 작용합니다. 유틸리티 설명은 다음과 같습니다.

audisp : Audit 디스패처 데몬은 Audit 데몬과 상호 작용하고 추가 처리를 위해 다른 응용 프로그램에 이벤트를 전송합니다. 이 데몬은 Audit 이벤트와 실시간 분석 프로그램이 상호 작용할 수 있도록 플러그 장치를 제공합니다.

auditctl : Audit 제어 유틸리티는  이벤트 발생 프로세스의 수많은 설정과 파라미터들을 컨트롤하기 위해 커널의 Audit 구성요소와 상호작용합니다.

나머지 Audit 유틸리티는 Audit 로그파일 내용을 이용해 유저의 요구에 따른 출력을 생성합니다. 예를 들어, aureport 유틸리티는 기록 된 모든 이벤트의 보고서를 생성합니다.

Audit은 커널과 밀접하게 연관되어 동작하며 시스템호출을 추적하므로 기존 syslog가 할 수 없었던, 특정 사용자나 파일 접근, 명령 사용을 추적하는 등의 행위가 가능하며 SELinux나 Apparmor 같은 커널보안모듈과 연동할 수 있습니다.

Audit이 가진 이러한 강력한 장점들 때문에 많은 보안인증가이드라인에서는 Audit 사용을 강제함은 물론, 자세한 설정값까지 제시하고 있습니다.

각 가이드라인에 맞는 규칙의 세트(Ruleset)은 audit 패키지와 함께 /usr/share/doc/audit-*/ 디렉터리 아래에 설치되어 바로 복사해 적용할 수 있도록 준비되어 있습니다.

 

 

< Audit 시스템 설정>

아래 과정은 모두 root 권한을 필요로 하기에 root 권한 사용을 전제로 설명하겠습니다.

1. Audit 시스템 설치 확인
Audit 시스템은 Redhat계열(RHEL, CentOS, Fedora)의 경우 기본 설치되어 있으며 Ubuntu의 경우 설치되어 있지 않을 가능성이 있습니다.
설치하기 위한 명령어는 다음과 같습니다.

Ubuntu

~ # apt-get install auditd audisp-plugins

RHEL/CentOS

~ # yum install auditd

2. Audit 규칙 설정
Audit 데몬이 어떠한 로그를 기록할지 설정하기 위해 관련 파일을 편집합니다.

Audit 규칙은 /etc/audit/audit.conf 파일에 기록되며 사용자가 직접 설정 가능합니다. 빠른 설정을 위해서 audit과 함께 제공되는 룰셋 중 하나를 적용할 수도 있습니다. 여기에서는

[美 국방부 국가 산업보호 운영 지침(NISPOM)(룰셋전문)]을 따른 룰셋을 적용해보겠습니다.

먼저 기존 사용하던 룰셋을 백업합니다.

~ # mv /etc/audit/audit.conf /etc/audit/audit.conf.bak

다음, 룰셋을 가져옵니다.

~ # cp /usr/share/doc/audit-*/nispom.rules /etc/audit/audit.conf

auditd를 재시작합니다. systemd가 아닌, SysV 명령어를 사용합니다. (참고)

~ # service auditd restart

 

 

 

References:
(1) Redhat Inc. RHEL7 System Administrator’s Guide. November 03, 2016. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/System_Administrators_Guide/Red_Hat_Enterprise_Linux-7-System_Administrators_Guide-en-US.pdf (Accessed 2016-11-28).
(2) Redhat Inc. RHEL7 Security Guide. November 01, 2016. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Security_Guide/Red_Hat_Enterprise_Linux-7-Security_Guide-en-US.pdf (Accessed 2016-11-28).
(3) Redhat Inc. RHEL7 SELinux User and Administrator’s Guide. November 02, 2016. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/SELinux_Users_and_Administrators_Guide/Red_Hat_Enterprise_Linux-7-SELinux_Users_and_Administrators_Guide-en-US.pdf (Accessed 2016-11-28).
(4) Linux man page. auditd.conf(8). https://linux.die.net/man/8/auditd.conf (Accessed 2016-11-28).
(5) Linux man page. audit.rules(7). https://linux.die.net/man/7/audit.rules (Accessed 2016-11-29).