Child pages
  • RHEL / CentOS 7 의 주요 SELinux 변경 사항

Contents


 

RHEL/CentOS 7 에 탑재된 SELinux 는 많은 변경이 있었지만 그 중에 가장 중요한 것중 하나는 6 에서는 httpd_unified boolean 이 true 였지만 7 에서는 false 라는 점이다.


이 불린은 apache httpd 나 nginx 같은 웹 서버가 컨텐츠를 다룰 때 동일한 방식의 룰로 처리할 수 있게 해준다.

풀어서 설명하면 /var/www/html 같이 httpd_sys_content_t 가 설정된 컨텐츠에 대해 read 와 write 권한을 갖게 해준다.


7부터는 false 로 바뀌어서 /var/www/html 같은 폴더에 컨텐츠가 있을 경우 소유자가 웹 서버(apache) 이고 파일 퍼미션에 write 가 설정되어 있고 httpd_sys_content_t context 가 설정되어도 쓰지를 못한다.


워드프레스같이 웹 브라우저로 설치하는 프로그램의 경우 설치 과정중에 설정한 내용을 파일 시스템에 쓰는 부분이 있는데 쓰기 권한이 없으므로 설치에 실패하게 된다.

이를 해결하려면 다음과 같은 방법이 있다.


#1 쓰기가 필요한 컨텐츠에 httpd_sys_rw_content_t 를 설정한다. (추천)

보안 강화를 위해 개발사가 의도한 정책이므로 다음 명령어로 쓰기가 필요한 content 를 명시적으로 지정해 주는게 좋다.

chcon  -t httpd_sys_rw_content_t writable-content.php

파일이나 폴더마다 일일이 지정해 주어야 할 경우 -R 옵션을 추가해 주면 되며 아래는 워드프레스의 uploads 폴더에 대해서 context 를 설정하는 예제이다.

chcon -R -t httpd_sys_rw_content_t wp-content/uploads/

 

 

#2 6 대와 동일하게 boolean 을 설정한다.(비추)

unified 불린을 설정하여 httpd_sys_content_t 가 부여된 컨텐츠는 read/write 가 가능하게 처리한다.

setsebool -P httpd_unified on

장점은 편리하지만 보안성이 떨어질 수 있다. 7 에서 이렇게 바뀐것은 웹 서버를 통한 공격이 나날이 증가하므로 더욱 견고한 보안을 위해서 바꾼것 같으니 당장은 불편해도 1번 방식을 쓰는게 좋을 듯 하다.

 

이 내용을 몰라서 CentOS 7 에 PHP 로 된 app 를 설치하는데 4시간이나 까먹었다. 

Ref

 

  • No labels

This page has no comments.