Linux로 웹서버 구축 시 SELinux 관련 문제해결방안 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

Linux로 웹서버 구축 시 SELinux 관련 문제해결방안 정보

웹서버 Linux로 웹서버 구축 시 SELinux 관련 문제해결방안

본문

 웹서버를 설치하던 중 발생한 403 Forbidden 에러를 해결한 과정을 공유해드립니다.

별 내용 아닐 수 있지만, 혹시나 누군가에게라도 작은 도움이 될 수 있지 않을까하여 올립니다.

참고로 CentOS 8 / Nginx / PHP 7 구성을 설치하는 과정에서 발생한 문제입니다.


 Nginx 및 PHP 설정까지 모두 완료한 시점에서 변경된 root 경로에 index.php 파일을 생성 후, 해당 파일에 접근하려고 할때, 403 에러가 발생하며, error.log 파일에 Permission denied 에러가 기록되는 경우 SELinux 설정이 문제일 가능성이 있습니다.

 

 

 

1. SELinux가 활성화 상태인지 확인

 

 해당 오류가 SELinux에 의한 것인지 확인하기 위해, 잠시 SELinux를 일시적으로 비활성화하여 사이트 접속에 문제가 없는지 확인 합니다.

 

 우선 SELinux가 실행 중인지 체크하기 위해 "sestatus" 명령어를 입력합니다.

아래 처럼 SELinux status값이 enabled 이면서, Current mode가 enforcing 상태이면, SELinux가 활성화 되어 있는 것 입니다.

1794657427_1574149154.8373.png

 

 

 

2. SELinux 임시 비활성화

 

 SELinux를 잠시 비활성화 하기 위해 "setenforce 0" 명령어 입력 후, 다시 "sestatus" 명령어로 상태를 확인합니다.아래와 같이 permissive 상태이면 일시적으로 비활성화 된 것입니다.

1794657427_1574150428.9477.png

 보통 SELinux는 보안 정책설정이 까다로운 관계로 서버OS 설치 후 바로 비활성화되는 경우가 많다고 합니다.

 제 설명은 보안을 위해 SELinux를 활용할 수 있는 방법이므로, 영구적으로 비활성화 하는 방법은 제외하도록 하겠습니다. 

 

 SELinux가 비활성화 된 현 상태에서 사이트 접근에 문제가 있는 경우, SELinux만의 문제가 아니므로 다른 문제점들도 확인해보셔야 하며, 사이트 접근에 성공하셨다면, 아래의 설정을 진행하시면 됩니다.

 

 

 

3. 디렉터리에 설정된 보안컨텍스트 확인 및 변경

 

우선 "ls -Z" 명령어로 접근할 웹 경로의 디렉터리의 지정된 보안 컨텍스트를 확인 합니다.1794657427_1574151999.5922.png

 

설치된 것은 Nginx이지만 아파치 보안 컨텍스트인 httpd_t로 인식되며, httpd_t로 접근 가능한 보안 컨텍스트는 'httpd_sys_content_t' 이므로 해당 디렉터리의 보안컨텍스트를 변경해줍니다.

# chcon -Rt httpd_sys_content_t [적용할 디렉터리]

-R 옵션의 경우 하위디렉터리까지 포함하여 재귀적으로 처리한다는 뜻이며, -t 는 보안컨텍스트를 지정한다는 옵션입니다.

1794657427_1574152596.6998.png

 

 해당 디렉터리의 보안컨텍스트 값이 변경/적용 되었으면, 사이트 접속이 가능해집니다.

 

 

 

4. 파일이 생성되거나 업로드되는 디렉터리의 보안 컨텍스트

 

 추가적으로 파일이 생성되거나 업로드되는 디렉터리에 사용되는 보안 컨텍스트는 다르게 설정하여야 합니다.

예를 들어 그누보드/영카트의 data 디렉토리는 파일을 생성되고 업로드되기 때문에 " httpd_sys_rw_content_t " 보안 컨텍스트를 지정 해야합니다.
 

그렇지 않으면 data 디렉터리를 생성한 후 퍼미션을 설정해주었어도 SELinux에서 권한을 차단하기 때문에 아래의 사진처럼 퍼미션을 요구하는 메시지가 계속 뜨게됩니다.

1794657427_1574153447.8575.png

 

그누보드가 설치된 디렉터리로 이동하여 아래와 같이 data 디렉토리에 보안컨텍스트를 지정해주면, 정상적으로 그누보드/영카트를 이용하실 수 있습니다.

 # chcon -Rt httpd_sys_rw_content_t data

1794657427_1574154262.1914.png

 

 

이상입니다.

부족한 글 읽어주셔서 감사드리며, 잘못된 부분 말씀해주시면 조치하도록 하겠습니다.

 

추천
5

댓글 7개

selinux 설정시 php curl 로 타 서버와 전송시 동작이 안되어 무응답을 받습니다.

아래 명령어로 설정

setsebool -P httpd_can_network_connect 1

소셜로그인시 응답이 무응답이여서 한참을 찾아봤네요.
전체 5,352
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT