Page tree

Contents


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

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


설치

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

$ sudo yum install audit
CentOS 에 audit 데몬 설치
$ sudo apt install auditd
Ubuntu 에 audit 데몬 설치


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

$ sudo systemctl restart auditd
audit 데몬 구동

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 파일의 실제 내용입니다.

type=AVC msg=audit(1500130848.611:78): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1225/status" pid=1225 comm="m
ysqld" requested_mask="r" denied_mask="r" fsuid=107 ouid=107
type=SYSCALL msg=audit(1500130848.611:78): arch=c000003e syscall=2 success=no exit=-13 a0=7f57ad82bcca a1=0 a2=1b6 a3=0 items=0 ppid=1 pid=122
5 auid=4294967295 uid=107 gid=111 euid=107 suid=107 fsuid=107 egid=111 sgid=111 fsgid=111 tty=(none) ses=4294967295 comm="mysqld" exe="/usr/sb
in/mysqld" key=(null)
audit.log 예제

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

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


aureport

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

$ sudo aureport


Summary Report
======================
Range of time in logs: 2017년 07월 12일 23:12:25.845 - 2017년 07월 16일 00:46:04.247
Selected time for report: 2017년 07월 12일 23:12:25 - 2017년 07월 16일 00:46:04.247
Number of changes in configuration: 1
Number of changes to accounts, groups, or roles: 5
Number of logins: 2
Number of failed logins: 0
Number of authentications: 6
Number of failed authentications: 1
Number of users: 3
요약 보고서

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

  • -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 를 실행하면 됩니다.

$ sudo aureport -x --summary


Executable Summary Report
=================================
total file
=================================
8124 /usr/sbin/xtables-multi
1513 /usr/lib/systemd/systemd
932 /usr/sbin/sshd
258 /usr/sbin/crond
227 /usr/bin/sudo
200 /usr/bin/kmod
실행한 모든 명령어 요약

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

$ sudo aureport -x --summary --start "2017년7월10일"  --end "2017년7월20일" 
기간 지정

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


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

$ sudo aureport -x --summary --start this-month --end now
단어로 기간 검색


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

$ sudo  aureport -au 
su 시도 내역 표시

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

$ sudo  aureport -au  --failed


8. 2017년 07월 16일 12:50:16 root ? pts/0 /usr/bin/su no 226
9. 2017년 07월 16일 12:50:21 root ? pts/0 /usr/bin/su no 227
10. 2017년 07월 16일 12:57:08 lesstif ? /dev/pts/0 /usr/bin/sudo no 308
실패 내역 출력

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


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

$ sudo aureport -l --failed


Login Report
============================================
# date time auid host term exe success event
============================================
1. 07/16/17 13:16:28 lesstif ::1 ssh /usr/sbin/sshd no 634
로그인 실패 조회

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



Ref





  • No labels

This page has no comments.