[System Hardening] AppArmor 프로필 생성: 사용자 정의 bash 스크립트 예제

IMKUNYOUNG·2024년 6월 20일
0

CKS

목록 보기
41/70

이번 글에서는 AppArmor 프로필을 생성하는 방법을 알아보겠습니다. 이전 글에서 몇 가지 AppArmor 프로필 예제를 보았지만, 이번에는 특정 애플리케이션에 맞춘 사용자 정의 프로필을 처음부터 만드는 과정을 살펴보겠습니다.

목표

간단한 bash 스크립트를 사용하여 /opt파일 시스템 아래에 디렉터리를 생성하고, 이 디렉터리 내에 파일을 작성하는 스크립트를 만들겠습니다. 이 특정 스크립트에 대한 AppArmor 프로필을 생성해보겠습니다.

사전 준비

AppArmor 유틸리티 설치

먼저 AppArmor 유틸리티를 설치해야 합니다. Ubuntu에서는 다음 명령어를 실행하여 apparmor-utils 패키지를 설치할 수 있습니다:

sudo apt-get install apparmor-utils

프로필 생성

aa-genprof 도구 사용

aa-genprof 명령어를 사용하여 bash 스크립트에 대한 프로필을 생성할 수 있습니다. 다음 단계에 따라 진행합니다.

  1. aa-genprof 실행: 절대 경로를 사용하여 aa-genprof 명령어를 실행합니다.
# add_data.sh
#!/bin/bash
data_directory=/opt/app/data
mkdir -p ${data_directory}
echo "=> File created at `date`" | tee ${data_directory}/create.log
sudo aa-genprof /root/add_data.sh
  1. 스크립트 실행: 다른 터미널 창에서 스크립트를 실행합니다.
$ ./add_data.sh
File created at Mon Mar 12 03:29:22 UTC 2021
  1. 이벤트 스캔: aa-genprof 창으로 돌아와서 s를 입력하여 스크립트를 실행할 때 생성된 AppArmor 이벤트에 대한 시스템 로그를 스캔합니다.
s
  1. 질문에 답변: aa-genprof 명령어가 보안 프로필을 생성할 때 참고할 수 있는 일련의 질문들을 생성합니다. 예를 들어, 첫 번째 이벤트는 스크립트가 mkdir 명령을 실행할 수 있도록 권한을 부여할지 묻습니다.
  • Inherit, Child, Named, IX, Deny, Abort, Finish 등의 옵션 중 하나를 선택할 수 있습니다.
  • mkdir를 실행할 수 있는 권한을 부여하기 위해 Inherit 옵션을 선택합니다.
I
  1. 다음 이벤트 처리: 다음 이벤트에서도 유사한 프롬프트가 나타납니다. 필요에 따라 권한을 부여하거나 거부합니다.
A  # 예: tty 인터페이스 접근 허용
D  # 예: /proc 파일 시스템 접근 거부
  1. 프로필 저장 및 완료: 모든 질문에 대해 필요한 권한을 설정한 후, S를 사용하여 프로필을 저장하고 F를 눌러 완료합니다.
S  # 프로필 저장
F  # 완료

프로필 확인 및 테스트

프로필 위치 확인

새로 생성된 프로필은 /etc/apparmor.d 디렉터리에 저장됩니다. 예를 들어. add_data.sh라는 쉘스크립트에 대한 프로필은 /root에 위치하며, 선언한 모든 규칙이 중괄호 안에 들어있습니다.

스크립트 테스트

프로필이 강제 모드로 설정되어 있는 동안, 스크립트를 다시 실행하여 정상 작동하는지 확인합니다. 로그 파일이 작성되는 경로를 /opt 대신 /opt/app/data로 변경하여 테스트해 봅니다.

/opt/app/data

이제 스크립트를 실행하면 실패할 것입니다. 메시지는 여전히 터미널에 출력되지만, AppArmor는 /opt/app/opt/app/data 디렉터리에 대한 쓰기만 허용하고 /opt에는 허용하지 않기 때문입니다.

프로필 로드 및 비활성화

기존 AppArmor 프로필을 사용하는 방법도 알아보겠습니다. 프로필을 로드하려면 다음 명령어를 실행합니다:

sudo apparmor_parser -r /etc/apparmor.d/your_profile

아무 것도 출력되지 않으면 프로필이 성공적으로 로드된 것입니다. 프로필을 비활성화하려면 같은 명령어를 실행하되 -r 플래그를 사용하고 /etc/apparmor.d/disabled 디렉터리에 프로필을 생성합니다.

sudo apparmor_parser -r /etc/apparmor.d/disabled/your_profile

마무리

AppArmor 프로필을 생성하고, 이를 통해 특정 bash 스크립트를 보호하는 방법을 알아보았습니다. 다음 글에서는 Kubernetes Pod 안에서 실행되는 애플리케이션을 보호하기 위해 AppArmor 프로필을 사용하는 방법을 알아보겠습니다.

0개의 댓글