4장. 비표준 구성을 사용하여 애플리케이션 및 서비스에 대한 SELinux 구성
SELinux가 강제 모드에 있을 때 기본 정책은 대상 정책입니다. 다음 섹션에서는 프로세스에 대한 구성 기본값(예: 포트, 데이터베이스 위치 또는 파일 시스템 권한)을 변경한 후 다양한 서비스에 대한 SELinux 정책 설정 및 구성에 대한 정보를 제공합니다.
비표준 포트의 SELinux 유형을 변경하고, 기본 디렉터리의 변경 사항에 대해 잘못된 레이블을 식별하고 수정하고, SELinux 부울을 사용하여 정책을 조정하는 방법을 배웁니다.
4.1. 비표준 구성으로 Apache HTTP 서버에 대한 SELinux 정책 사용자 정의
다른 포트에서 수신 대기하고 기본이 아닌 디렉터리에 콘텐츠를 제공하도록 Apache HTTP 서버를 구성할 수 있습니다. 연속 SELinux 거부를 방지하려면 이 절차의 단계에 따라 시스템의 SELinux 정책을 조정합니다.
사전 요구 사항
-
httpd
패키지가 설치되고 Apache HTTP 서버는 TCP 포트 3131에서 수신 대기하고 기본/var/www/
디렉터리 대신/var/test_www/
디렉터리를 사용하도록 구성됩니다. -
policycoreutils-python-utils
및se rsh-server
패키지가 시스템에 설치되어 있습니다.
절차
httpd
서비스를 시작하고 상태를 확인합니다.# systemctl start httpd # systemctl status httpd ... httpd[14523]: (13)Permission denied: AH00072: make_sock: could not bind to address [::]:3131 ... systemd[1]: Failed to start The Apache HTTP Server. ...
SELinux 정책은
httpd
가 포트 80에서 실행되는 것으로 가정합니다.# semanage port -l | grep http http_cache_port_t tcp 8080, 8118, 8123, 10001-10010 http_cache_port_t udp 3130 http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 pegasus_https_port_t tcp 5989
포트 3131의 SELinux 유형을 포트 80과 일치하도록 변경합니다.
# semanage port -a -t http_port_t -p tcp 3131
httpd
를 다시 시작합니다.# systemctl start httpd
그러나 콘텐츠는 계속 액세스할 수 없습니다.
# wget localhost:3131/index.html ... HTTP request sent, awaiting response... 403 Forbidden ...
sealert
툴로 이유를 찾으십시오.# sealert -l "*" ... SELinux is preventing httpd from getattr access on the file /var/test_www/html/index.html. ...
matchpathcon
도구를 사용하여 표준 및 새 경로의 SELinux 유형을 비교합니다.# matchpathcon /var/www/html /var/test_www/html /var/www/html system_u:object_r:httpd_sys_content_t:s0 /var/test_www/html system_u:object_r:var_t:s0
새
/var/test_www/html/
콘텐츠 디렉터리의 SELinux 유형을 기본/var/www/html
디렉터리 유형으로 변경합니다.# semanage fcontext -a -e /var/www /var/test_www
/var
디렉터리의 레이블을 재귀적으로 레이블을 다시 지정합니다.# restorecon -Rv /var/ ... Relabeled /var/test_www/html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /var/test_www/html/index.html from unconfined_u:object_r:var_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
검증
httpd
서비스가 실행 중인지 확인합니다.# systemctl status httpd ... Active: active (running) ... systemd[1]: Started The Apache HTTP Server. httpd[14888]: Server configured, listening on: port 3131 ...
Apache HTTP 서버에서 제공하는 콘텐츠에 액세스할 수 있는지 확인합니다.
# wget localhost:3131/index.html ... HTTP request sent, awaiting response... 200 OK Length: 0 [text/html] Saving to: ‘index.html’ ...
추가 리소스
-
semanage(8)
,matchpathcon(8)
및sealert(8)
도움말 페이지.