바로 가기

SELinux란?

URL 복사

CentOS Linux에서 클라우드 준비 운영체제로 전환 방법

센토스 리눅스에서 클라우드 준비 운영 체제로 전환할 때, 클라우드 목표에 부합하고 표준화할 수 있는  프로덕션 등급의 클라우드 준비 운영 체제를 채택하는 것이 중요합니다.

SELinux(Security-Enhanced Linux)는 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 Linux® 시스템보안 아키텍처입니다. 이는 원래 미국 국가안보국(NSA)이 LSM(Linux Security Module)을 사용하는 Linux 커널에 대한 일련의 패치로 개발한 것입니다.  

SELinux는 2000년에 오픈소스 커뮤니티에 릴리스되어 2003년에 업스트림 Linux 커널로 통합되었습니다.

SELinux는 시스템의 애플리케이션, 프로세스, 파일에 대한 액세스 제어를 정의합니다. 액세스할 수 있는 항목과 액세스할 수 없는 항목을 SELinux에 지정하는 룰 세트인 보안 정책을 사용하여 정책에서 허용되는 액세스를 적용합니다. 

주체로 알려진 애플리케이션이나 프로세스가 파일과 같은 객체에 대한 액세스를 요청하는 경우, SELinux는 주체와 객체에 대해 권한이 캐시되는 AVC(Access Vector Cashe)를 확인합니다.

SELinux가 캐시된 권한에 기반한 액세스에 대한 결정을 내릴 수 없는 경우 보안 서버에 요청을 전송합니다. 보안 서버는 애플리케이션이나 프로세스의 보안 컨텍스트와 파일을 확인합니다. 보안 컨텍스트는 SELinux 보안 정책 데이터베이스에서 적용됩니다. 그러면 권한이 허용되거나 거부됩니다. 

권한이 거부되면 "avc: denied"라는 메시지가 /var/log.messages에 나타납니다.

SELinux 구성 방법 

SELinux를 설정하여 시스템을 보호할 수 있는 몇 가지 방법이 있습니다. 가장 일반적인 방법은 타겟 정책 또는 다단계 보안(Multi-Level Security, MLS)입니다.

타겟 정책은 기본 옵션으로서 다양한 프로세스와 태스크 및 서비스를 처리합니다. MLS는 매우 복잡할 수 있으며, 일반적으로 정부 기관에서만 사용합니다. 

/etc/sysconfig/selinux 파일을 보면 시스템이 어떤 방법으로 실행되어야 하는지 알 수 있습니다. 파일에는 SELinux가 허용 모드인지 실행 모드인지 아니면 비활성화 모드인지와 어떤 정책을 로드해야 하는지를 보여주는 섹션이 있습니다.

SELinux 레이블 설정 및 유형 실행 

유형 실행 및 레이블 설정은 SELinux에서 가장 중요한 개념입니다.

SELinux는 레이블 시스템으로 작동되는데, 이는 시스템의 모든 파일, 프로세스 및 포트에 이와 연결된 SELinux 레이블이 있다는 의미입니다. 레이블은 구성 요소들을 논리적으로 그룹화하는 방식입니다. 커널은 부팅 중에 레이블을 관리합니다.

레이블은 user:role:type:level (레벨은 선택 사항임) 형식으로 되어 있습니다. 사용자, 롤, 레벨은 MLS의 경우와 같이 SELinux의 보다 고도화된 구현에 사용됩니다. 레이블 유형은 타겟 정책에서 가장 중요합니다. 

SELinux는 유형 실행을 사용하여 시스템에 정의된 정책을 실행합니다. 유형 실행은 특정 유형으로 실행되는 프로세스가 특정 유형으로 레이블된 파일에 액세스할 수 있는지 여부를 정의하는 SELinux 정책의 일부입니다.

SELinux 활성화

SELinux가 사용자 환경에서 비활성화된 경우 /etc/selinux/config를 편집하고 SELINUX=permissive를 설정하여 SELinux를 활성화할 수 있습니다. SELinux는 현재 활성화되어 있지 않으므로 곧바로 실행 모드로 설정하지는 않습니다. 시스템에서 레이블이 잘못 설정되어 시스템이 부팅되지 않을 수 있기 때문입니다.  

루트 디렉터리에서 이름이 .autorelabel인 비어 있는 파일을 생성하고 재부팅하여 시스템이 자동으로 파일 시스템 레이블을 재설정하도록 강제할 수 있습니다. 시스템 오류가 너무 많으면 허용 모드일 때 부팅이 되도록 재부팅해야 합니다. 모든 요소의 레이블이 재설정된 후에 /etc/selinux/config를 사용하여 SELinx를 실행 모드로 설정하고 재부팅하거나 setenforce 1을 실행합니다. 

시스템 관리자가 커맨드라인에 익숙하지 않은 경우 SELinux 관리에 사용할 수 있는 그래픽 툴이 있습니다. 

SELinux는 Linux 배포판에 기본으로 구축되는 시스템에 추가 보안 레이어를 제공합니다. SELinux가 켜진 상태로 있어야 시스템이 손상되더라도 이를 보호할 수 있습니다.

전통적으로 Linux와 UNIX 시스템은 DAC를 사용해왔습니다. SELinux는 Linux용 MAC 시스템의 예입니다. 

DAC의 경우에는 파일과 프로세스에 소유자가 있습니다. 사용자 또는 그룹이 파일을 소유하도록 할 수 있으며 누구든지 소유자가 될 수 있습니다. 사용자는 소유한 파일의 권한을 변경할 수 있습니다.

루트 사용자는 DAC 시스템으로 전체 액세스 제어 권한을 갖습니다. 루트 액세스 권한이 있는 경우, 다른 모든 사용자의 파일에 액세스하거나 시스템에서 원하는 작업을 모두 수행할 수 있습니다. 

그러나 SELinux와 같은 MAC 시스템에서는 액세스 관련 관리 정책이 설정되어 있습니다. 홈 디렉터리의 DAC 설정이 변경되더라도 다른 사용자나 프로세스가 디렉터리에 액세스하지 못하도록 하는 SELinux 정책을 통해 시스템을 안전하게 보호할 수 있습니다. 

SELinux 정책을 사용하여 사용자를 특정할 수 있을 뿐만 아니라 수많은 프로세스를 처리할 수 있습니다. SELinux로 변경을 수행하여 사용자, 파일, 디렉토리 등 액세스를 제한할 수 있습니다.

SELinux에서 오류가 발생하는 경우 해결해야 하는 사항이 있습니다. 다음의 4가지 일반적인 문제 중 하나일 수 있습니다.

  1. 레이블이 잘못된 경우: 레이블이 올바르지 않은 경우 툴을 사용하여 레이블을 수정할 수 있습니다.
  2. 정책 수정이 필요한 경우: 변경 사항에 대해 SELinux에 알려야 하거나 정책을 조정해야 할 수도 있습니다. 부울 또는 정책 모듈을 사용하여 이를 해결할 수 있습니다.
  3. 정책에 버그가 있는 경우: 정책에 해결해야 하는 버그가 존재할 수 있습니다.
  4. 시스템이 침입을 당한 경우: 대부분의 경우 SELinux가 시스템을 보호할 수는 있으나 시스템 손상이 일어날 가능성은 여전히 존재합니다. 이런 상황이 의심되는 경우 즉시 조치를 취해야 합니다.

부울이란?

부울(boolean)이란 SELinux의 기능에 대한 활성화/비활성화 설정입니다. SELinux 기능을 켜거나 끌 수 있는 수백 가지 설정이 있으며 이 중 다수는 이미 사전 정의되어 있습니다. getsebool -a를 실행하여 시스템에 이미 설정된 부울을 찾을 수 있습니다.

Red Hat Enterprise Linux는 글로벌 업계를 선도하는 오픈소스 Linux 플랫폼으로서 리스크를 완화하고 보안 구성 및 정책을 강화하며 컴플라이언스 전략을 간소화합니다.

Red Hat Enterprise Linux 시스템 롤은 일관된 워크플로우와 수동 작업 실행 간소화를 보장하는 Ansible® 롤을 지원하는 컬렉션입니다. 시스템 롤은 팀이 보안 워크플로우를 자동화하고, 시의 적절하고 규모에 적합하게 최소한의 리소스로 유지 관리하며, 거버넌스 및 규정 준수 요구 사항을 간소화하도록 지원합니다. SELinux 시스템 롤을 사용하면 SELinux의 배포 및 관리를 자동화할 수 있습니다.

  • 기능과 특징은 다음과 같습니다. 강제 모드 또는 허용 모드로 SELinux를 활성화하여 제어의 일관성을 보장합니다.
  • 요구 사항을 충족하도록 SELinux 정책 부울(booleans), 파일 컨텍스트, 포트 및 로그인을 사용자 정의할 수 있습니다.
  • 시스템 롤을 활용하여 지정된 파일 또는 디렉터리의 파일 컨텍스트를 조정합니다.

추가 정보

문서

Linux란 무엇일까요?

Linux는 OS의 기본 구성 요소인 커널과 이와 함께 번들로 제공되는 툴, 애플리케이션, 서비스로 구성됩니다.

문서

SELinux란?

SELinux(Security-Enhanced Linux)는 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 Linux® 시스템용 보안 아키텍처입니다.

문서

Linux 커널이란 무엇일까요?

Linux 커널은 Linux 운영 체제(OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스입니다.

Linux에 대한 자세한 내용

제품

새로운 애플리케이션 출시, 환경 가상화, 더욱 안전한 하이브리드 클라우드 생성 등 다양한 작업을 위한 안정적이고 검증된 기반을 제공합니다.

리소스