EC2 Linux 인스턴스에서 사용자 활동, 파일 변경 사항, 디렉터리 변경 사항을 추적하기 위한 Linux 감사 규칙을 구성하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 29일

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에서 사용자 활동, 파일 변경 사항, 디렉터리 변경 사항 등의 활동을 추적하고 싶습니다. 이 작업을 수행하려면 Linux Auditing 시스템을 어떻게 구성해야 합니까?

간략한 설명

Auditd는 Linux Audit 시스템을 위한 사용자 영역 구성 요소입니다. Auditd는 수상한 활동을 추적하는 데 유용하고, 추가적인 보안 조치를 취해야 할 영역을 확인하는 데 도움이 될 수 있습니다.

Auditd는 다음과 같은 용도로 사용합니다.

  • 파일 및 디렉터리에 액세스하거나 이를 수정하는 사용자 또는 애플리케이션을 추적합니다.
  • 특정 명령을 실행하는 사용자를 추적합니다.

해결 방법

1.    ec2-user/ubuntu/root userSSH를 사용하여 EC2 인스턴스에 연결합니다. ubuntuAMI의 사용자 이름으로 바꿉니다.

2.    다음의 명령을 실행하여 감사 패키지를 설치합니다.

RHEL 및 CentOS:

# sudo yum install audit

SUSE Linux:

# sudo zypper install audit

Ubuntu:

# sudo apt install auditd

3.    감사 규칙을 생성합니다.

감사 규칙은 /etc/audit/audit.rules 파일에서 정의됩니다. 사용자 지정 감사 규칙은 /etc/audit/rules.d/custom.conf 파일에서 정의됩니다. 파일에서 정의된 감사 규칙은 영구적입니다. 규칙은 런타임에서도 구현할 수 있습니다.

auditctl 명령을 실행하여 감사 규칙을 생성합니다.

규칙 예

특정 파일 또는 디렉터리에 액세스하거나 이를 수정하는 사용자 또는 애플리케이션을 추적합니다.

# sudo auditctl -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete

특정 명령을 실행하는 사용자를 추적합니다. 다음 예제에서 sudo 명령을 실행합니다.

# sudo auditctl -w /bin/sudo -p rwxa -k sudo

다음은 이전의 예제에서 사용한 구문 목록입니다.

-a - 새 규칙을 추가합니다.
-w - 특정 경로에서 파일 시스템 객체에 대한 감시를 삽입합니다(예: /etc/shadow).
-p- 파일 시스템에 대한 권한 필터를 설정합니다.
-k - 감사 규칙에서 필터 키를 설정합니다. 필터 키는 규칙에서 생성된 감사 레코드를 고유하게 식별합니다.
-F - 이 필드를 사용하여 아키텍처, PID, GID, auid 등의 추가적인 옵션을 지정합니다.
-S - 시스템 호출입니다. 이는 이름 또는 번호가 됩니다.

구문 및 스위치의 전체 목록은 Linux 설명 페이지에서 auditctl(8)audit.rules(7)를 참조하세요.

참고: 재부팅 후에도 규칙을 유지하려면 audit.rules를 편집한 다음, 다음의 규칙을 파일에 추가하세요.

RHEL 6, CentOS 6 또는 Amazon Linux 1:

# sudo vi /etc/audit/rules.d/audit.rules
-a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete
-w /bin/sudo -p rwxa -k sudo

RHEL 7, CentOS 7 또는 Amazon Linux 2:

# sudo vi /etc/audit/rules.d/audit.rules
-a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete
-w /bin/sudo -p rwxa -k sudo

4.    변경한 후에 auditd 서비스를 다시 시작합니다. auditd 서비스가 부팅 시 실행되도록 설정합니다.

# sudo chkconfig auditd on
# sudo service auditd start
# sudo service auditd stop
# sudo service auditd restart

참고: auditd 서비스를 다시 시작할 때 CentOS 및 RHEL 7에서 systemctl 명령 대신 service 명령을 사용하는 것이 좋습니다. systemctl 명령을 사용하면 오류가 발생할 수 있습니다.

5.    ausearch 명령을 실행하여 감사 로그를 읽습니다.

감사 로그의 예

다음 예제에서는 사용자 ec2-user(uid = ec2-user)가 /root/test/example.txt 파일을 삭제했습니다.

# sudo ausearch -i -k delete
type=PROCTITLE msg=audit(04/04/20 19:41:51.231:3303) : proctitle=rm -rf /root/test/example.txt
type=PATH msg=audit(04/04/20 19:41:51.231:3303) : item=1 name=/root/test/example.txt inode=16777349 dev=ca:01 mode=file,777 ouid=root ogid=root
rdev=00:00 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
type=PATH msg=audit(04/04/20 19:41:51.231:3303) : item=0 name=/tmp/test/ inode=16777328 dev=ca:01 mode=dir,777 ouid=root ogid=root rdev=00:00 nametype=PARENT cap_fp=none cap_fi=none
cap_fe=0 cap_fver=0
type=CWD msg=audit(04/04/20 19:41:51.231:3303) : cwd=/home/ec2-user
type=SYSCALL msg=audit(04/04/20 19:41:51.231:3303) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=0xffffff9c a1=0xc5f290 a2=0x0 a3=0x165 items=2 ppid=3645
pid=933 auid=ec2-user uid=ec2-user gid=ec2-user euid=ec2-user suid=ec2-user fsuid=ec2-user egid=ec2-user sgid=ec2-user fsgid=ec2-user tty=pts0 ses=1 comm=rm exe=/usr/bin/rm key=delete

다음 예제에서는 사용자 ec2-user(uid = 1000)가 sudo 권한으로 sudo su - 명령을 실행했습니다.

# sudo ausearch -k sudo

time->Mon Apr  6 18:33:26 2020
type=PROCTITLE msg=audit(1586198006.631:2673): proctitle=7375646F007375002D type=PATH msg=audit(1586198006.631:2673): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=5605 dev=103:05 mode=0100755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1586198006.631:2673):
 item=0 name="/usr/bin/sudo" inode=12800710 dev=103:05 mode=0104111 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1586198006.631:2673):  cwd="/home/ec2-user"
type=EXECVE msg=audit(1586198006.631:2673): argc=3 a0="sudo" a1="su" a2="-"
type=SYSCALL msg=audit(1586198006.631:2673): arch=c000003e syscall=59 success=yes exit=0 a0=e8cce0 a1=e8c7b0 a2=e61720 a3=7ffde58ec0a0 items=2 ppid=2658 pid=3726 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000
tty=pts0 ses=4 comm="sudo" exe="/usr/bin/sudo" key="script"

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?