이번 포스팅에서는 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 디렉토리에 있습니다.
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의 공인 교육과정 내용 중 일부를 정리한 글입니다.]
'RedHat 시스템관리' 카테고리의 다른 글
parted 명령어 ①디스크 파티션 관리하는 방법 (0) | 2023.03.23 |
---|---|
SELinux ③setsebool, getsebool 명령어로 SELinux 정책 조정 (0) | 2023.03.23 |
SELinux ①리눅스 엑세스 활성화, 비활성화(getenforse, setenforce) (0) | 2023.03.23 |
시스템 성능 튜닝 ②nice/renice: 프로세스 우선순위 할당/수정 (0) | 2023.03.23 |
시스템 성능 튜닝 ①tuned: 시스템 성능 최적화 (3) | 2023.03.23 |