보안을 위한 그누보드 퍼미션 설정 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

보안을 위한 그누보드 퍼미션 설정 정보

보안을 위한 그누보드 퍼미션 설정

본문

 보안을 위한 그누보드 퍼미션 설정은 어떻게 하는게 좋을까?
 
그누보드 폴더는 701
 
db 정보 파일은 더 제한해야겠죠?

댓글 전체

보드측 보안은 시큐리티홀이 생기지 않는한 기본설정으로 문제가 없으리라 생각 되네요.
어디서 들은 이야기 입니다만 테스트 아이디가 대체적으로 관리자 권한이 많기 때문에 이런쪽을 조심 하는편이 더 낫다는 말을 들은것 같네요.
701로 하면 안돼는 이유가 있나요?
보안적 측면에서 호스팅서비스가 아닌 직접 서버운영시에 701과 더블어 data디렉토리에 php스크립트 실행
하지 못하게 하면 보안에 상당한 도움이 되리라 생각되네요
호스팅을 이용하시건 서버를 직접 운영하시건
data 디렉터리에 들어 가실 일이 전혀 없다면
상관이 없습니다.
또 관리자(root)라면 퍼미션에 무관하게 들어 갈 수 있으니 역시 상관 없구요.

가끔 호스팅을 이용하는데 data에 들어 갈 일이 생기면 번거로운 점이 생기는 거라서
말씀 드리는 겁니다.
흠...
data디렉토리랑 무슨 상관이 있는지요?
질문자님이 701은 그누디렉토리기준을 말씀하시는건데요
data디렉토리는 소스를 건드리지 않았다면 707로 되어 있겠죠 data디렉토리엔
웹상에서 자료들이 들어 갈곳인데 그곳에 그누보드의 보안홀의 존재가 발생될시
악의 적인 스크립트가  유입되더라도 무력화차원에서 말씀드린겁니다.

보안을 위한 퍼미션에 설정시.. 원질문자님에 대한 답변에
적어도 이곳에 오시는분들이 초보분들도 계시는지라
부적절한 답변인지 모르고 오히려 안심하시는분들도 더러 계시는것 같습니다.
그런차원에서 701로 해도 되는데 절대 안됀다는 말씀을 하셔서 그 이유에 대해 여쭤 본겁니다.

이제 제누보두님에 대한 조금이나 도움이 될것 같아서 적어 봅니다.
------------------------------------------------------------------------------------------
호스팅을 받으실경우라도 설령 701로 자신의 public_html디렉토리가 설정되어 있다고 하더라도
타유저가 쉘상에서 열람은 불가능하지만 php스크립트로 타유저의 dbconfig.php외 모든 파일들을
열람할수 있죠 701로는 쉴상에서 밖에 막을 수가 없습니다.

1차적으로 같은호스팅내 타유저로 부터 자신의 파일이나 db암호등 열람또는 퍼가는것을
방지하기 위해
.htaccess파일을 호스팅업체 풀어 줘서 사용할수 있거나 사용하지 못한다면 강력히 요청 하셔서라도
.htaccess는 사용할수 있도록 해놓으시게 좋습니다.
 
http://httpd.apache.org/docs/1.3/howto/htaccess.html  참조하셔셔

<Directory /home/userID/>
php_admin_value open_basedir /home/userID/:/var/tmp/:/tmp/
</Directory>

작성하시면 타유저가 php스크립트를 통해 자신의 파일을 오픈할수 없습니다.
pear까지 사용하신다면 open_basedir에 디렉토리를 더 추가해주시면 됩니다.

더 자세한 내용은  http://kr.php.net/features.safe-mode 의 open_basedir를 읽어 보세요

이런 사소한곳에 신경을 좀더 쓰신다면 비싼돈주고 구입한 소핑몰소스나 mysql db상에서
디자인템플릿구조로된 쇼핑몰이라면 통째로 도둑맞는일은 없을겁니다.그누보드라면 자신의
힘들게 구축된 db를 타인에게 db백업당하지 않을겁니다.

2차적으로 data디렉토리쪽은 그누보드의 보안홀이 존재 할시 이건 존재할때의 문제로 넘어갈수도
있겠습니다만 같은 호스팅유저중에 아주 좋은 소스가 있는데 꼭 빼오고 싶은 악의적인 분을 무력화
할때 대비책입니다만..
data폴더 하위(포함)에 자료가 저장되는 곳에
.htaccess를 통해 ExecCGI / php handler를 실행되지 않게 해주면 좀더 안심하실수 있겠죠
php실행 방지는 아래링크 참조 하시고 작성해 보세요
http://httpd.apache.org/docs/1.3/mod/mod_mime.html 참고하시고
대략 아래처럼 해주시면 php파일실행은 막을수 있을듯 합니다.
Addhandler server-parsed .html
AddType text/html .php

.php는 자신의 서버나 호스팅쪽에서 열어 놓은 php실행 확장자명들이니 적절히 추가하시면 될듯
싶네요

호스팅받는중이시라면 제어가 불가능할수도 있습니다. 그럴때는 서버관리자에게 문의 하셔서 해결
하세요

설정이 끝나면 data 하위 보드명디렉토리에 phpinfo.php같은 스크립트 넣고 직접 웹브라우저에서
열어 보세요 소스가 그대로 보여지면 성공
phpinfo스크립트가 실행되면 실패 입니다.
'강가딘'님께서 언급하신 일반론도 간과해서는 안될 기본적인 사항이겠으나,
'그누보드'와 연관지어 좀 더 내용을 추가하자면...

사용자가 한번 더 꼼꼼이 점검해야 할 부분이겠으나,
대부분의 웹호스팅인 경우 특정 계정의 접근권한(퍼미션)이 풀려있다고 하더라도,
그룹 및 타 사용자의 접근을 봉쇄하는 방법을 사용하지요.
내 계정의 초기 패스가 /home/계정이름/ 이라고 설정되어 있고,
동일 서버의 타 사용자가 내 계정의 (초기)경로를 알더라도 접근할 수 없습니다.

저 또한 웹페이지에서 특별한 기능을 사용(예를 들어 계정 사용량 등)을 굳이 사용하지 않는다면,
초기 설치경로의 퍼미션은 701로 설정합니다.
이것은 직전에 언급했듯이 동일서버내의 타 사용자라 할지라도 자신의 계정이 아니라면,
접근할 수 없도록 설정되어 있지 않을 경우 최소한 자신의 계정을 보호하는 방법 중 하나입니다.
(그렇다고 완벽한 것은 아니죠. 다만, 1차적인 접근을 유보시키는 방법 중 하나입니다.)

-. 참조 : 스킨/라이브러리/data 경로의 초기 퍼미션은 705이상으로 설정하셔야 합니다.
            단순히 접근 권한만을 갖고 있다면(701 정도), 웹페이지에서 원활한 사용을 할 수가 없습니다.
            일례로 관리자모드 > 스킨설정 > 스킨경로명이 출력되지 않습니다.
            또 한가지 라이브러리를 타 경로에서 끌어쓰는 경우,
            파일을 열 수 없다는 cannot open stream관련 메시지만 반겨줄 것입니다.

-. 가볍게 참조할만한 내용
 : 3월 21일자로 기록된 코멘트(nasca 코멘트)를 읽어 보시는 것도 좋을듯 합니다.
 : 이것의 의미는 운영에 관한 기본적인 내용도 다루고 있지만,
  본 게시물에서 언급되었듯이 그누보드와 관련된 퍼미션 설정이라는데 있습니다.
  즉, 일반적인 사항과 기본 지식에 관한 부분이 현재와 같이 '그누보드'를 고려하지 않은
  내용이라고 할 때, 그것은 '반드시 그러하다'라고 말할 수는 없다고 봅니다.
php코드를 작성하여 다른 계정의 파일을 읽는 것은 누구도 막을 수 없습니다.
만약에 막혔다면 그건 웹상에서 접속을 되지 않겠죠
data디렉토리처럼 웹상에서 변경을 할 수 있는 파일은 서버에 계정을 가지고 있는 사람은 누구나
삭제편집을 할 수 있다는 얘기입니다.

그런 디렉토리에 php스크립트 실행을 하지 못하게 하는것도 예시로 말씀드렸습니다.
이건 웹호스팅에서 알아서 해줘야 할 부분이지만 그렇지 않다면 .htaccess통해서 자신이 막을수 있다라는 예시도 드렸습니다.
 
같은 서버의 타유저의 웹계정에서 php코드를 통해 자신의 파일을 읽는것을 방지 하기 위해
open_basedir로 그나마 막을수 있는 방법이라고 예시 또한 드렸습니다.

apache / php로 동작하는 웹서버는 그누보드를 포함한 어떠한 웹프로그램도 이에 해당됩니다.
요즘이야 open_basedir셋팅된곳도 많지만 자신의 웹호스팅이나 웹서버운영에 해당셋팅이
안되어 있다면 해당서버의 타계정유저가 얼마든지 쉴상이 아닌 php코드로 접근이 가능하다는것
입니다.

나스카님이 말씀하신
//대부분의 웹호스팅인 경우 특정 계정의 접근권한(퍼미션)이 풀려있다고 하더라도,
그룹 및 타 사용자의 접근을 봉쇄하는 방법을 사용하지요.//

그건 어디까지나 쉘상의 문제 입니다. 쉘상에서 아파치실행권한등등도 있겠네요..
701은 웹상에서 접속이 가능하다는 이야기인데
각자 사용하는 호스팅/서버에 따라 셋팅이 틀리니 701일때 웹상에서 접근이 안된다면
그건 나스카님의 호스팅또는 서버의 셋팅과 관련이 있는겁니다.

제가 예시한 보안으로도 완벽하게 막지는 못할겁니다.
-. data경로의 접근문제
> data디렉토리처럼 웹상에서 변경을 할 수 있는 파일은 서버에 계정을 가지고 있는 사람은 누구나
> 삭제편집을 할 수 있다는 얘기입니다.
> open_basedir 관련...

'강가딘'님이 말씀하신 것처럼 제 덧글은 open_base_dir의 설정에 관해 한번 더 짚었습니다.
그런데... 제 코멘트에 대한 '강가딘'님의 답변 코멘트는 그 내용을 한번 더 되풀이 하시는 것 같습니다.
이론상 /data/경로에 접근할 수 있다는 것과 실제 접근할 수 있는 것과는 구분이 되어야 겠지요?


-. 웹에서 특정경로를 인식하는 문제
> 701은 웹상에서 접속이 가능하다는 이야기인데
> 각자 사용하는 호스팅/서버에 따라 셋팅이 틀리니 701일때 웹상에서 접근이 안된다면
> 그건 나스카님의 호스팅또는 서버의 셋팅과 관련이 있는겁니다.

특정 호스팅 환경 설정에 따라서 달라진다고는 할 수가 없을 것 같습니다.
왜냐하면 스킨경로를 예로 들어보자면,
현재의 그누보드는 일단 스킨이라는 경로를 인식하고,
하위에 존재하는 세부경로(실질적인 스킨이름)까지도 인식을 해야
웹페이지에서 해당 경로를 정상적으로 인식하게 됩니다.

과연 이 부분도 사용자마다 다를까요?

질문자의 질문의도는 단순히 일반적인 퍼미션이라는 측면을 다루지는 않았습니다.
그누보드 설치(후)의 각 계정 사용자가 설정할 수 있는 퍼미션 설정이라는 부분에 있습니다.

'강가딘'님의 서버측에 관한 일반적인 말씀은 충분히 공감이 되나,
최소한 제 첫번째 코멘트에 대한 문제의 방향은 제가 의도했던 것과는
사뭇 다른 방향으로 말씀하시는 듯 합니다.
나스카님의 잘못 오해하시는부분을 있으신것 같군요

제가 위에서 언급한 내용을 아래와 같이 인용하면
-----------------------------------------------------------------------------------------------------------
data디렉토리랑 무슨 상관이 있는지요?
질문자님이 701은 그누디렉토리기준을 말씀하시는건데요
data디렉토리는 소스를 건드리지 않았다면 707로 되어 있겠죠 data디렉토리엔
웹상에서 자료들이 들어 갈곳인데 그곳에 그누보드의 보안홀의 존재가 발생될시
악의 적인 스크립트가  유입되더라도 무력화차원에서 말씀드린겁니다.
----------------------------------------------------------------------------------------------------------

"위에 언급한 질문자님이 701은 그누디렉토리기준이라고 말씀하시는건데요" 라고 언급
드렸듯이 701기준은 그누가 설치된 디렉토리에 701로 하셔도 상관없다는 이야기입니다.

그후 707은 data디렉토리는 그누의 php스크립트를 통해 웹서버권한을 가진
www/apache/nobody등으로 자동으로 만들어 주기 때문에 그곳은 그누보드의 보안홀이
존재할 수 있을경우을 대비 차원에서 .htaccess로 그누data디렉토리에 php스크립트및 cgi실행을
차단하라는 내용입니다.
 
퍼미션을 강화해도 쉘상에서 어느정도 보안유지가 될뿐이기에 같은서버내 타계정
유져가 중요파일을 php스크립트를 통해 읽어 오지못하도록 open_base_dir를 설정하시라는개
답변의 핵심이였습니다.

질문자의 의도를 원문을 인용해 저 개인적으로 생각했던 내용을 적습니다.
----------------------------------------------------------------------------------
보안을 위한 그누보드 퍼미션 설정은 어떻게 하는게 좋을까?
 
그누보드 폴더는 701

 => 같은 서버의 타 계정자가 자신의 디렉토리 목록을 볼수 없도록 하기 위함으로 이해 했고요
 
db 정보 파일은 더 제한해야겠죠?

=>dbconfig.php 파일을 말씀하시는것 같고 이 또한 701로 하면 보안에 신경
쓰지 않은 호스팅회사에서 서비스를 받을경우 1차적으로 쉘상에서 타 계정 유저가 db암호를
볼수 없을텐데 타유저가 php스크립트로 자신의 계정을 통해 dbconfig를 불러와서
암호를 열람하는것을 방지는 못하기 때문에 더 제한을 해야 겠죠? 라고 이해 했고 답변을
드렸습니다.
-------------------------------------------------------------------------------------------------------------------------------
호스팅을 받으시는분일수도 있고 자신의 서버에 보안을 좀더 강화하기 위하거나
몇명이 모여서 서버호스팅을 받고 계시는 분들도 있을겁니다.
하나같이 귀중한 자신의 자료들이라고 생각됩니다.

자신이 서버 운영이라면 퍼미션 문제는 쉽게 해결될 부분이고요 호스팅의경우
오래전에 호스팅을 받았던 일이지만 자신의 계정에서 디렉토리 생성시
아파치가 www일경우 그룹과 같이 자동으로 생성 되었던 적이 있습니다.
다시말하면 그누소스를 압축을 자신의 계정에 풀면 자동으로 www그룹이 같이 잡혀
풀리는것이기 때문에
스킨디렉토리의 opendir의 아무나 읽기 권한이 없어고 실행권한만 줘도 그룹이 www이므로
읽어 올수 있다는 것이지요
이것런 경우도 있기 때문에 각각의 서버셋팅 문제라고 말씀드린겁니다.

701에서 중요한것은 1이지 7이 아닙니다. 실행권한만 주면 쉘상에서 타 계정 유저가 열람
자체가 안되는 것이 핵심 이지요

opendir()문제는 사용자의 그룹권한을 자동으로 아파치계정의 읽기권한을 잡아 주는 호스팅회사도
있기 때문에 각각의 호스팅환경 문제라고 말씀드렸던 겁니다.
이런 호스팅 회사에서 서비스를 받는경우라면 그누보드 하위 디렉토리나 파일들을
마지막에 1을 주고 나머지는 적절히 조절 하신다면 전혀 문제 될게 없습니다.

그누소스의 수정을 통해 data가 저장될디렉토리/저장파일들도 701/601로 할수도 있습니다.
어차피 웹상에서 저장되기 때문에 아파치 소유권한으로 파일이 생성되고 웹상에서
읽고/쓰는데 에는 문제가 없습니다. 쉘상에서 타유저가 빼가는 일은 없겠죠
보안에 좋지만 그렇게 하지 않는 이유가 계정유저라면
쉘상에서 자신의 계정디렉토리내에 해당 디렉토리/파일들을 핸들링하지 못하기 때문이지요 

open_basedir설정없는 서버라면 fopen()을 통해서 dbconfig.php같은 중요
한 파일이 노출 된겁니다.
또한 data는 웹서버 권한의 읽고/쓰기가 가능하기 때문에 php파일을 심어 놓을수도 있는
문제 입니다.

퍼미션과 .htaccess open_basedir를 적절히 이용하신다면 질문자님의 고민이 해결되는게 핵심이긴 합니다만
이 모든 장문이 퍼미션 문제인데 호스팅의 경우 누차 누차 언급드리는 쉘상에서의 권한보안
만으론 절대 자신의 귀중한 파일을 보호하지 못한다 입니다.!!
직접 서버를 운영하지 않는 이상 호스팅서비스는 자신의 파일을 포기하고 하시는 것으로 생각
하시는게 편합니다.

리눅스의 경우는 너무나 많은 부분들이 서로 다른 환경들이 많습니다.
그렇기 때문에 어느 한곳에 타겟을 두고 말씀드리기가 힘든 부분입니다.
특히 보안쪽에서 더더욱 그렇습니다. 제가 답변 드린것에 대해서 어느 정도 이해 하시고
응용에 대해서 생각하셨다면 서버측관한 일반적인 말씀은 충분히 공감이라는 말씀은
안하셨을겁니다. 일반적이 아닌 호스팅을 받는 입장이라면
opendir()실행 읽을수 없는 문제에 대한 언급보단
.htaccess open_basedir로 자신의 귀중한 파일들을
보호한다는 생각이 필수 아닐까 생각됩니다.

많은 분들이 소홀히 생각하시는 부분들이기에
저 또한 그냥 지나칠려다가 적절한 답변코멘트가 없는것 같아 시간 쪼개서 답변을 드린거고요
서로 오해가 없었으면 합니다.^^;
> 서로 오해가 없었으면 합니다.^^; 
오해라니요?!
천부당 만부당 하신 말씀입니다.

어차피 보안에 관한 부분이니,
일반 사용자가 요청이나 제어할 수 있는 방법을 언급하신 내용이
타 유저들에게는 상당히 도움이 될 만한 내용입니다.


-. 추신
혹시 90년대 중반(93~96년 경) 천리안에서
'강가딘'이란 닉네임으로 활동하시던 바로 그 '강가딘'님이 아니신지요?


오마나... 이러면 나이가...
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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