목차
- SELinux(Security-Enhanced Linux)
- 기본 SELinux 개념
- 최소 권한 원칙
- 최소 권한 원칙을 구현함으로써 SELinux의 목표
- SELinux 최소 권한 원칙 구현 방법
- SELinux에는 세 가지 기본 구성 요소
- SELinux에는 작동 모드
- SELinux에는 두 가지 주요 정책 유형
SELinux(Security-Enhanced Linux)
SELinux(Security-Enhanced Linux)는 필수 액세스 제어(MAC)를 포함하여 액세스 제어 보안 정책을 지원하는 메커니즘을 제공하는 Linux 커널용 보안 모듈이다. 파일, 포트 및 기타 리소스에 대한 액세스가 매우 세밀한 수준으로 제어된다.
SELinux는 Linux 기반 시스템의 보안을 강화하기 위해 오픈 소스 커뮤니티와 협력하여 미국 NSA(National Security Agency)에서 개발했다.
SELinux는 "최소 권한" 원칙에 따라 작동한다. 즉, 프로세스와 사용자는 작업을 수행하는 데 필요한 최소한의 권한을 가져야 한다. 이렇게 하면 악의적인 사용자나 소프트웨어가 악용할 수 있는 무단 액세스, 보안 위반 및 취약성으로부터 시스템을 보호할 수 있다.
프로세스는 해당 SELinux 정책 또는 SELinux 부울 설정에서 지 정하는 리소스에만 액세스할 수 있다. 파일 권한은 특정 사용자 또는 그룹의 파일 액세스 권한을 제어한다. 그러나 파일 권한은 파일 액세스 권한 이 있는 승인된 사용자가 파일을 의도하지 않은 용도로 사용하는 것을 방지하지 못한다.
예를 들어 파일에 대한 쓰기 권한이 있는 경우, 다른 편집기나 프로그램에서 특정 프로그램만 작성할 수 있도록 설계된 구조화된 데이터 파일을 여전히 열고 수정할 수 있으며, 이로 인해 손상 또는 데이터 보안 문제가 발 생할 수 있다. 파일 권한은 파일 사용 방법은 제어하지 않고 파일을 읽거나 쓰거나 실행할 수 있는 사람만 제어하므로 이처럼 원하지 않는 액세스를 차단하지 않는다.
SELinux는 애플리케이션 개발자가 애플리케이션에서 사용하는 각 바이너리 실행 파일, 구성 파일, 데이터 파 일에 대해 허용되는 조치와 액세스 권한을 정확히 선언하기 위해 정의한 애플리케이션별 정책으로 구성됩니 다. 하나의 정책이 애플리케이션 하나의 활동을 정의하기 때문에 이 정책을 타겟 정책이라고 한다. 정책은 개별 프로그램, 파일, 네트워크 포트에 구성된 사전 정의 레이블을 선언한다.
기본 SELinux 개념
SELinux의 기본 목적은 손상된 애플리케이션 또는 시스템 서비스로 인한 부적절한 사용으로부터 사용 자 데이터를 보호하는 것이다. 대부분의 Linux 관리자는 필요에 따라 파일 권한을 설정하기 때문에 DAC(Discretionary Access Control)라는 표준 사용자, 그룹, 월드 파일 권한 보안 모델에 익숙하다. SELinux는 MAC(Mandatory Access Control)이라는 세분화된 규칙에 정의된 오브젝트 기반 보안 기능을 추 가로 제공한다.
MAC 정책은 모든 사용자에게 적용되므로 임의 구성 설정을 통해 특정 사용자에게 적용되 지 않게 할 수 없다. 예를 들어 웹 서버의 개방형 방화벽 포트는 웹 클라이언트에 대한 원격 익명 액세스를 허용한다. 그러나 해 당 포트에 액세스하는 악의적인 사용자가 기존 취약점을 이용해 시스템을 손상시킬 수도 있다.
예를 들 어 취약점이 apache 사용자 및 그룹의 권한을 손상시키는 경우, 악의적인 사용자가 /var/www/html 문 서 루트 콘텐츠 또는 시스템의 /tmp 및 /var/tmp 디렉터리 또는 기타 액세스 가능한 파일 및 디렉터리에 직접 액세스할 수 있다.
SELinux 정책은 특정 프로세스가 관련 파일, 디렉터리, 포트에 액세스하는 방법을 정의하는 보안 규칙이다. 파일, 프로세스, 디렉터리 또는 포트와 같은 모든 리소스 엔터티에는 SELinux 컨텍스트라는 레이블이 있다.
컨텍스트 레이블은 프로세스에서 레이블이 지정된 리소스에 액세스할 수 있도록 정의된 SELinux 정 책 규칙을 찾는다. 기본적으로 SELinux 정책은 명시적 규칙에서 액세스 권한을 부여하지 않는 한 어떠한 액세스도 허용하지 않는다. 허용 규칙이 정의되지 않은 경우 모든 액세스가 허용되지 않는다.
SELinux 레이블에는 user, role, type, security level 필드가 있다. 타겟 정책은 RHEL에서 기 본적으로 활성화되어 있으며, type 컨텍스트를 사용하여 규칙을 정의한다. 유형 컨텍스트 이름은 대개 _t로 끝난다.
최소 권한 원칙
최소 권한 원칙(The principle of least privilege, POLP)은 사용자와 프로세스가 의도한 작업을 수행하는 데 필요한 최소한의 권한 또는 액세스 권한을 제공하도록 권장하는 컴퓨터 보안 개념이다. 이 원칙은 SELinux(Security-Enhanced Linux)의 근본적인 측면이며 Linux 기반 시스템의 보안을 강화하는 데 도움이 된다.
최소 권한 원칙을 구현함으로써 SELinux의 목표
- 보안 위반으로 인한 잠재적 피해 제한
사용자 또는 프로세스에 필요한 최소한의 권한만 있는 경우 취약성을 악용하는 공격자는 액세스 및 기능이 제한된다. 이렇게 하면 무단 액세스, 데이터 유출 및 시스템 취약성의 추가 악용 위험이 줄어든다. - 공격 표면 감소
상승된 권한으로 실행되는 프로세스 수를 최소화하면 공격자의 잠재적인 대상이 줄어든다. 이로 인해 공격자가 취약점을 찾기가 더 어려워지고 성공적인 악용 가능성이 줄어든다. - 보안 감사 및 모니터링 간소화
사용자와 프로세스에 필요한 최소한의 권한이 있으면 의심스러운 활동을 보다 쉽게 식별하고 모니터링할 수 있다. 비정상적인 동작 또는 액세스 요청을 보다 신속하게 감지하여 관리자가 조치를 취하고 위협을 완화할 수 있다.
SELinux 최소 권한 원칙 구현 방법
- 필수 액세스 제어(MAC)
SELinux는 보안 컨텍스트를 기반으로 주체(사용자 및 프로세스)와 개체(파일, 디렉터리, 소켓 등) 간에 허용되는 상호 작용을 정의하는 정책을 적용한다. 프로세스를 필요한 최소 권한으로 제한함으로써 SELinux는 수행할 수 있는 작업을 효과적으로 제한한다. - 보안 컨텍스트
SELinux는 사용자, 역할 및 도메인(또는 유형)에 대한 정보를 포함하여 사용자, 프로세스 및 개체에 보안 컨텍스트(레이블)를 할당한다. SELinux는 보안 컨텍스트를 사용하여 세분화된 액세스 제어 결정을 내리고 최소 권한 원칙을 적용할 수 있다. - 제한 및 비제한 도메인
SELinux 정책은 프로세스가 제한된 액세스 및 권한을 갖는 제한된 도메인 또는 프로세스가 보다 광범위한 액세스를 갖는 제한되지 않은 도메인을 정의할 수 있다. 대부분의 Linux 배포판에 대한 기본 정책인 대상 정책은 특정 프로세스만 제한하는 반면 엄격한 정책은 시스템의 모든 프로세스를 제한한다.
SELinux는 최소 권한 원칙을 적용하여 보안 위반, 무단 액세스 및 취약성으로부터 Linux 시스템을 보호한다. 사용자 및 프로세스에 필요한 최소 권한을 적용하여 보안 사고로 인한 잠재적 피해를 제한하면서 작업을 수행하는 데 필요한 액세스 권한만 갖도록 한다.
SELinux에는 세 가지 기본 구성 요소
- 정책
정책은 시스템의 프로세스, 파일 및 기타 개체에 대한 보안 컨텍스트를 정의하는 일련의 규칙이다. 주체(사용자 및 프로세스) 및 개체(파일, 디렉터리, 소켓 등)의 보안 컨텍스트를 기반으로 허용 또는 거부되는 작업을 결정한다. - 보안 컨텍스트
보안 컨텍스트는 프로세스 또는 개체와 관련된 사용자, 역할 및 도메인(또는 유형)에 대한 정보를 포함하는 레이블이다. SELinux는 이러한 레이블을 사용하여 정책에 따라 액세스 제어 결정을 내린다. - 시행
SELinux는 프로세스에서 생성된 시스템 호출을 가로채고 주체와 객체 모두의 보안 컨텍스트를 확인하여 작업을 허용할지 또는 거부할지 결정함으로써 정책을 시행한다.
SELinux에는 작동 모드
- Enforcing
이 모드에서 SELinux는 정책 규칙을 시행하고 정책에 따라 액세스를 거부한다. 정책을 위반하는 모든 작업을 기록하므로 관리자가 잠재적인 보안 문제를 모니터링하고 식별할 수 있다. - Permissive
이 모드에서 SELinux는 정책 규칙을 시행하지 않지만 시스템이 시행 모드에 있었다면 거부되었을 모든 작업을 기록한다. 이는 시스템 기능에 영향을 주지 않고 정책을 테스트하고 문제를 해결하는 데 유용한다. - Disabled
이 모드에서는 SELinux가 완전히 비활성화되고 시스템이 MAC 없이 작동한다.
SELinux에는 두 가지 주요 정책 유형
- Targeted
대상 정책은 특정 서비스 및 시스템 리소스 보호에 중점을 둔 대부분의 배포판에서 기본 정책이다. 이 정책에서는 선택한 프로세스만 제한되고 나머지 시스템은 제한되지 않고 실행된다. - Strict
엄격한 정책은 보다 포괄적이며 시스템의 모든 프로세스를 제한한다. 이 정책은 더 높은 수준의 보안을 제공하지만 구성 및 유지 관리가 더 어려울 수 있다.
SELinux는 sestatus, getenforce, setenforce, semanage, chcon 및 restorecon과 같은 명령줄 도구를 사용하여 관리할 수 있다. 또한 'system-config-selinux'와 같은 그래픽 도구를 사용하여 일부 배포판에서 SELinux를 관리할 수 있다.
'Linux > Linux 이론' 카테고리의 다른 글
[Linux 이론] 리눅스 기본 용어 정리 및 개발자와 엔지니어 차이점 (0) | 2023.04.01 |
---|---|
[Linux 이론] SELinux 파일 컨텍스트 제어 (fcontext) (0) | 2023.03.24 |
[Linux 이론] 리다이렉션 기호(>, >>) 활용 (0) | 2023.03.21 |
[Linux 이론] 정규 표현식(Regular Expression) (0) | 2023.03.21 |
[Linux 이론] 특정 특수문자의 역할 (0) | 2023.03.20 |