body start
JSBoard
Project News
- News
- Activity
- Wiki Status
- No items were found
Project Info
- Development Status: Stable
- License: GPL v2
- Operating System: Linux, Other OS
- Programming Language: PHP
- Topic: Application SW
- User Interface: Web Interface
- Member count : 2
- Registered: : 2003.01.03
- Activity Percentile: : 96.85%
1 Upload Directory 제한 ¶
보통 CGI 방식을 통한 upload 에 관련하여 보안문제가 많이 발생을 하고 있다. 하지만 단순히 CGI 의 코드만 의존하여 보안문제를 방지 한다는 것은 무리라고 생각이 되어 apache의 설정 file 에서 원천적으로 업로드 file 에 대해서 실행이 되지 않도록 하는 설정을 적용 시켜 보았다. 현재 필자의 개인 서버와 kldp server에서 적용이 되어 있으며 특히 호스팅서버와 같이 여러 계정들이 사용을 하는 경우에 JSBoard 를 사용할수도 있기 때문에 이 셋팅을 해 놓는 것을 권장한다.
설정은 다음과 같이 할수 있다.
<DirectoryMatch "^/.*/jsboard/data"> AddType application/x-httpd-php3-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins ErrorDocument 403 http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403 <Files ~ ".*\.ph$"> Order allow,deny Deny from all </Files> </DirectoryMatch>
이 설정의 의미는 jsboard/data라는 디렉토리 아래에 있는 어떠한 경로의 data라는 이름의 디렉토리에서 .phps .php .ph .php3 .cgi .vbs .ins .sh .pl .htm .html .shtml 의 확장자를 가지고 있으면 source 를 출력하라는 의미이며 주의 할것은 여기에 패스워드 같은 것이 들어가 있는 source 를 올려 놓으면 안된다는 것을 주의해야 한다. 위의 경로는 게시판 디렉토리 이름을 어떻게 하느냐에 따라 수정을 해 줘야 한다.
또한 data 라는 이름의 디렉토리 아래로 .ph로 직접 접근할 경우에는 http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403 페이지를 출력 하라는 의미이다.
이 설정은 root 의 권한만 가지고 있으면 누구나 다 설정을 해 주는 것이 좋으며 만약 계정 유저들이라고 해도 서버 관리자에게 이 설정을 해 달라고 하는 것이 좋다. 이 설정을 안해서 좋을것이 하나도 없을테니 아마 다 해줄 것이다.
2 DB 암호 관리 ¶
계정 유저들의 경우에는 db 의 password 를 가지고 있는 file을 보호하기 위한 것을 설명한다. 즉 다른 유저가 db 의 패스워드를 볼수 없도록 하기 위한 것으로 이
부분은 root(서버 관리자) 가 해 주어야 할 부분이다. 만약 이것이 불가능 하다면 이 파일들의 권한을 606 으로 그냥 두면 된다. 즉,
- jsbaord/config/global.php,
- jsboard/config/spma_list.php,
$ chgrp nobody jsboard/config/global.php (root가 실행해야 하는 명령) $ chgrp nobody jsboard/config/spam_list.txt (root가 실행해야 하는 명령)
명령을 실행해 달라고 해야 한다. 이를 시행하면 아래와 같이 소유권을 가지게 된다. 이것은 account 를 실행한 후에 행할 일들이다. (Debian의 경우에는 nobody가 아니라 www-data가 되어야 한다. Redhat/CentOS/Fedora 의 경우에는 apache 이다.)
-rw-rw---- accountname nobody config/global.php -rw-rw---- accountname nobody config/spam_list.txt
만약 root 가 이를 응하지 않거나 또는 불성실한 root 라면 다음과 같이
$ chmod 606 config/global.php $ chmod 606 config/spam_list.txt
을 실행하고, 퍼미션은 다음과 같이 된다.
-rw----rw- accountname accountname config/global.php -rw----rw- accountname accountname config/spam_list.txt
하지만 이렇게 했을 경우 운영은 가능하나 보안상 좋지는 않다. 그리고 주의 할것은 account user 의 권한으로 설치 시에는 보안의 문제성이 대두될 수 있으니 home directory의 권한을 꼭 711로 해야한다.


