디렉토리 보안설정
Apache에서 아래와 같이, Deny from all설정으로 모든 디렉토리가 막혀있다.
이는 다른 설정없이 호출시, Fobbiden 오류가 발생하게 된다.
==============================
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
==============================
Options
: 지정한 디렉토리이하에 모든 파일과 디렉토리들에 적용할 접근제어를 설정함. 즉 디렉토리를 보여줄 것인가? CGI를 허용할 것인가? SSI를 허용할 것인가? 등의 설정을 여기서 하게 된다.
None
모든 허용을 하지 않음. 즉, None설정으로 이외의 다른 설정들은 모두 무시
All
MultiViews 를 제외한 모든 옵션설정을 허용
Indexes
디렉토리 접근시에 DirectoryIndex에서 지정한 파일(index.html 또는 index.htm 등)이 존재할 경우에 디렉토리내의 파일목록리스트를 웹브라우저로 보여준다. 웹서버 보안을 위해 사용하지 않는 것이 좋다.
Includes
SSI 사용을 허용하는 설정. 단, mod_include.c 모듈이 아파치웹서버에 로딩되어 있어야 함. 거의 대부분이 기본 설정으로 되어 있음. 확인법은 "httpd -l"
IncludesNOEXEC
SSI사용은 허용되지만 #exec 사용과 #include는 허용되지 않는다. 즉, SSI를 사용하면서 시스템에 위험한 SSI의 실행태그는 허용하지 않겠다는 설정
FollowSymlinks
심볼의 링크를 허용한다. 이 옵션을 지정하면 웹브라우저에서 링크파일의 경로까지도 확인할 수 있게 된다. 보안상 이 값은 설정하지 않는 것이 좋다.
ExecCGI
perl 등과 같은 CGI실행을 허용하기 위한 설정이다. 원래 아파치에서 CGI사용은 ScriptAlias로 지정된 위치에서 사용하는 것이 기본이다. 하지만 ScriptAlias가 지정되지 않은 디렉토리에 이 옵션이 지정되어 있다면 지정된 디렉토리내에서는 CGI 사용이 허용된다. 물론 이 경우에도 "AddHandler cgi-script" 지시자에서 정의한 확장자만 유효하다. 참고로 perl 등의 CGI실행이 안될 경우에는 ExecCGI값이 설정 되어 있나를 확인해 봐야 한다. 이 설정이 않되어 있다면 해당 디렉토리내에서는 CGI의 실행이 허용되지 않기 때문이다.
MultiViews
웹브라우저의 요청에 따라 적절한 페이지로 보여준다. 웹브라우저의 종류나 웹문서의 종류에 따라서 가장 적합한 페이지를 보여줄 수 있도록 하는 설정이다.
AllowOverride
: 어떻게 접근을 허락할 것인가에 대한 설정.
None
AccessFileName에 지정된 파일을 엑세스 인증파일로 인식하지 않는다. 즉, AccessFileName 의 값이 대부분 .htaccess 이므로 이를 무시하게 된다는 의미가 된다. 즉 이 파일을 무시하기 때문에 새로운 접근 인증박싱을 Override하지 않는다. 대부분ㅇ 보아이나 중요한 디렉토리에서 사용할 수 있는 것으로 아주 제한적인 접근만을 허용하고자 할 때에 사용하는 값이다.
All
이전의 인증방식에 대하여 새로운 접근인증방식을 우선적용하도록 Override를 허용한다.
AuthConfig
AccessFileName 지시자에 명시한 파일(거의 대부분은 .htaccess)에 대하여 AuthDBMgroupFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require 등과 같은 클라이언트 인증지시자의 사용을 허용한다. 즉 htpasswd 유틸리티를 이용하여 특정 디렉토리의 접근은 AccessFileName에 명시한 파일(대부분은 .htaceess)로 제어하고자 할 때에 (이를 "디렉토리 인증설정"이라고 함) 해당 디렉토리내에 이 값을 주로 사용한다.
FileInfo
AccessFileName지시자에 명시한 파일(거의 대부분은 .htaccess)에 대하여 AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority 등과 같은 문서유형을 제어하는 지시자 사용을 허용한다.
Indexes
AccessFileName 지시자에 명시한 파일(대부분 .htaccess파일)에 대하여 AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName 등과 같은 디렉토리 Indexing을 제어하는 지시자 사용을 허용한다.
Limit
AccessFileName 지시자에 명시한 파일(대부분 .htaccess파일)에 대하여 allow, deny, 그리고 order 등과 같은 호스트 접근을 제어하는 지시자 사용을 허용한다.
Options
AccessFileName 지시자에 명시한 파일(대부분 .htaccess파일)에 대하여 Options 그리고 XBitHack등과 같은 특정 디렉토리 옵션을 제어하는 지시자 사용을 허용한다.
쓰고자 하는 디렉토리는 아래와 같이,
설정을 해야 정상적으로 호출을 할 수 있다.
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Directory "C:/webapps/app1">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
<Directory "C:/webapps/app2">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
출처: http://mcpaint.tistory.com/133 [MC빼인트와 함께]