ubuntu-kr

우분투 한국 사용자 모임

환영합니다. 이곳은 우분투를 사랑하는 사람들의 위키입니다.
FAQFAQ   search찾기  member회원 목록  

 

이 페이지는 APM을 처음 사용하시는 분들을 위한 간단한 보안 내용입니다.

업로드 공간을 통한 php의 임의 실행 막기

파일공유를 위해 익명 사용자가 파일을 업로드 할 수 있는 공간을 만들었을 경우, 업로드를 하는 사람이 악의적인 코드를 php소스에 삽입해서 실행할 수도 있습니다.

이런 행위를 막기 위한 방법입니다. 가령 업로드가 되는 디렉토리를 /var/www/incoming 라고 한다면, /etc/apache2/httpd.conf 파일 안에 아래와 같이 코드를 넣으면 됩니다.

<Directory "/var/www/incoming">
	php_admin_flag engine off
</Directory>

이렇게 하면 php 소스가 실행되지 않습니다.

입력폼을 통한 임의 실행 막기

방명록이나 기타 텍스트 형식의 입력을 통해, 특정코드를 실행시킬 수도 있습니다.

가령 입력 이후에 입력된 내용을 보여주기 위해 출력할 때 ”(따옴표) 같은 것들을 통해 이후 실행될 html 코드를 무력화 시키면서 자바스크립트를 실행할 수도 있습니다.

이것을 막기 위해서는 php를 사용하신다면, $before_text 변수가 저장하고자 하는 문자라면, 아래와 같이 저장시 문자를 엔티티로 바꾸어 저장할 수 있습니다.

$after_text = htmlentities($before_text, ENT_QUOTES, "UTF-8");

이렇게 엔티티화 시켜 $after_text를 저장하면 됩니다.

파일과 디렉토리 권한

계정 홈페이지는 없고, root의 홈 하나만 있다는 가정으로 설명합니다.

이 때 http 웹상으로 접근 가능한 디렉토리는 /var/www/ 입니다.

클라이언트로 보내줄 html이나 PHP(CGI 같은 것들) 같은 파일의 소유자와 그룹은 각각 root이며, 권한은 644 입니다.

즉, 소유자와 그룹은 root로 같고, 소유자와 그룹에게는 “읽기, 쓰기” 권한을 주고, 나머지에게는 “읽기” 권한만을 줍니다.

가령 index.html 같은 경우를 보면,

-rw-r--r--  1 root root     9.8K 2009-08-30 23:46 index.html

이렇습니다.

그리고, 일반적으로 클라이언트에 보내줄 디렉토리의 경우는 실행권한을 덧붙여야 합니다. 파일과 마찬가지로 소유자와 그룹은 각각 root이고, 권한은 755입니다.

즉, 소유자와 그룹은 root로 같고, 소유자와 그룹에게는 “읽기, 쓰기, 실행” 권한을 주고, 나머지에게는 “읽기, 실행” 권한만을 줍니다.

가령 제 css 디렉토리를 보면,

drwxr-xr-x  2 root root     4.0K 2009-08-30 23:46 css

이렇습니다.

CGI를 이용할 경우, 가령 PHP를 통해 접근해서 수정을 하는 파일의 경우는 소유자는 root, 그룹은 www-data로 설정합니다.

그리고, 권한은 664입니다.

즉, 소유자는 root, 그룹은 www-data 이며, 소유자와 그룹에게는 “읽기, 쓰기” 권한을, 나머지는 “읽기 실행”만을 줍니다.

CGI를 통해 디렉토리를 접근해서 수정할 경우, 가령 업로드를 하는 디렉토리의 경우는 소유자는 root, 그룹은 www-data로 설정합니다.

그리고, 권한은 775를 줍니다.

즉, 소유자는 root, 그룹은 www-data 이며, 소유자와 그룹에게는 “읽기, 쓰기, 실행” 권한을, 나머지는 “읽기, 실행”만을 줍니다.

제 incoming 디렉토리는 이렇게 되어 있습니다.

drwxrwxr-x  2 root www-data  12K 2009-08-30 23:46 incoming
 
apm초보보안.txt · 마지막 수정: 2010/07/22 00:18 작성자 218.51.94.21
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :GNU Free Documentation License 1.3
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki