인터넷으로 홈페이지를 접속하면, 기본적으로 홈 디렉토리 내의 Index.html 파일을 보여주게 됩니다.
아파치 설정 파일(httpd.conf) 파일에 아래와 같이 DirectoryIndex 설정이 아래와 같이 되어 있기 때문입니다.
아래와 같이 설정이 되어 있는 경우, 도메인으로 접속시에 홈 디렉토리내의 Index.html 파일을 출력하며, Index.html 파일이 존재하지 않는 경우 index.htm -> index.php의 순서로 찾아서 출력하게 됩니다. 만약 홈 디렉토리내의 main.html파일로 홈페이지가 뜨게 하려면, 아래의 DirectoryIndex 부분을 main.html 로 변경하면 되겠죠.?? ^^
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>
웹브라우저에서 디렉토리 리스트가 보이게 되는 경우는 아래와 같이 가상호스트 디렉토리의 Options 부분에 Indexes 설정이 되어 있는 경우에 홈 디렉토리의 리스트가 출력되게 됩니다.
단, 모든 경우에 디렉토리의 리스트가 출력되는것이 아니라, 위의 DirectoryIndex 부분에 설정된 index.html index.htm index.php 파일이 모두 존재 하지 않을때에만, 디렉토리 리스트가 출력되게 됩니다.
<Directory "/home/*/public_html">
~
Options Indexes FollowSymLinks
~
</Directory>
index 파일이 없을때 디렉토리 리스트가 뜨지않고 에러페이지를 출력하게 하려면, 아래와 같이 Options 부분의 Indexes를 삭제하고 아파치 데몬을 리스타트 하면 됩니다.
<Directory "/home/*/public_html">
~
Options FollowSymLinks
~
</Directory>
Apache 보안
장마가 끝나고 무더위가 우리들을 괴롭히는 시기가 도래했습니다. 보안 관리자 여러분, 이 무더위에 속에서 짜증내지 마시고 에어컨 앞에서 시원한 얼음과자 드시면서 더위를 달래 보시기 바랍니다.
매달 연이은 기사 원고 청탁(?)에 이젠 자원이 고갈이 나고 있는 상태입니다만 제가 알고 있는 또는 가지고 있는 자료에서 뽑은 짤막한 Apache 설정 보안 팁을 여러분을 위해 풀어 놓겠습니다.
1. ServerToken 설정 변경에 따른 Apache 버전 head 정보
ServerToken 설정에는 다음과 같은 옵션이 있습니다.
[Full | OS | Minor | Minimal | Major | Prod]
각 옵션 별 어떻게 표시가 되는지 알아 보도록 하겠습니다.
- Full
Server: Apache/2.0.54 (Unix)
- OS
Server: Apache/2.0.54 (Unix)
- Minor
Server: Apache/2.0
- Mnimal
Server: Apache/2.0.54
- Major
Server: Apache/2
- Prod
Server: Apache
보안상 더 좋은 방법은 소스를 수정해서 정보를 아예 유출되지 않도록 하는 것이 더 좋겠습니다. 하지만, 대부분 관리자들은 RPM으로 설치를 하시는 경우가 많기 때문에 소스 수정에 대한 부분은 언급하지 않겠습니다.
2. 특정 디렉토리 접근 제한
이전 기사에 관리자 웹 페이지 접근 방법에 대하여 짧게 설명한 적이 있습니다. 포트를 달리하고 방화벽에서 특정 사용자만이 접근하도록 설정하는 것이 좋다고 여러분에게 이야기 하였습니다. 그런데, 방화벽이 없다면 어찌해야 좋은가? 그 방법이 아래 예시가 되겠습니다.
물론, 이 방법 또한 일반 웹 페이지에 의해서 침해 사고를 당했을 경우엔 무용지물이 되겠습니다. 그러나, 그냥 내버려 두는 것 보다는 더 안전하다는 것입니다.
[예]
SetHandler test <- 제한 할 디렉토리 기재(/는 빼야 함)
Order deny,allow
Deny from all
Allow from 192.168.100.15 <- 접근 할 IP 기재
3. 디렉토리 인덱싱 없애기
의외로 많은 웹 사이트가 디렉토리 인덱싱을 사용하고 있습니다. 전월 기사에서 알려 드린 방법으로 찾아 보셨으면 많은 웹 사이트가 디렉토리 인덱싱을 사용하고 있다는 것을 알아 차렸을 것입니다. 디렉토리 인덱싱을 사용하게 되면 웹 사이트 구조를 알게 되고 중요 파일에 대한 정보를 유출 시킬 수 있으므로 사용이 불필요하다면 반드시 디렉토리 인덱싱 사용을 중지 하시기 바랍니다.
Options Indexes, … Indexes 삭제
…
/Directory>
지난달에 이어 짤막한 apache 설정에 대한 보안 팁을 제공하도록 하겠습니다. 여러분에 많은 도움이 되길 바라지는 않지만 조금이나마 도움이 되었으면 합니다.
1. 심볼릭 링크
심볼릭 링크를 이용하여 기존의 웹 문서 외에 다른 파일 시스템에 접근 가능합니다. 편리성을 제공하기는 하지만 심각한 보안 문제를 야기 시킬 수 있습니다. 예를 들어 /etc/ 디렉토리를 링크를 걸어 놓았다면 /etc/passwd 파일의 사용자 계정 정보를 획득 할 수 있습니다.
“Options”지시어에서 심볼릭 링크를 가능하게 하는 옵션인 “FollowSymLinks’를 제거하면 막을 수 있습니다.
< Directory / >
Options FollowSymLinks ← 제거
AllowOverride None
< / Directory >
2. SSI(Server Side Includes)
SSI는 보안상 몇 가지 잠재적인 보안위험이 있습니다. 서버의 부하를 늘리며 일반적인 CGI 스크립트와 동일한 위험을 가집니다. SSI 파일에서 “exec 층”를 사용하면 httpd.conf에서 아파치를 실행하도록 설정한 사용자와 그룹 권한으로 CGI 스크립트나 프로그램을 실행할 수 있습니다.
SSI페이지가 스크립트나 프로그램을 실행하지 못하도록 하기 위하여 “Options” 지시어에서 “Includes” 대신 “IncludesNOEXEC”를 사용하면 됩니다.
< Directory / >
Options IncludesNOEXEC ← 추가
AllowOverride None
< / Directory>
3. Apache와 Tomcat 연동
Apache와 Tomcat이 root를 공유하게 디면 WEB-INF/web.xml와 WEB-INF/classes 아래에 있는 java 파일과 class파일이 노출될 위험이 있으며 파일명만 알아내면 소스 파일을 가져갈 수 있습니다. 따라서, 이를 방지하기 위해서는 apache의 httpd.conf에 다음과 같이 추가 해주어야 합니다.
< Location /WEB-INF >
SetHandler WEB-INF
Order deny,allow
Deny from all
< / Location >
이제 선선한 바람이 불어오는 가을입니다. 덥지 않아서 좋기는 하지만 감기 걸리기에 그만인 날씨죠. 여러분 모두 감기 조심하세요.
Robot.txt
로봇이 http://kw1993.egloos.com/ 과 같은 웹 싸이트를 방문하면, 먼저 http://kw1993.egloos.com/robots.txt 파일을 호출한다.
robot.txt 파일이 발견되면 파일을 읽어 그 내용을 분석한다.
로봇에 접근 권한 및 접근 가능한 경로에 대한 정보로 자신이 수집해도 되는 콘텐트만을 수집 하게 된다.
한 사이트에는 하나의 "robots.txt" 를 루트에 가질 수 있다.
로봇은 하위 디렉토리에서 이 파일을 검색하지 않는 것을 원칙으로 한다.
이 때문에 robots.txt 파일은 꼭 웹사이트의 루트에 생성해야 한다.
uri는 대소문자 구별하고, "robots.txt" 파일이름은 모두 소문자로 작성해야 하며. 파일명에 공백은 허용되지 않는다.
robot.txt 파일에 아래와 같이 되어있다면 해당 url에 대하여 모든 로봇에 대해 모든 경로에 접근을 차단한다는 내용이다.
user-agent: * # 모든 로봇(robot)들에 적용
disallow: / # 모든 페이지들의 색인(indexing) 금지
user-agent : 접근을 허용하지 않을 로봇을 설정 한다.
disallow : 허용하지 않을"disallow"를 빈 값으로 설정 할 경우, 모든 하위 경로에 대한 접근이 가능하다.
robots.txt 화일에는 최소한 한개의 "disallow" 필드(field)가 존재해야 한다.
disallow: /help # /help.html과 /help/index.html 둘 다 허용 안함
disallow: /help/ # /help/index.html는 허용 안하나, /help.html은 허용 됨.
페이지 차단하기
특정 파일 확장자를 차단 하는 방법은 robot.txt 파일에 아래와 같은 내용을 추가 하면된다.
Disallow: /*.xml$ # 루트 하위에 있는 xml 확장자를 가진 모든 파일의 색인을 거부한다.
Disallow: /test.html? # 루트에 text.html 과 ?가 포함된 파일의 색인을 거부한다.
항목에 대해 설정 한다.
기본적인 사항들은 많은 카페/블로그에서 더 상세한 정보를 제공하고 있는 것 같습니다. XGI 카페에서 다루는 내용은 XGI 및 홈페이지 제작으로 차별화하고 기타 내용은 기본적인 사항만 간단하게 언급하고 지나가도록 하겠습니다.
주로 웹호스팅을 사용하고 있기 때문에 리눅스에서 기본적으로 사용하는 웹서버인 아파치를 설정하실 일이 없을 것 입니다. 하지만 필요하신 분들도 있을 것이고 기본적으로 어떤 설정에 의하여 웹서버가 구동되는지 기본적인 것이나마 알아 두시면 도움이 될 것 같습니다.
좀더 자세한 것은 검색해 보시면 너무나 많은 자료가 있음을 아실 것입니다. 참고 하시고요.
아래 자료는 [펌]자료입니다.
출처는 모르겠네요. 처음 자료를 쓰신 분께 감사
HOW-TO Configuration httpd.conf(apache)
ServerType Standalone
# 서버 타입을 설정하는 지시자 이다.
# ServerType 에서 설정할 수 있는 것은 Standalone 과 inetd 두가지 설정이 있다.
※ 윈도우 환경에서는 standalone type만 지원이 됩니다.
▶ inetd Type
클라이언트의 요청이 있을 때 마다 httpd가 구동되어 클라이언트의 요청을 처리한 후 종료하는 방법이죠... 이런 동작 방식은 느리지만 접속이 적은 사이트라면 서버의 자원 사용을 최소화 합니다.
▶ standalone
기본 설정으로 몇개의 httpd를 미리 가동시켜서 사용자의 요청을 기다리죠... 때문에 많은 클라이언트가 빈번하게 요청하는 경우 빠르게 요구를 처리할 수 있습니다.
ServerRoot /usr/local/apache
# 아파치 서버의 루트 디렉토리를 설정한다.(아파치 서버가 설치된 디렉토리)
PidFile /usr/local/apache/logs/httpd.pid
# 아파치가 실행될 때 생성되는 httpd.pid 파일이 생성될 경로를 지정한다.
PID는 Process ID로 리눅스상에서 사용되는 모든 프로그램은 고유의 ID번호를 가지고 있습니다.
아파치 종료시 PID파일을 참조하게 됩니다.
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
#부모 프로세스가 자식 프로세스와 의사 소통을 할 때 사용되는 지시자와 그 파일을 지정한다.
Timeout 300
# 클라이언트에서 요청이 들어오고 처리를 완료할 때까지의 시간을 설정합니다. 시간단위는 초입니다.
Timeout은 클라이언트에서 서버로 접속할 때 클라이언트나 서버의 통신장애로 인해 300초 동안 클라이언트에서 완벽한 처리를 하지 못할 때 클라이언트와의 연결을 해제한다.
KeepAlive On
# 서버와의 지속적인 연결을 하도록 설정되어 있다. 즉 한번의 연결에 대해 한번의 요청만 처리하는 것이 아니라 또 다른 요청을 기다리게 된다. 하지만 지속적인 연결 시간은 KeepAliveTimeout 값에 설정한 만큼 유지된다. KeepAlive를 Off로 설정하게 되면 클라이언트로 부터 한번의 요청을 받은 후 바로 접속을 해제한다. 특별한 경우가 아니라면 On 상태로 유지하는 것이 좋다.
MaxKeepAliveRequests 100
# KeepAlive 상태에서 처리할 최대 요청 처리 건수를 설정한다.
# 보통의 웹 사이트에서는 설정값 100으로 충분하다.
KeepAliveTimeout 15
# KeepAlive 설정을 on으로 했을 경우에 아파치 서버가 얼마동안 클라이언트의 다음 요청을 기다리고 있는지 설정합니다. 초단위로 설정합니다.
MinSpareServers 5
# 아파치가 실행될 때 최소 예비 프로세스(httpd) 수를 설정한다. 이 값에 의해 현재 nobody 소유의 아파치 프로세스가 5보다 작을 경우 자동으로 부족한 만큼의 아파치 프로세스 생성한다.
# 8 정도 설정하는 것이 적당하다.
MaxSpareServers 10
# 아파치가 실행될 때 최대 예비 프로세스(httpd) 수를 설정한다. 이 값에 의해 현재 nobody 소유의 아파치 프로세스가 10보다 클 경우 불필요한 프로세스를 제거한다.
# 20 정도 설정하는 것이 적당하다.
StartServers 5
# 아파치가 실행될 때 생성 시키는 자식 프로세스 수이다.
하 지만 이 값이 MinSpareServers 값보다 작을 경우 아파치 실행 후에 바로 MinSpareServers 의 설정만큼 생성하기 때문에 아무런 의미가 없게 된다. StartServer 값과 MinSpareServers 값은 같은 값을 설정하는것이 바람직하다.
MaxClients 150
# 아파치 서버의 동시 접속자 수를 정의한다.
최대 값은 256이다.
256 이상의 값을 설정하고 싶을 때는 아파치 소스의 httpd.h 헤어 파일의 HARD_SERVER_LIMIT 부분을 수정하고 아파치를 다시 컴파일 해야 된다.
MaxRequestsPerChild 0
# 아파치의 자식 프로세스가 처리할 수 있는 최대 요청 처리 건수를 설정한다.
0 은 무제한을 뜻한다.
Listen
서 버의 어떤 포트에서 클라이언트의 요청에 응답하는지를 설정합니다. Listen은 중복해서 사용할 수 있으며 이를 이용해서 Port Based Virtual Host를 지정할 수 있습니다. 또한 Listen지시자는 Port이외에도 IP주소나 IP주소와 포트에서의 사용자 요청에 응답하도록 설정할 수 있습니다.
Listen 80
Listen 8080
Listen 192.168.1.1:80
Listen 192.168.1.1:8080
BindAddress *
# 가상 호스트를 지워한다. 기본적으로 주석 처리 되어 있지만 실제로는 가상 호스트에 영향을 주지 않았다.
Port 80
# 아파치가 사용할 기본 포트를 지정한다.
User nobody
Group nobody
# 자식 프로세스가 생성될 때 그 프로세스의 소유자와 소유그룹을 결정한다.
# 보안상 절대 root 로 설정하는 일은 없도록 한다.
ServerAdmin yunisj@apmtip.com
# 아파치 서버 관리자 e-mail을 설정하는 부분이다.
ServerName apmtip.com
# 아파치 서버가 작동중인 서버 이름을 설정한다. 기본적으로 주석 처리 되어 있다.
도메인이 아닌 IP 주소로 사용자의 홈페이지에 접속할 때 URL 끝에 /를 붙여야 접속이 되는 경우가 있는데 이럴 경우 ServerName 지시자에 주석을 제거 하고 아이피 주소를 설정해 주면 된다.
DocumentRoot "/usr/local/apache/htdocs"
아파치의 웹 문서들의 루트 디렉토리를 지정한다.
아래 부터 디렉토리 제어이다. Directory 구문에 대한 자세한 설명은 아래에 있다.
시스템 루트( / ) 디렉토리에 대한 제어
Options FollowSymLinks
AllowOverride None
# /usr/local/apache/htdocs 디렉토리에 대한 제어
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
# 사용자 홈 디렉토리인 public_html 디렉토리에 대한 제어
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
Order deny,allow
Deny from all
###################################################################
# 디렉토리 제어와 관련된 설정과 옵션 설 명 #
###################################################################
디렉토리 제어문의 시작은 로 시작해서 로 끝난다.
# -->> Options(옵션) 설명 ;
옵션 구문은 Options 라는 키워드로 시작된다.
FollowSymLinks : 실볼릭 링크를 허용한다.
SymLinksIfOwnerMatch : 링크를 허용하지만 링크 하고자 하는 사용자의 소유로 되어 있는 것만 링크 가능하다.
ExecCGI : CGI 실행을 허용한다.
Includes : SSI를 허용한다.
IncludesNOEXEC : SSI를 허용하지만 "#exec" 와 "include"로 정의한 CGI 실행은 거부한다.
Indexes : 웹 서버의 디렉토리에 접근 했을 때 DirectoryIndex 지시자로 설정한 파일이 없을 경우 디렉토리안의 파일 목록을 보여준다.
MultiViews : 클라이언트의 요청에 따라 적절하게 페이지를 보여준다. 쉽게 생각하면 HTTP 헤드 정보가 Accept-Language:ko 라면 Korea 언어에 맞게 데이터를 클라이언트에 전송한다.
None : 모든 설정을 부정한다.
All : MultiViews를 제외한 옵션을 의미한다.
# -->>AllowOverride 설명
AllowOverride는 클라이언트의 디렉토리 접근 제어에 관한 설정이다.
AllowOverride 는 AccessFileName 지시자와 밀접한 관계를 가지고 있다.
아래의 각 설정값들은 AccessFileName 지시자에서 설정한 파일에 적용된다.
None : AllowOverride를 off 한다는 것이다.
All : AccessFileName 지시자로 설정한 파일에 대해 민감하게 반응한다. 모든 지시자를 사용할 수 있다.
AuthConfig : AccessFileName 지시자에 명시한 파일에 대해서 사용자 인증 지시자 사용을 허락한다.
--> AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require등을 사용할 수 있다.
FileInfo : AccessFileName 지시자로 설정한 파일에 대해서 문서 유형을 제어하는 지시자 사용을 허락한다.
--> AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority등을 사용할 수 있다.
Indexes: AccessFileName 지시자로 설정한 파일에 대해서 디렉토리 Indexing을 제어하는 지시자 사용을 허락한다.
--> AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOpions, ReadmeName등을 사용할 수 있다.
Limit : AccessFileName 지시자로 설정한 파일에 대해서 호스트 접근을 제어하는 지시자 사용을 허락한다.
--> Allow, Deny, order 등을 사용할 수 있다.
Options : AccessFileName 지시자에 명시한 파일에 대해서 Options 그리고 XBiHack 등과 같은 지시자 사용을 허락한다.
--> Options, XBitHack등을 사용할 수 있다.
AloowOverride와 AccessFileName에 설정한 파일을 이용해서 아파치 인증 기능을 사용할 수 있다.
아파치 인증에 관한 자세한 설명은 "http://rootman.co.kr의 아파치 인증" 강좌를 참고하길 바란다.
####################################################################
DirectoryIndex index.html
# 파일 이름을 명시하지 않고 디렉토리에 접근할 경우 자동으로 보여줄 파일 이름을 설정한다.
# 여러개의 파일 이름을 설정할 수 있다. 파일 이름에 대한 구분은 Space 키, 즉 빈 공간으로 구분한다.
AccessFileName .htaccess
# 특정 디렉토리의 접근 제어를 할 파일 이름을 정의한다.
# 단, 해당 디렉토리의 AllowOverride 에서 None으로 설정되어 있지 않아야 된다.
# 자세한 설명은 "아파치 인증" 강좌 참고
CacheNegotiatedDocs
# 프록시 서버에 문서를 캐시하도록 설정한다. 기본적으로 주석 처리 되어 있다.
HostnameLookup Off
# 아파치의 로그 파일에는 기본적으로 클라이언트의 IP 주소 정보가 기록되는데 이 설정을 On 하면 호스트 네임(도메인)
# 이 기록된다. 하지만 DNS 질의를 해야 되므로 속도가 느리다는 단점이 있다.
# 그냥 Off로 사용하는것을 추천한다.
ErrorLog /usr/local/apache/logs/error_log
# 아파치 서버 접속 에러 로그를 기록할 결로와 파일 이름을 설정한다.
LogLevel warn
# 에러 로그 내용의 레벨을 설정한다.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# 사용자 접속을 기록할 로그 포멧을 정의한 부분이다. 위와 같이 4가지 형식의 로그 포멧이 기본적으로 설정되어 있다.
common : 가장 일반적인 로그 기록
referer : 현재 아파치 서버에 접속하기 전에 머물렀던 URL으 기록한다.
agent : 접속자의 웹 브라우저(OS 포함) 종류를 기록한다.
combined : 위의 3가지 로그 포멧을 모두 조합한 것이다.
접속자에 대한 많은 정보를 기록하길 원한다면 combined으로 설정하면 된다.
# %h %I 등과 같은 아파치 로그 포멧을 알고 싶으면 아파치 메뉴얼를 참고 하기 바란다.
CustomLog /usr/local/apache/logs/access_log common
# 로그 파일의 경로와 파일 이름, 그리고 로그의 포맷을 설정한다.
# common 이외에 위에서 정의한 로그 포멧을 지정할 수 있다.
ServerSignature On
# apache 서버가 생성하는 Error 페이지와 Ftp 디렉토리 목록, mod_status, mod_info 등에 apache 서버 버젼과 가상 호스트
# 네임을 추가적으로 표시해 준다.(On 설정시) Email 설정시 ServerAdmin의 E-mail 주소를 페이지에 링크해 준다.
# On, Off, Email을 설정해서 사용할 수 있다.
Alias /icons/ "/usr/local/apache/icons/"
# 특정 디렉토리를 alias 한다. 위의 경우는 /usr/local/apache/icons/ 디렉토리를 icons 라는 이름으로 alias 한것이다
# icons 디렉토리 앞의 /(슬래쉬)는 DocumentRoot를 의미한다.
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
# Alias와 같은 형식이고 실행할 스크립트 디렉토리를 alias할 때 사용한다.
Redirect old-URL new-URL
# old-URL을 new-URL로 코딩해준다. 하지만 HTML태그로 위의 기능을 대신할 수 있기때문에 사용할 일이 거의 없을것이다.
IndexOptions Fancy Indexing
# 디렉토리에 DirectoryIndex에 설정된 파일명이 없을경우 아파치서버는 디렉토리목록을 보여주는데 Fancy Indexing을 설정할 경우 파일의 크기, 생성날짜 등을 같이 출력해준다.
DefaultIcon /icons/unknown.gif
# 아이콘이 설정되어 있지 않은 파일 확장자들의 아이콘을 대신한다
AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive" .tgz
# 아파치가 디렉토리 목록을 보여줄 경우 파일 확장자에 대해 간략한 설명을 할 수 있게 한다. 단, IndexOptions에서 FancyIndexing이 적용되어 있어야 된다.
ReadmeName README
HeaderName HEADER
# 아파치가 디렉토리가 목록을 보여줄 경우 페이지 위(HEADER)와 아래(README)에 추가로 출력할 텍스트들을 설정할 수 있다.
# 각 디렉토리에 README, HEADER 라는 이름으로 텍스트 파일을 만들면 된다.
ErrorDocument 500 "The server made a boo bo"
ErrorDocument 404 /missing.html
ErrorDocument 402 http://some.other_server.com/subscription_info.html
# 클라이언트의 요구에 의해 발생하는 아파치 서버의 에러페이지에 출력할 텍스트나 문서를 정의할 수 있다.
각 페이지는 에러 코드별로 설정할 수 있으며 외부의 URL을 지정할 수도 있다.
문자열을 설정을 경우네는 " "안에 문자열을 설정하면 되고 내부 html 문서를 지정해줄 경우에는 문서의 경로를 지정해 주면 된다. 단, (/)최상위 경로는 DocumentRoot를 의미한다.
SetHandler server-status
Order deny,allow
Deny from all
Allow from .your_domain.com
SetHandler server-info
Order deny,allow
Deny from all
Allow from .your_domain.com
# 위의 설정을 함으로써 웹 브라우저에서 아파치 서버의 상태와 정보를 볼수 있다. 보안상 특정 호스트에서만 볼 수 있게 설정할 수 있으며 기본적으로 주석 처리되어 있다.
Deny from all
ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
# 아파치 1.1 이전 버젼의 버그를 악용하는 경우가 있는데 이 설정에 해 두면 이러한 공격을 phf.apache.org의 로깅 스키립트로 리다이렉트 시켜준다. 요즘은 필요없는 설정이고 위의 URL에 cgi스크립트가 존재하지도 않는다.
DefaultType text/plain
아파치가 처리할 기본 문서들을 정의한다. 위의 설정은 html과 text 파일을 포함시킨 것이다.
위의 설정 때문에 text 파일도 웹 브라우저에 표시해 줄수 있는 것이다.
댓글