SELinux의 보안 메커니즘과 운영 원리

SELinux 기본 개념

리눅스 시스템에서 자원 접근 통제는 전통적으로 사용자 권한 기반의 자율적 접근 제어(DAC) 방식을 사용했습니다. 그러나 높아진 보안 요구사항에 대응하기 위해 SELinux(Security-Enhanced Linux)가 도입되었으며, 이는 강제적 접근 제어(MAC)를 구현합니다. DAC 환경에서 root 사용자는 모든 파일에 접근할 수 있지만, MAC 환경에서는 SELinux 정책에 따라 접근이 제한됩니다.

SELinux 구조 및 작동 방식

SELinux는 커널 수준의 보안 메커니즘으로 Linux 2.6 이후 커널에 통합되었습니다. 주요 배포판인 CentOS/RHEL은 기본적으로 SELinux를 활성화합니다. 구성 변경 시 시스템 재시작이 필요합니다.

핵심 구성 요소

SELinux는 프로세스와 시스템 자원(파일, 소켓 등)에 대해 두 가지 개념을 정의합니다:

  • 도메인(Domain): 프로세스 실행 제한
  • 컨텍스트(Context): 시스템 자원 접근 제한
# 프로세스 보안 컨텍스트 확인
ps -eZ

# 파일 보안 컨텍스트 확인
ls -lZ /var/www

보안 정책 및 동작 모드

SELinux는 대상(targeted) 정책을 기본으로 사용하며, 네트워크 서비스 프로세스만 제한합니다. /etc/selinux/config 파일에서 정책을 관리할 수 있습니다.

동작 모드

  • Enforcing: 정책 위반 시 차단 및 로깅
  • Permissive: 경고만 기록하고 차단하지 않음
  • Disabled: SELinux 비활성화
# 현재 모드 확인
getenforce

# 임시 모드 변경 (0: Permissive, 1: Enforcing)
setenforce 0

보안 컨텍스트 분석

파일 컨텍스트 예시:

system_u:object_r:httpd_content_t:s0
  • 사용자: system_u (시스템 프로세스)
  • 역할: object_r (파일 객체)
  • 유형: httpd_content_t (웹 콘텐츠)
  • 수준: s0 (다중 레벨 보안)

실제 사례: 웹 서버 문제 해결

/home 디렉터리에서 생성한 index.html을 /var/www/html로 이동 시 웹 접근 실패 문제:

# 오류 로그 확인
tail /var/log/audit/audit.log

# 파일 컨텍스트 비교
ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

ls -Z index.html
-rw-r--r--. root root unconfined_u:object_r:user_home_t:s0 index.html

해결 방법:

# 컨텍스트 자동 수정
restorecon -v /var/www/html/index.html

# 수동 컨텍스트 변경
chcon -t httpd_sys_content_t /var/www/html/index.html

감사 로그 분석

SELinux 차단 이벤트는 /var/log/audit/audit.log에 기록됩니다. sealert 도구로 가독성 향상:

sealert -a /var/log/audit/audit.log

로그 분석 시 httpd_t 도메인이 user_home_t 유형 파일 접근 시도 실패 메시지를 확인할 수 있습니다.

태그: SELinux 리눅스보안 커널보안 보안정책 보안컨텍스트

7월 8일 16:03에 게시됨