SELinux(Security-Enhanced Linux)는 미국 국가안보국(NSA)이 개발한 리눅스 커널 보안 모듈로, 강력한 접근 제어 정책을 통해 시스템 보안을 강화한다.
SELinux는 강제 접근 제어(MAC, Mandatory Access Control)를 기반으로 하며, 시스템의 모든 프로세스와 객체에 보안 컨텍스트를 부여하여 세밀한 권한 관리를 가능하게 한다.
AppArmor(Application Armor)는 Novell(SUSE)이 개발한 리눅스 보안 프레임워크로, 응용 프로그램별로 프로파일을 작성하여 해당 프로그램이 접근할 수 있는 리소스를 제한한다.
AppArmor 역시 강제 접근 제어(MAC)를 구현하지만, 파일 경로 기반의 접근 제어를 사용하여 설정과 관리가 비교적 간단하다.
사용자는 텍스트 형식의 프로파일을 통해 쉽게 보안 정책을 적용할 수 있다.
| 특성 | SELinux | AppArmor |
|---|---|---|
| 작동 원리 | 보안 컨텍스트 기반(라벨링)로 리소스에 대한 접근을 결정 | 경로 기반으로 파일 시스템 경로를 기준으로 접근 제어 |
| 설정 및 관리 | 초기 설정 및 정책 관리가 복잡 (정책 작성 필요) | 상대적으로 설정이 간단하며 템플릿 기반 관리 가능 |
| 정책 표현력 | 매우 세부적인 제어 가능, 고도로 구성 가능한 보안 정책 | 특정 애플리케이션에 대해 쉽게 구성 가능 |
| 지원 환경 | 기본적으로 Red Hat 계열 (CentOS, Rocky 등)에서 최적화 | 기본적으로 Debian 및 Ubuntu 계열에서 최적화 |
| 유연성 | 강력하지만 사용자에게 더 많은 학습 곡선 요구 | 간단하지만 특정한 경우에는 제한적일 수 있음 |
| 성능 | 고급 정책 처리로 인해 약간의 성능 저하 가능 | 경로 기반으로 성능 영향이 적음 |
| 디버깅 및 로깅 | 자세하고 정교한 디버깅 및 로깅 도구 제공 | 설정이 더 간단한 만큼 디버깅 및 로깅은 단순한 경향 |
Debian은 AppArmor를 기본적으로 지원하고 있으며, 초기 설정과 정책 구성이 간단하다.
Debian을 사용하고 VM을 처음 사용 하는 사용자는 AppArmor를 사용하는게 유리하다.
sudo apt install apparmor apparmor-utilssudo systemctl enable apparmor.servicesudo systemctl start apparmor.servicesudo aa-statussudo aa-status 명령어로 활성화 확인 했을 때 나오는 메시지 확인 방법이다.
apparmor module is loaded. 메시지를 확인해야 한다.X profiles are loaded.X profiles are in enforce mode.enforce mode가 실제 적용되는 프로파일 수(X)을 나타낸다.enforce mode는 보안 위협이 되는 부분을 차단한다.X profiles are in complain mode.complain mode가 실제 적용되는 프로파일 수을 나타낸다.complain mode는 로그만 기록하고 실제로 제한을 가하지 않는다.