/엔지니어/보안 설정/AppArmor 기초 — 프로세스 권한 제한 실전
보안 설정중급UbuntuDebianapparmor보안mac

AppArmor 기초 — 프로세스 권한 제한 실전 가이드

AppArmor 모드 이해, 기존 프로파일 적용·비활성화, 새 프로파일 생성(aa-genprof), 로그 분석, Nginx·MySQL 프로파일 예시를 설명합니다.

AppArmor란?

Linux의 MAC(Mandatory Access Control) 보안 모듈로, 프로세스가 접근할 수 있는 파일·네트워크·기능을 프로파일로 제한합니다. Ubuntu의 기본 보안 모듈입니다.


설치 및 상태 확인

Bash
# 대부분의 Ubuntu에는 기본 설치됨
sudo apt install -y apparmor apparmor-utils

# 상태 확인
sudo aa-status
sudo apparmor_status

# 로드된 프로파일 목록
sudo aa-status | grep -A100 "profiles are loaded"

3가지 모드

모드설명
enforce정책 위반 시 차단 + 로그
complain차단하지 않고 로그만 기록 (개발·테스트용)
disabledAppArmor 비활성화
Bash
# 특정 프로파일을 complain 모드로
sudo aa-complain /usr/sbin/nginx

# enforce 모드로 전환
sudo aa-enforce /usr/sbin/nginx

# 특정 프로파일 비활성화
sudo aa-disable /usr/sbin/nginx

# 모든 프로파일 확인
sudo aa-status --verbose

기존 프로파일 관리

Bash
# 프로파일 위치
ls /etc/apparmor.d/

# 프로파일 로드 (파일 수정 후)
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

# 전체 프로파일 재로드
sudo systemctl reload apparmor

# 특정 프로파일 언로드
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.nginx

새 프로파일 생성 (aa-genprof)

Bash
# 프로파일 자동 생성 (프로그램 실행하며 학습)
sudo aa-genprof /usr/local/bin/myapp

# 1. 다른 터미널에서 myapp 실행 및 테스트
# 2. aa-genprof 프롬프트에서 S(scan) 입력
# 3. 각 접근에 대해 Allow/Deny 선택
# 4. F(finish)로 완료

프로파일 수동 작성 예시

CODE
# /etc/apparmor.d/usr.sbin.nginx
#include <tunables/global>

/usr/sbin/nginx {
  #include <abstractions/base>
  #include <abstractions/nameservice>

  capability net_bind_service,
  capability setuid,
  capability setgid,

  # 실행 파일
  /usr/sbin/nginx mr,

  # 설정 파일 읽기
  /etc/nginx/** r,

  # 로그 쓰기
  /var/log/nginx/ rw,
  /var/log/nginx/** rw,

  # 웹 루트 읽기
  /var/www/html/** r,

  # PID 파일
  /run/nginx.pid rw,

  # 소켓
  network inet stream,
  network inet6 stream,

  # 차단: 다른 모든 접근
}
Bash
# 프로파일 적용
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx
sudo aa-enforce /usr/sbin/nginx

로그 분석

Bash
# AppArmor 거부 로그
sudo dmesg | grep -i apparmor
sudo journalctl -k | grep "apparmor.*DENIED"

# audit 로그
sudo grep "apparmor" /var/log/syslog | tail -30
sudo grep "apparmor" /var/log/kern.log | tail -30

# complain 모드로 배운 내용을 프로파일에 추가
sudo aa-logprof   # 로그를 분석해 자동으로 규칙 제안
#apparmor#보안#mac#프로파일#linux#컨테이너
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.