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

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

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

목차
  1. AppArmor란?
  2. 설치 및 상태 확인
  3. 3가지 모드
  4. 기존 프로파일 관리
  5. 새 프로파일 생성 (aa-genprof)
  6. 프로파일 수동 작성 예시
  7. 로그 분석

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 도구가 초안 작성에 사용될 수 있습니다. 명령어의 실행 여부와 검증 환경은 각 가이드에 기재된 근거를 확인하세요. 적용 전 사용 중인 버전의 공식 문서를 확인하고, 오류는 이메일로 알려주세요. 이메일로 제보

주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)Docker 공식 문서 ↗MySQL 공식 매뉴얼 ↗NGINX 공식 문서 ↗GNU/Linux man 페이지 ↗

질문 & 답변 (Q&A)

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