SELinux 대 AppArmor: 차이점과 어떤 것을 사용해야 할까요?

Selinux Vs Apparmor

SELinux(보안 강화 리눅스의 약자)는 파일 및 프로세스에 대한 접근을 강화하여 리눅스 배포판의 보안을 향상시키기 위해 사용되는 리눅스 커널 보안 모듈입니다. 이러한 목적을 위해 사용되는 또 다른 유사한 리눅스 커널 보안 모듈은 AppArmor입니다. 이 두 모듈의 리눅스 운영 체제에 대한 접근 제어에서의 역할이 겹치기 때문에 많은 관심을 받고 있습니다. 이 기사에서는 SELinux와 AppArmor의 차이점을 다루어 사용자가 기능과 사용 용이성을 비교를 통해 필요에 맞는 모듈을 결정할 수 있도록 합니다.

목차

  • SELinux란 무엇인가?
  • SELinux 작업 및 명령
  • AppArmor란 무엇인가?
  • SELinux와 AppArmor의 사용 용이성
  • 자주 묻는 질문

또한 읽어보기: 더 나은 보안을 위한 5 가지 최고의 Linux-Libre 배포판

SELinux란 무엇인가?

SELinux로 서버를 보호하면 실제 시스템 사용자 및 역할을 기반으로 한 DAC 스타일 접근 방식에 대한 의존성이 제거됩니다. 대신, 각 프로세스나 시스템 사용자에 대해 세 개의 문자열 컨텍스트 시스템을 도입합니다. 사용자 이름, 역할, 도메인의 세 문자열은 시스템 접근에 대한 더 많은 유연성과 제어를 가능하게 합니다.

프로세스는 SELinux의 정책 구성을 통해 특정 도메인에서만 허용될 수 있습니다. 유일한 예외는 runcon 명령어를 통해 명시적으로 정의된 컨텍스트로 프로세스가 시작될 때입니다. 그러나 이미 구성된 그러한 프로세스에 대해 상충되는 정책이 존재하면 SELinux는 다른 컨텍스트로의 전환을 거부할 수 있습니다. 이는 SELinux가 기본적으로 거부하는 원칙에 따라 작동함을 보장합니다. 모든 프로세스나 사용자는 파일이나 시스템 리소스에 접근하기 전에 명시적인 접근 구성이어야 합니다.

SELinux 작업 및 명령

터미널의 일반 유틸리티 명령의 확장으로서, SELinux는 파일 및 프로세스의 보안 컨텍스트를 표시할 수 있는 -Z 스위치를 제공합니다. psls와 같은 명령은 이 스위치를 통해 빠르게 구성 오류를 디버깅하거나 식별할 수 있습니다. 아래에는 ls 명령의 스크린샷이 표시됩니다.

ls-Z

Selinux Vs Apparmor 1 1

각 출력 라인의 첫 번째 부분은 도메인이며, 두 번째는 객체의 유형, 세 번째는 SELinux 구성에서 사용자 이름입니다. 이 방법으로 SELinux는 각 파일 및 프로세스에 대한 접근을 완전히 제어할 수 있습니다. 다음 명령은 파일 및 디렉토리의 컨텍스트를 조작하는 데 사용됩니다.

명령사용 방법
chcon -t대상 파일의 컨텍스트 변경
chcon -R대상 디렉토리의 컨텍스트 변경(이 변경은 재귀적입니다)
restorecon -v파일의 컨텍스트를 기본값으로 복원
restorecon -v -R디렉토리의 컨텍스트를 기본값으로 복원(이 변경은 재귀적입니다)
semanage fcontext -a -t디렉토리의 기본 컨텍스트를 REGEX가 평가하는 값으로 설정

예를 들어, “/srv/web” 디렉토리의 모든 파일의 컨텍스트를 “httpd_sys_content_t”로 변경할 필요가 있을 경우, 다음 명령을 사용할 수 있습니다.

sudo semanage fcontext -a -t httpd_sys_content_t “/srv/web(/.*)”

Selinux Vs Apparmor 2 1

스크린샷에서 확인할 수 있는 이 컨텍스트는 “/srv/web” 디렉토리에 대해 이미 재귀적으로 정의되어 있으므로, SELinux는 사용자에게 알리는 메시지를 표시합니다. 정의되지 않은 경우, 성공적인 semanage 작업은 출력이 나타나지 않습니다.

시스템 관리자와 사용자는 setenforce 명령을 사용하여 SELinux를 활성화, 비활성화 또는 허용 가능하게 할 수 있습니다. 마찬가지로 현재 적용 상태를 확인하려면 사용자는 아래 스크린샷에 표시된 getenforce 명령을 사용할 수 있습니다.

Selinux Vs Apparmor 3

또한 읽어보기: SCP를 사용하여 리눅스에서 파일을 안전하게 전송하는 방법

AppArmor란 무엇인가?

AppArmor는 리눅스 배포판인 Ubuntu를 개발하는 모회사 Canonical에 의해 지원됩니다. AppArmor는 SELinux보다 간단하고 사용하기 쉽도록 설계되었으며 프로파일은 “/etc/apparmor.d/” 디렉토리에 생성됩니다. 아래 스크린샷에 “/usr/bin/man” 프로세스의 AppArmor 프로파일이 표시됩니다.

Selinux Vs Apparmor 4

AppArmor 작업 및 명령

AppArmor의 상태를 확인하기 위해서 aa-status 명령을 사용합니다. 아래에는 명령의 샘플 출력이 표시됩니다.

Selinux Vs Apparmor 5

AppArmor 프로파일은 “/etc/apparmor.d/”의 디렉토리 내용을 통해 나열될 수 있으며, 아래와 같이 표시됩니다.

Selinux Vs Apparmor 6

위 프로파일 목록에서 사용자가 usr.bin.man 프로파일을 비활성화하고자 할 경우, 다음 명령을 사용할 수 있습니다.

sudo aa-complain /usr/bin/man

비활성화된 프로파일은 메인 AppArmor 프로파일 디렉토리의 비활성화 하위 디렉토리에 위치합니다. 비활성화된 프로파일을 다시 활성화하려면 다음 명령을 사용합니다.

sudo aa-enforce /usr/bin/man

SELinux와 AppArmor의 사용 용이성

AppArmor는 SELinux가 각 파일에 대해 문자열로 작업하는 대신 파일 시스템의 파일 경로로 작업합니다. AppArmor의 장점 중 하나는 읽기, 쓰기, 잠금 및 기타 파일 작업이 SELinux보다 설정하기가 더 용이하다는 것입니다. 반면에 SELinux는 파일 접근 제어를 위한 더 많은 기능을 제공하지만, 이러한 기능은 시스템의 훨씬 낮은 수준에서 구현됩니다.

따라서 사용자는 SELinux 작업을 위해 mknod, 네트워크 소켓 및 기타 시스템 작업을 사용하는 방법을 배워야 합니다. 시스템 관리자가 아닌 모든 사람에게 AppArmor를 사용하는 방법을 배우는 것이 훨씬 쉽습니다.

AppArmor는 접근 제어 위반을 기록하는 데 사용되는 학습 모드도 제공합니다. 이 모드는 위반 시 접근을 제한하거나 방지하지 않고, 시간이 지남에 따라 데이터를 수집하여 기록된 각 접근 위반에 따라 프로그램의 행동을 기반으로 별도의 AppArmor 프로파일을 생성할 수 있게 합니다. SELinux에는 유사한 모드가 없습니다.

또한 읽어보기: 리눅스 홈 서버를 안전하게 보호하는 방법

자주 묻는 질문

SELinux와 AppArmor가 사전 설치된 리눅스 배포판은 무엇인가요?

RedHat 그룹의 모든 리눅스 배포판은 RHEL, CentOS 및 Fedora를 포함하여 SELinux가 사전 설치되거나 설치할 수 있습니다. AppArmor는 Debian, Ubuntu 및 그 파생 배포판, SUSE Enterprise Server와 OpenSUSE 배포판에 사전 설치되어 있습니다.

새로운 리눅스 사용자에게 가장 좋은 보안 모듈은 무엇인가요?

대부분의 주요 리눅스 배포판은 기본적으로 보안 모듈 중 하나가 설치되어 있습니다. 따라서 새로운 리눅스 사용자가 기본적으로 보안 모듈 없이 시작할 가능성은 낮습니다. SELinux와 AppArmor의 기능 및 사용 용이성을 비교해 보면 시스템 관리자나 더 세밀한 제어를 원하는 사용자에게는 SELinux가 최선이지만, 모든 다른 사용자에게는 AppArmor가 더 나은 선택입니다.

SELinux와 AppArmor는 방화벽, 안티바이러스 및 기타 사용자 또는 데이터 안전 소프트웨어의 대안인가요?

SELinux와 AppArmor는 시스템 보안 및 데이터 무결성을 위해 안티바이러스나 잘 구성된 방화벽의 대안이 아닙니다. 따라서 데이터 보호를 위한 더 나은 방어를 위해 시스템에 안티바이러스 프로그램을 추가하는 것이 좋습니다.

이미지 제공: AppArmor 위키 페이지 및 SELinux 위키 페이지. 모든 스크린샷은 Zeeman Memon입니다.