RedHat 시스템관리 / / 2023. 3. 23. 13:46

SELinux ②파일 컨텍스트(file context) 제어

반응형

 

 

 

 

이번 포스팅에서는 SELinux 파일 컨텍스트를 제어하는 방법을 알아보겠습니다.

 

 

SELinux 파일 컨텍스트는 인증된 사용자와 프로세스만 특정 파일 및 디렉터리에 액세스할 수 있도록 합니다.

 

 

 

 

파일 컨텍스트 설정 방법
semanage fcontext 파일 컨텍스트 정책을 생성
restorecon 정책에 지정된 컨텍스트를 파일에 적용
chcon SELinux 컨텍스트를 파일에 직접 설정
(일시적이어서 테스트 및 디버깅에 사용됨)

 

 

 

목적에 따라 수백 개의 많은 파일 컨텍스트 유형이 있습니다.

 

각 파일 컨텍스트 유형은 특정 목적 및 보안 요구 사항이 있는 특정 범주의 파일 또는 디렉터리를 나타냅니다. 

 

 

 

파일 컨텍스트 유형 예시
bin_t 실행 가능한 이진 파일
etc_t/etc /etc 디렉터리의 구성 파일
home_root_t 루트 사용자의 홈 디렉토리
root_t 루트 디렉터리의 시스템 파일
var_t/var /var 디렉토리의 파일
usr_t/usr /usr 디렉토리의 파일
system_u:object_r:httpd_sys_content_t Apache HTTP 서버에서 제공하는 파일
user_home_t 루트가 아닌 사용자의 홈 디렉토리

 

 

 

예를 들어, 파일의 SELinux 파일 컨텍스트가 "system_u:object_r:httpd_sys_content_t"인 경우,

 

"system_u" SELinux 사용자와 "httpd_sys_content_t" SELinux 역할에 의해

 

파일에 액세스할 수 있음을 의미합니다.

 

 

 

표준 경로 외 경로에서 Apache index.http 파일 구성하기

 

 

 

표준경로 외에서 Apach index.http 파일을 작성하고 연결시키면 권한이 없다는 메세지가 뜹니다.

 

 

 

 

현재 Apach 웹 페이지 파일 index.html의 위치는 루트 디렉토리의 custom 디렉토리에 있습니다.

 

 

 

/etc/httpd/conf/httpd.conf 파일 설정

 

 

 

custom 디렉토리의 index.html 파일에 대한 액세스를 허용시켜봅시다.

 

 

그 전에 semanage 명령어를 사용할 수 있게 패키지 설치부터 해줍니다.

 

 

 

dnf install -y policycoreutils-python-utils

 

 

 

혹시 Apach 설치도 안되있다면 설치 후 방화벽 설정까지 해줍시다.

 

 

 

# Apach 설치
dnf install -y httpd

# 방화벽 80포트 열고 재실행
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

# Apach 실행

systemctl enable --now httpd

 

 

1. semanage fcontext 명령으로 정의

 

옵션 설명 사용방법
-a, --add 지정한 개체 유형의 기록 추가 semanage fcontext -a -t <파일 컨텍스트> <파일>
-d, --delete 지정한 개체 유형의 기록 삭제 semanage fcontext -d <파일>
-l, --list 지정한 개체 유형의 기록 나열 semanage fcontext -l

 

 

semanage fcontext명령은 파일 경로를 SELinux 파일 컨텍스트 유형과 연결해줍니다.

 

 

 

custom 디렉토리와 그 하위 파일에 대한 컨텍스트 유형을 httpd_sys_content_t로 설정해줍니다.

 

모든 파일을 의미하는 정규표현식은 (/.*)? 를 사용합니다.

 

 

 

semanage fcontext -a -t httpd_sys_content_t '/custom(/.*)?'

 

 

 

2. restorecon 명령으로 설정

 

옵션 설명
-R 지정된 디렉토리와 하위 파일 모두 적용
-v 세부 정보 표시 

 

 

정의한 사항을 설정까지 해주어야 반영이 됩니다.

 

 

restorecon -Rv /custom

 

 

 

 

 

다시 Apach 웹 서버를 재실행하고 확인해봅시다.

 

 

systemctl restart httpd

 

 

 

 

 

+ 사용자가 직접 커스텀한 정책 확인 방법

 

semanage fcontext -l -C

 

 

 

 

 

 

 

 

 

 

 

 

 

[위 내용은 Redhat의 공인 교육과정 내용 중 일부를 정리한 글입니다.]

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유