[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개의 댓글

관련 채용 정보