시스템 관리자라면 보안에 대한 고민은 끊이지 않을 겁니다. 특히, 서버에 대한 접근 기록, 파일 변경 이력 등은 문제 발생 시 원인 분석과 재발 방지를 위해 매우 중요합니다. 이 모든 것을 효과적으로 기록하고 관리할 수 있는 도구가 바로 `auditd`입니다. 이번 리뷰에서는 `auditd`를 사용해 시스템 감사 로그를 설정하는 방법에 대해 자세히 알아보고, 실제 사용 경험을 바탕으로 장단점을 분석해 보겠습니다.

auditd란 무엇인가

`auditd`는 리눅스 운영체제에서 시스템 콜을 감사하는 데 사용되는 사용자 공간 감사 시스템입니다. 커널의 감사 기능을 활용하여 파일 접근, 시스템 호출, 명령어 실행 등 다양한 시스템 활동을 기록합니다. 기록된 로그는 시스템 보안 사고 발생 시 원인 분석 및 법적 증거 자료로 활용될 수 있습니다. 단순히 로그를 남기는 것뿐만 아니라, 특정 이벤트 발생 시 알림을 보내는 기능도 제공하여 실시간 보안 모니터링에도 유용합니다.

auditd 설치와 기본 설정

`auditd`는 대부분의 리눅스 배포판에서 기본적으로 제공되거나 패키지 관리자를 통해 쉽게 설치할 수 있습니다. 예를 들어, CentOS/RHEL에서는 다음과 같이 설치할 수 있습니다.

sudo yum install auditd

sudo systemctl enable auditd

sudo systemctl start auditd

 

Ubuntu/Debian에서는 다음과 같이 설치합니다.

sudo apt update

sudo apt install auditd

sudo systemctl enable auditd

sudo systemctl start auditd

 

설치 후에는 `/etc/audit/auditd.conf` 파일을 통해 `auditd`의 동작 방식을 설정할 수 있습니다. 로그 파일 위치, 로그 보관 기간, 로그 파일 크기 등 다양한 옵션을 조정할 수 있습니다.

auditd 규칙 설정의 중요성

`auditd`는 모든 시스템 활동을 기록할 수 있지만, 모든 것을 기록하는 것은 오히려 분석을 어렵게 만들 수 있습니다. 따라서, 중요한 이벤트만 선택적으로 기록하는 규칙을 설정하는 것이 중요합니다. 규칙은 `/etc/audit/rules.d/audit.rules` 파일에 정의하며, `auditctl` 명령어를 사용하여 실시간으로 규칙을 추가하거나 삭제할 수 있습니다.

auditctl 명령어 사용법

`auditctl`은 `auditd`의 규칙을 관리하는 데 사용되는 명령줄 도구입니다. 다음은 자주 사용되는 `auditctl` 명령어의 예시입니다.

규칙을 설정할 때는 어떤 이벤트를 기록할지 신중하게 결정해야 합니다. 너무 많은 규칙은 성능 저하를 유발할 수 있으며, 너무 적은 규칙은 필요한 정보를 놓칠 수 있습니다.

규칙 예시와 설명

다음은 몇 가지 유용한 `auditd` 규칙 예시입니다.

`/etc/passwd` 파일 변경 감시

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

 

이 규칙은 `/etc/passwd` 파일에 대한 쓰기(w) 및 속성 변경(a)을 감시하고, `passwd_changes` 키워드를 사용하여 로그를 필터링할 수 있도록 합니다.

특정 사용자 명령어 실행 감시

-a always,exit -F auid>=1000 -F auid!=4294967295 -C uid!=gid -S execve -k user_commands

 

이 규칙은 UID가 1000 이상인 사용자가 실행한 모든 명령어를 감시하고, `user_commands` 키워드를 사용하여 로그를 필터링할 수 있도록 합니다. `-F auid!=4294967295`는 로그인하지 않은 상태에서 실행되는 명령어를 제외합니다. `-C uid!=gid`는 UID와 GID가 다른 경우만 기록합니다 (일반적인 사용자 명령어 실행).

로그인/로그아웃 이벤트 감시

-w /var/log/lastlog -p wa -k logins

-w /var/run/utmp -p wa -k logins

-w /var/log/wtmp -p wa -k logins

-w /var/log/btmp -p wa -k logins

 

이 규칙은 로그인/로그아웃 관련 파일에 대한 변경을 감시하고, `logins` 키워드를 사용하여 로그를 필터링할 수 있도록 합니다.

ausearch와 aureport 활용

`auditd`는 로그를 남기는 것뿐만 아니라, 로그를 분석하고 보고서를 생성하는 도구도 제공합니다. `ausearch`는 로그를 검색하는 데 사용되며, `aureport`는 로그를 기반으로 보고서를 생성하는 데 사용됩니다.

ausearch를 이용한 로그 검색

ausearch -k passwd_changes

 

이 명령어는 `passwd_changes` 키워드를 가진 로그를 검색합니다.

ausearch -u <사용자_ID> -ts today

 

이 명령어는 특정 사용자가 오늘 실행한 모든 이벤트를 검색합니다.

aureport를 이용한 보고서 생성

aureport -au

 

이 명령어는 모든 사용자 활동에 대한 보고서를 생성합니다.

aureport -f -ts today

 

이 명령어는 오늘 변경된 파일에 대한 보고서를 생성합니다.

auditd 사용 경험 및 성능 분석

실제로 `auditd`를 사용하면서 느낀 점은 보안 강화에 매우 효과적이라는 것입니다. 특히, 중요한 파일에 대한 접근 기록을 남겨두면, 보안 사고 발생 시 원인 파악에 큰 도움이 됩니다. 또한, 특정 사용자의 명령어 실행 기록을 감시하면, 내부자의 악의적인 행위를 탐지하는 데 유용합니다.

하지만 `auditd`는 설정이 복잡하고, 잘못 설정하면 성능 저하를 유발할 수 있다는 단점도 있습니다. 특히, 모든 시스템 활동을 기록하도록 설정하면, 로그 파일 크기가 급격하게 증가하고, 디스크 공간을 빠르게 소모할 수 있습니다. 따라서, `auditd`를 사용하기 전에 충분한 테스트를 거쳐 최적의 규칙을 설정하는 것이 중요합니다.

또한, `auditd` 로그는 분석하기 어려울 수 있습니다. 로그가 시스템 콜 수준으로 기록되기 때문에, 일반 사용자가 이해하기 어려운 경우가 많습니다. 따라서, 로그 분석 도구를 함께 사용하는 것이 좋습니다. 예를 들어, `Elasticsearch`와 `Kibana`를 사용하여 `auditd` 로그를 시각화하고 분석하면, 보다 쉽게 보안 위협을 탐지할 수 있습니다.

유사 제품/서비스와의 비교

`auditd`와 유사한 기능을 제공하는 제품 및 서비스는 여러 가지가 있습니다. 예를 들어, `Sysmon`은 윈도우 운영체제에서 시스템 활동을 감시하는 데 사용되는 도구입니다. `Sysmon`은 `auditd`보다 설정이 간단하고, 로그 분석 기능도 강력하지만, 윈도우 운영체제에서만 사용할 수 있다는 단점이 있습니다.

또한, 상용 보안 솔루션 중에는 시스템 활동 감시 기능을 제공하는 제품들이 많습니다. 이러한 제품들은 `auditd`보다 사용하기 쉽고, 다양한 보안 기능을 제공하지만, 비용이 비싸다는 단점이 있습니다.

`auditd`는 무료로 사용할 수 있고, 리눅스 운영체제에서 광범위하게 사용되는 도구라는 장점이 있습니다. 하지만, 설정이 복잡하고, 로그 분석 기능이 부족하다는 단점도 있습니다. 따라서, `auditd`를 사용할지, 다른 제품/서비스를 사용할지는 비용, 사용 편의성, 기능 요구 사항 등을 고려하여 결정해야 합니다.

auditd 설정 시 주의사항

`auditd`를 설정할 때는 다음과 같은 사항에 주의해야 합니다.

auditd를 활용한 보안 강화 전략

`auditd`는 시스템 보안을 강화하는 데 매우 유용한 도구입니다. 다음은 `auditd`를 활용하여 시스템 보안을 강화할 수 있는 몇 가지 전략입니다.

`auditd`를 효과적으로 활용하기 위해서는 보안 정책을 수립하고, 정책에 따라 규칙을 설정해야 합니다. 또한, 로그를 주기적으로 분석하고, 보안 위협을 탐지하는 프로세스를 구축해야 합니다.

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다