1장. SELinux 시작하기
SELinux(Security Enhanced Linux)는 추가 시스템 보안 계층을 제공합니다. SELinux는 근본적으로 질문에 대답합니다. may <subject> do <action> to <object>? 웹 서버가 사용자의 홈 디렉토리에서 파일에 액세스할 수 있습니까?
1.1. SELinux 소개
DDAC(Discretionary Access Control)로 알려진 사용자, 그룹 및 기타 권한에 따른 표준 액세스 정책은 시스템 관리자가 특정 애플리케이션이 로그 파일만 볼 수 있도록 제한하면서 로그 파일에 새 데이터를 추가할 수 있도록 하는 것과 같이 포괄적이고 세분화된 보안 정책을 생성할 수 없습니다.
SELinux(Security Enhanced Linux)는 MAC(Mandatory Access Control)을 구현합니다. 모든 프로세스와 시스템 리소스에는 SELinux 컨텍스트 라는 특수 보안 레이블이 있습니다. SELinux 레이블 라고도 하는 SELinux 컨텍스트는 시스템 수준 세부 정보를 추상화하고 엔터티의 보안 속성에 중점을 두는 식별자입니다. 이렇게 하면 SELinux 정책에서 오브젝트를 일관된 방식으로 참조할 수 있을 뿐만 아니라 다른 식별 방법에서 찾을 수 있는 모호성을 제거할 수도 있습니다. 예를 들어, 파일에 바인드 마운트를 사용하는 시스템에 여러 개의 유효한 경로 이름이 있을 수 있습니다.
SELinux 정책은 프로세스가 서로 상호 작용하는 방법과 다양한 시스템 리소스를 정의하는 일련의 규칙에 이러한 컨텍스트를 사용합니다. 기본적으로 정책은 규칙이 액세스를 명시적으로 부여하지 않는 한 모든 상호 작용을 허용하지 않습니다.
SELinux 정책 규칙은 DAC 규칙 다음에 확인합니다. DAC 규칙에서 액세스를 먼저 거부하는 경우 SELinux 정책 규칙이 사용되지 않으므로 기존 DAC 규칙이 액세스를 방지하는 경우 SELinux 거부가 기록되지 않습니다.
SELinux 컨텍스트에는 user, role, type 및 보안 수준이라는 몇 가지 필드가 있습니다. SELinux 유형 정보는 프로세스와 시스템 리소스 간 허용되는 상호 작용을 정의하는 가장 일반적인 정책 규칙으로 SELinux 유형에서 전체 SELinux 컨텍스트가 아닌 가장 중요한 경우입니다. SELinux 유형은 _t
로 끝납니다. 예를 들어 웹 서버의 유형 이름은 httpd_t
입니다. /var/www/html/
에 있는 파일 및 디렉토리의 유형 컨텍스트는 httpd_sys_content_t
입니다. /tmp 및 /var
입니다. 웹 서버 포트의 유형 컨텍스트는 /tmp
/에서 일반적으로 발견되는 파일 및 디렉토리의 유형 컨텍스트는 tmp
_thttp_port_t
입니다.
Apache( httpd_t
로 실행되는 웹 서버 프로세스)가 /var/www/html/
및 기타 웹 서버 디렉터리(httpd_sys_content_t
)에서 일반적으로 발견되는 컨텍스트의 파일 및 디렉터리에 액세스할 수 있도록 허용하는 정책 규칙이 있습니다. /tmp
및 /var/tmp/
에서 일반적으로 발견되는 파일에 대한 정책에 허용 규칙이 없으므로 액세스가 허용되지 않습니다. SELinux를 사용하면 Apache가 손상되어 악성 스크립트에 액세스하여 /tmp
디렉토리에 계속 액세스할 수 없습니다.
그림 1.1. SELinux가 Apache 및 MariaDB를 안전한 방식으로 실행하는 데 도움이 되는 방법의 예는 무엇입니까.
이전 스키마가 표시된 대로 SELinux는 httpd_t
로 실행되는 Apache 프로세스가 /var/www/html/
디렉터리에 액세스할 수 있도록 허용하고 httpd_t
및 mysqld_db_t
유형 컨텍스트에 대한 허용 규칙이 없기 때문에 /data/mysql/
디렉터리에 액세스하는 동일한 프로세스를 거부합니다. 반면 mysqld_t
로 실행되는 MariaDB 프로세스는 /data/mysql/
디렉터리에 액세스하고 SELinux도 mysqld_t
유형의 프로세스를 올바르게 거부하여 httpd_sys_content_t
라는 레이블이 지정된 /var/www/html/
디렉터리에 액세스할 수 있습니다.
추가 리소스
-
selinux(8)
도움말 페이지 및apropos selinux
명령으로 나열된 도움말 페이지 및 도움말 페이지. -
selinux-policy-doc
패키지가 설치된 경우man -k _selinux
명령으로 나열된 도움말 페이지. - SELinux coloring Book은 SELinux 기본 개념을 더 잘 이해하는 데 도움이 됩니다.
- SELinux topics FAQ