|
우분투 한국 사용자 모임환영합니다. 이곳은 우분투를 사랑하는 사람들의 위키입니다. |
|
이 페이지는 APM을 처음 사용하시는 분들을 위한 간단한 보안 내용입니다.
파일공유를 위해 익명 사용자가 파일을 업로드 할 수 있는 공간을 만들었을 경우, 업로드를 하는 사람이 악의적인 코드를 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