SELinux와 AppArmor
- 모두 리눅스 시스템에서 액세스 제어를 강화하는 데 사용되는 보안 모듈
- SELinux를 기본적으로 사용 - Fedora, CentOS, RHEL 등
- AppArmor를 기본적으로 사용 - Ubuntu, openSUSE 등

SELinux(Security-Enhanced Linux)
- NSA(미국 국가안보국)에서 개발한 매우 강력한 보안 시스템
- Mandatory Access Control(MAC)을 구현하여, 프로세스가 특정 파일이나 네트워크 포트에 액세스하는 것을 허용하거나 차단
- MAC는 사용자나 프로세스가 시스템 리소스에 대한 접근 권한을 부여받았더라도, 그들의 행동을 시스템 정책에 따라 추가적으로 제한하는 보안 방식
- SELinux는 '보안 정책'을 통해 이 MAC을 구현
- 보안 정책은 시스템의 모든 프로세스와 파일에 대해 '보안 컨텍스트'를 지정하며, 이 보안 컨텍스트는 프로세스가 어떤 행동을 할 수 있는지, 파일에 어떤 프로세스가 접근할 수 있는지 등을 결정
- SELinux는 이 보안 정책을 통해 프로세스가 시스템 내의 다른 프로세스나 파일에 무분별하게 접근하는 것을 방지
- 웹 서버 프로세스는 웹 서버와 관련된 파일에만 접근할 수 있도록 제한
- 웹 서버가 해킹당해도 시스템의 다른 부분에는 영향을 미치지 못하도록 함
- SELinux는 매우 세밀한 제어를 가능하게 하지만, 그만큼 설정이 복잡하고 관리가 어렵다는 단점이 있음
- 이로 인해 SELinux는 보안이 중요한 시스템에서 주로 사용
- SELinux의 보안 컨텍스트
- 보안 정책에 의해 파일, 디렉토리, 프로세스 등에 지정
- 보안 컨텍스트를 통해 시스템의 모든 파일과 프로세스에 대한 접근을 제어
- 이는 프로세스가 시스템의 다른 부분에 무분별하게 접근하는 것을 막아, 보안을 강화하는 데 도움이 됨
- 보안 컨텍스트는 보통 사용자, 역할, 유형, 보안 레벨의 네 가지 부분으로 구성되며, 이들 각각은 보안 정책에 의해 지정
- 사용자(User)
- SELinux에서의 사용자는 리눅스 시스템의 일반 사용자와는 다름
- SELinux 사용자는 보안 정책에서 정의되며, 일반 사용자에게 여러 역할을 할당하는 역할
- 역할(Role)
- 역할은 SELinux 사용자와 유형 사이의 중간 계층
- 사용자는 할당된 역할을 통해 특정 유형의 파일이나 프로세스에 접근 가능
- 유형(Type) 또는 도메인(Domain)
- 유형은 파일이나 프로세스의 보안 속성을 결정
- 프로세스의 유형은 도메인이라고도 부르며, 이는 프로세스가 어떤 파일에 접근하고, 어떤 행동을 할 수 있는지를 결정
- 보안 레벨(Security Level)
- 이는 선택적으로 사용되며, 더 세밀한 접근 제어를 위해 사용
- 보안 레벨은 민감도와 카테고리 두 가지 부분으로 구성
- 이를 통해 파일이나 프로세스에 대한 접근을 더욱 세밀하게 제어 가능

AppArmor(Application Armor)
- AppArmor는 SELinux보다 사용하기 쉽고 관리하기 간편한 대안으로 개발
- 특정 프로그램이나 프로세스의 시스템 리소스에 대한 접근을 제어하는 역할
- 기본적으로 '허용 정책'을 기반으로 작동
- 프로파일을 통해 프로그램의 행동을 제어
- 프로파일
- Pathname-based Access Control을 실제로 구현하는 수단
- 프로파일에 정의된 규칙에 따라, 시스템은 프로그램이 특정 경로에 대해 어떤 액션(읽기, 쓰기, 실행 등)을 수행할 수 있는지를 결정
- 프로그램별로 세밀하게 접근 권한을 지정할 수 있어, 시스템의 보안을 강화하는 데 도움
- 프로파일은 '강제(enforce)' 모드와 '학습(complain)' 모드를 가짐
- 강제 모드
- 프로파일에 명시되지 않은 모든 행동이 차단
- 학습 모드
- 행동이 기록되고 허용
- 이를 통해 시스템 관리자는 프로그램의 동작을 관찰하고 적절한 프로파일을 만들 수 있음
- 각 프로파일은 특정 프로그램이 접근할 수 있는 파일 시스템 경로, 네트워크 접근, 실행 권한 등을 정의
- 각 프로그램에 대해 허용된 동작들을 명시적으로 정의하고, 그 외의 모든 동작은 기본적으로 제한
- 프로그램이 예상치 못한 행동을 하는 것을 막아 시스템의 보안을 강화
- Pathname-based Access Control 방식을 사용
- 파일 시스템 경로를 기반으로 애플리케이션의 액세스를 제어
- 프로그램이 접근할 수 있는 파일이나 디렉토리, 그리고 그에 대한 권한(읽기, 쓰기, 실행 등)을 명시적으로 지정
- 이러한 정보들은 AppArmor의 프로파일에 정의되며, 시스템은 이 프로파일에 따라 프로그램의 동작을 제어
- 설정은 비교적 간단하지만, SELinux만큼 세밀한 제어는 불가능
- AppArmor는 보안 강화에 필요한 도구를 제공하면서도 사용성을 유지하려 노력
- 예를 들어, 프로파일은 사용자 친화적인 파일 경로를 사용하여 작성할 수 있으며, 프로파일 변경 시 재부팅 없이 적용
'42 > Born2BeRoot' 카테고리의 다른 글
SUDO [Born2BeRoot] (0) | 2023.12.12 |
---|---|
SSH [Born2BeRoot] (0) | 2023.12.11 |
UFW [Born2BeRoot] (2) | 2023.12.11 |
aptitude, apt [Born2BeRoot] (0) | 2023.12.11 |
VM [ Born2BeRoot ] (0) | 2023.12.09 |