리눅스는 시스템의 보안 관련 정보를 감사할 수 있는 auditd 라는 데몬을 제공합니다.

auditd 는 사전에 정의된 규칙에 의거하여 시스템에서 발생하는 보안과 인증 관련 이벤트의 로그를 기록하므로 권한 없는 계정이 root 권한을 얻으려고 시도하거나 서버 데몬이 SELinux 의 보안 정책에 위배되는 동작을 수행했는지 등의 시스템의 보안 위반 사례를 확인할 수 있으며 이를 통해 위협을 식별하고 방지하는데 사용할 수 있습니다.


설치

audit 관련 패키지를 설치하면 되며 CentOS 는 패키지명이 audit 이며 우분투는 auditd 이니 주의하십시요.


설치가 완료되면 auditd 서비스를 실행해야 하니 systemctl  명령으로 실행해 줍니다. 

CentOS 에서는 아래와 같은 오류가 날 수 있는데 status 명령어로 확인 결과 구동중이라면 오류 메시지를 무시하면 됩니다.

Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only.
See system logs and 'systemctl status auditd.service' for details


Audit 은 시스템의 audit 로그 파일인 /var/log/audit/audit.log 에 남기고 있으며 아래는 audit.log 파일의 실제 내용입니다.

보다시피 레코드별로 자세한 로그 정보를 기록하지만 이해하기는 어려운 형태로 되어 있습니다.

audit.log 파일을 대상으로 특정 조건에 맞게 검색할 수 있는 명령어인 ausearch 와 보고서를 만들수 있는 aureport 명령어가 있는데 이중에 aureport 에 대해 알아 봅시다.


aureport

기본적으로 옵션없이 aureport 를 실행하면 요약 보고서를 생성해 줍니다.

이벤트나 조건별로 보고서를 뽑기 위한 많은 옵션들이 있지만 많이 사용하는 옵션은 다음과 같습니다.

  • -au, --auth : 인증 시도에 대한 리포트 생성하며 su, sudo 명령어 시도시에 로그를 남깁니다.
  • -a, --avc : avc message(SElinux) 에 대한 리포트로 다음 장에서 설명할 SELinux 의 에러 상황을 확인하는데 유용합니다.
  • -f, --file : 파일이나 Unix domain 소켓에 대한 리포트
  • -x : 실행한 모든 명령어 목록에 대한 리포트
  • -l, --login : 로그인에 대한 리포트
  • -h, --hostReport : 호스트에 대한 리포트
  • --failed: 실패한 건만 리포트. 

  • --success: 성공한 건만 리포트. 
  • --summary: 요약 리포트. 

  • -ts, --start: 리포트 대상 시작일
  • -te, --end: 리포트 대상 종료일


만약 실행한 모든 명령어에 대한 요약을 보려면 su 나 sudo 명령어를 실행한 내역을 확인하려면 aureport -au 를 실행하면 됩니다.

특정 기간만 필요하다면 --start 와 --end 로 기간을 지정할 수 있습니다.

LANG 변수가 ko_KR.UTF-8 일 경우 날자를 한글로 써야 제대로 검색됩니다. LANG 이 영어(en_US.utf8)일 경우에는 --start 07/10/2017 --en07/20/201717 와 같이 해당 locale 에 맞게 날자를 입력해야 합니다.


또는 날자를 직접 지정하는 대신에 this-weekthis-monthyesterday, now 등의 단어를 사용해서 날자를 검색할 수도 있습니다. 예로 다음 명령어는 이번 달에 발생한 모든 로그를 요약해서 표시합니다.


susudo 명령어를 실행한 내역을 확인하려면 aureport -au 를 실행하면 됩니다.

독자들의 화면에 많은 로그가 보일 것이며 이는 su 나 sudo 를 시도한 모든 내역을 표시하기 때문입니다. 보통 실패한 로그가 보안상 중요한 경우가 많으므로 이를 뽑아보려면 --failed 옵션을 주고 실행하면 됩니다.

독자들도 위 명령어 실행전에 su 나 sudo 를 시도한 후에 잘못된 루트 암호를 넣은 후에 실행해 보면 위와 같이 실패한 내역과 계정, 시간을 볼 수 있습니다.


만약 로그인 실패 건을 확인하려면 다음과 같이 -l 과 같이 사용하면 됩니다.

이와 같이 aureport 를 잘 활용하면 시스템의 주요 이벤트중에 보안 정책 위반 사례를 식별할 수 있습니다.