웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
php 의 보안 관련..
2003.03.08 23:45
이번일을 계기로 소잃고 외양간 고치는 격이 되어버렸네요 -_-;;
일단은 비누님께도 조언을 얻고, 제가 가진 책, 그리고 다른 해커여러분들의 조언
기타 문서들을 참고하여 원천 봉쇄를 위한 다음 방법을 생각해보게 되었습니다.
### 기타 웹공격에 대비한 passwd 유출방지
1. /etc/passwd 의 그룹유권을 www daemon 이 구동되는 권한을 user의 그룹으로 바꾼후
2. 퍼미션을 604 를 주어서 그룹에 속한사용자는 passwd 를 읽을수 없도록 한다.
이것은 apache(www 데몬)을 활용한 기타 파일열어보기에서도 passwd 의 유출을 삼가할수
있다. 중요한 것들의 소유권을 일일히 지정해야함.
일단 가장 기초적인 보안으로는
- 안전을 위해 시스템 패스워드 체계는 MD5,Shadow 를 사용한다 (pwconv 와 setup 에서 지정)
(대부분의 시스템은 기본적으로 shadow 를 쓰기때문에 큰 염려는 없지만.. 혹시나 하는 마음에^^
### php 를 이용할경우 base_dir 을 설정해 버림으로써 가상의 chroot 효과를 낸다
1. Virtual Host 설정파일을 연다.
2. php_admin_value open_basedir /home/USERID 를 추가한다.
3. 데몬을 리스타팅한다.
문제점은 /home/USERID 이외의 것을 로딩하지 못하는 것입니다.
일단은 저도 이방법으로 테스트중이지만 큰 문제점은 발견하지 못했습니다.
게시판에서 타 사이트의 그림을 로딩하거나 include 문에서 다른 사이트를 로딩하는것도
잘 됩니다.
문제점 발견하면 리포팅 바랍니다.
### chroot 를 이용한다
비추천입니다. 소스를 전부 패치해줘야하고.. 웹호스팅엔 적절치 않습니다.
### 프로그램 제작시 파일을 로딩하는 부분에서는 꼭 meta charactor 체크를 한다.
제로보드가 대표적인 경우입니다. 파일을 읽어오는부분에서 어느 case 에서나 파일을 로딩
하게 되는 경우기 때문입니다. 프로그램 제작당시부터 보안을 생각하면 될것같습니다.
뭐.. 그외방법은 잘 생각나지 않습니다. 저정도면 해결될것같네요.
2번째 방법을 일단 추천합니다.
일단은 비누님께도 조언을 얻고, 제가 가진 책, 그리고 다른 해커여러분들의 조언
기타 문서들을 참고하여 원천 봉쇄를 위한 다음 방법을 생각해보게 되었습니다.
### 기타 웹공격에 대비한 passwd 유출방지
1. /etc/passwd 의 그룹유권을 www daemon 이 구동되는 권한을 user의 그룹으로 바꾼후
2. 퍼미션을 604 를 주어서 그룹에 속한사용자는 passwd 를 읽을수 없도록 한다.
이것은 apache(www 데몬)을 활용한 기타 파일열어보기에서도 passwd 의 유출을 삼가할수
있다. 중요한 것들의 소유권을 일일히 지정해야함.
일단 가장 기초적인 보안으로는
- 안전을 위해 시스템 패스워드 체계는 MD5,Shadow 를 사용한다 (pwconv 와 setup 에서 지정)
(대부분의 시스템은 기본적으로 shadow 를 쓰기때문에 큰 염려는 없지만.. 혹시나 하는 마음에^^
### php 를 이용할경우 base_dir 을 설정해 버림으로써 가상의 chroot 효과를 낸다
1. Virtual Host 설정파일을 연다.
2. php_admin_value open_basedir /home/USERID 를 추가한다.
3. 데몬을 리스타팅한다.
문제점은 /home/USERID 이외의 것을 로딩하지 못하는 것입니다.
일단은 저도 이방법으로 테스트중이지만 큰 문제점은 발견하지 못했습니다.
게시판에서 타 사이트의 그림을 로딩하거나 include 문에서 다른 사이트를 로딩하는것도
잘 됩니다.
문제점 발견하면 리포팅 바랍니다.
### chroot 를 이용한다
비추천입니다. 소스를 전부 패치해줘야하고.. 웹호스팅엔 적절치 않습니다.
### 프로그램 제작시 파일을 로딩하는 부분에서는 꼭 meta charactor 체크를 한다.
제로보드가 대표적인 경우입니다. 파일을 읽어오는부분에서 어느 case 에서나 파일을 로딩
하게 되는 경우기 때문입니다. 프로그램 제작당시부터 보안을 생각하면 될것같습니다.
뭐.. 그외방법은 잘 생각나지 않습니다. 저정도면 해결될것같네요.
2번째 방법을 일단 추천합니다.
댓글 7
-
Dopesoul
2003.03.11 20:41
-
야호미
2003.03.09 16:55
그런게 한다면 파일 업로드 하는데 /tmp 부분 폴더를 사용 한는데 위에 처럼 설정을 하면 이 폴더 까지 접근 못하는거 아니가요... -
Dopesoul
2003.03.09 23:44
업로드하는데 /tmp 를 어떤보드가 이용하죠? 이용한다면야 지정해주면 돼죠 ㅡ.ㅡ 무슨문제라도? -
야호미
2003.03.10 00:06
php는 업로드 할때 임시 폴더 안에 임시 저장해다가 계정폴더 안에 업로드 하는 걸로 알고 있습니다.. -
야호미
2003.03.10 00:07
tmp 지정 하지 않을 경우 게시판 에서 파일 업로드 할떄 에러 나올거 같이 생각이 나네요.. -
비바람
2003.03.10 09:19
/tmp는 어떤 보드라도 이용하는 것으로 알고 있습니다.
php......... sess_...........
이런식으로 인한 임시저장소 이니까요....
만약 권한을 바꿔 버린다면... 파일, 글 업로드시에 에러가 생기죠....
저도 여길 어떻게 보완하는것이 낳은지 모르겠더군요... -
선장
2003.04.10 11:59
웹호스팅용 서버에서 유저편의와 보안, 둘을 조율하는게 쉽지 않죠.
chroot 를 쓰실려면 jail 관련쪽으로 알아보시는게 편하실 겁니다.
Seperator 는 : 입니다. 구분자를 쓰셔서 /tmp 도 같이 지정하시면 그만입니다.
아직 용법을 설명하지 않아 그런것같군요.