RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
출처 블로그 > 나의 블로그
원본 http://blog.naver.com/judas3/21801722

PHP를 아파치 모듈로 실행

PHP를 아파치 모듈로 사용할 때, 아파치 환경 설정 파일(예. httpd.conf)과 .htaccess 파일("AllowOverride Options"이나 "AllowOverride All" 권한이 필요합니다)을 이용해서 환경 설정을 변경할 수 있습니다.


PHP 4.0에서는, 아파치 환경 설정 파일에서 PHP 설정을 변경할 수 있게 하는 몇가지 아파치 설정이 존재합니다. 가능한 설정 목록은 ini_set() 문서에 있는 테이블의 PHP_INI_ALL, PHP_INI_PERDIR, PHP_INI_SYSTEM을 참고하십시오.


참고: PHP 3.0에서는, php3.ini 이름에 각각 대응하는 "php3_"를 붙여서 사용할 수 있는 아파치 설정이 존재합니다.


php_value 이름 값

특정한 설정값을 설정합니다. PHP_INI_ALL과 PHP_INI_PERDIR형 지시자에만 사용할 수 있습니다. 기존 설정값을 제거하기 위해서는 값을 none로 설정하십시오.


참고: boolean 값을 설정하기 위해서 php_value를 사용하지 마십시오. 대신, php_flag(아래를 참고)를 사용해야만 합니다.


php_flag 이름 on|off

Boolean 환경 설정에 사용합니다. PHP_INI_ALL과 PHP_INI_PERDIR형 지시자에만 사용할 수 있습니다.


php_admin_value 이름 값

특정한 설정값을 설정합니다. .htaccess 파일에서는 사용할 수 없습니다. php_admin_value의 설정값은 .htaccess나 버추얼 호스트 설정으로 바꿀 수 없습니다. 기존 설정값을 제거하기 위해서는 값을 none로 설정하십시오.


php_admin_flag 이름 on|off

Boolean 환경 설정에 사용합니다. php_admin_flag의 설정값은 .htaccess나 버추얼 호스트 설정으로 바꿀 수 없습니다. 기존 설정값을 제거하기 위해서는 값을 none로 설정하십시오.


예 4-2. 아파치 환경 설정 예제


<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
  php3_include_path ".:/usr/local/lib/php"
  php3_safe_mode on
</IfModule>

경고

PHP 상수는 PHP 외부에서는 존재하지 않습니다. 예를 들면, httpd.conf에서는 error_reporting을 설정하기 위해서 E_ALL나 E_NOTICE 등의 PHP 상수를 사용할 수 없으며, 아무런 의미를 가지지 않기에 0으로 처리합니다. 대신 비트마스크 결합값을 사용하십시오. php.ini에서는 상수를 사용할 수 있습니다.

윈도우 레지스트리를 통해 PHP 설정 변경하기

윈도우에서 PHP를 실행할 때, 윈도우 레지스트리를 통해서 디렉토리 단위로 설정값을 변경할 수 있습니다. 레지스트리 키 HKLM\SOFTWARE\PHP\Per Directory Values에 기록된 설정값은, 경로명이 서브키로 연결됩니다. 예를 들면, 디렉토리 c:\inetpub\wwwroot를 위한 설정값은 HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot에 기록합니다. 디렉토리 단위의 설정은 그 디렉토리와 그 하위 디렉토리에서 실행되는 모든 스크립트에 영향을 줍니다. 키가 가지는 이름은 PHP 설정 지시어이고, 문자열 값을 가집니다. 값에 지정한 PHP 상수는 처리되지 않습니다.


PHP의 다른 인터페이스

PHP의 인터페이스에 상관 없이, ini_set()를 이용하여 스크립트 실행시의 몇가지 값을 변경할 수 있습니다. 아래의 표는 설정값이 어느 레벨에서 변경/지정될 수 있는지 보여줍니다.


표 4-1. PHP_INI_* 상수 정의


상수 값 의미
PHP_INI_USER 1 유저 스크립트에서 설정 가능한 엔트리
PHP_INI_PERDIR 2 php.ini, .htaccess, httpd.conf에서 설정 가능한 엔트리 
PHP_INI_SYSTEM 4 php.ini나 httpd.conf에서 설정 가능한 엔트리 
PHP_INI_ALL 7 어디에서라도 설정 가능한 엔트리


환경 설정의 설정값은 phpinfo() 출력에서 확인할 수 있습니다. ini_get()나 get_cfg_var()을 이용하여 개별 설정값에 접근할 수도 있습니다.

2006/09/11 10:27 2006/09/11 10:27
이 글에는 트랙백을 보낼 수 없습니다
Web_developing/Apache  2006/09/11 10:26
출처 블로그 > 학습
원본 http://blog.naver.com/jesuskth/20005249838

거의 3년간 여기서 많은 배움과 팁만 얻어가다 보안에 관련한 팁글을 보던중, open_basedir 에 관련한 내용이 있어 제 서버에 적용하려고 웹사이트를 뒤적거려 얻은 팁같지 않은 팁입니다 ^^;;

저같은 경우는 현재 무료로 20명정도를 호스팅 해드리고 있는데. 글자그대로 "웹호스팅" 이므로 텔넷은 막아놓고 있습니다 (이건 변명이고.. 쉘상의 해킹에 관해서 모두 막을 자신이 없습니다. ^^;)

문제되는 부분은 php 프로그램을 이용한 웹상에서 다른 계정이용자의 파일을 볼수 있다는 것이었는데 아파치 설정파일에서 open_basedir 를 설정해주니 막히더군요.

파일을 보는 예제) ps. 무단도용 죄송합니다 ^^;

비밀 노팔룡// 웹브라우저로 확인해서 제로보드를 사용한다면...대충찍을 수 있겠죠...config.php파일 있는 위치가 뻔하지 않습니까?
자신의 계정에서 가볍게 php코딩해서 보세요~ 훤히 보입니다..
<?php
$fp = fopen('절대경로파일명', 'r');
while(!feof($fp)) {
$content = fread($fp, filesize('절대경로파일명'));
}
fclose($fp);
echo '<xmp>'.$content.'</xmp>';
?>
해보세요 03/01 20:43:09  
 
아쉬 쉬움 <?php

system("cat /home/계정/public_html/제로보드/config.php");

?>

많은 헛점과 오류가 있을지 모르지만, 혹시라도 있을지 모를 저같은 초보서버 관리자께
조금이나마 도움이 되고자 글을 씁니다.

운영체제는 프비 4.9 이며 아파치 버전은 1.3.29 입니다.

자.. 팁.. 나갑니다 -_-;;

<Directory /home/계정사용자아이디/>
   php_admin_value open_basedir /home/계정사용자아이디/:/var/tmp/:/tmp/
</Directory>

이구문을 추가해 주시면 됩니다. 너무 간단한가요 제가 잘 몰라서 이게 어떤문제가 있는지는 모르겠습니다. 다만, 이 구문을 적어주면 해당 계정사용자는 자신의 계정폴더와 /var/tmp/ /tmp/ 폴더만 php의 file 관련 함수로 접근 할 수 있더군요.

접근 가능한 폴더를 더 추가해 주실려면 콜론(:)을 적으시고 추가하시면 됩니다..

바뀐설정을 적용하실려면 아파치를 재시작해주시는걸 잊지마세요.

이상저의 처음이자 팁같지 않은 팁이었습니다.. 꾸벅.

2006/09/11 10:26 2006/09/11 10:26
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 『해킹.... 속임수의 예술....』
원본 http://blog.naver.com/zsup1343/60003541921
Apache mod_gzip.c Module install
1. Module 설치하기
1-1. File Download (mod_gzip.so)
http://www.remotecommunications.com/apache/mod_gzip/ 여기에서 "mod_gzip.so" (85K) (Linux용)을 Download 한다. 이파일을 "/etc/httpd/modules" 또는 "/usr/local/apache/libexec"에 복사한다.

1-2. Apache "httpd.conf" Setting.
LoadModule gzip_module modules/mod_gzip.so # 만약 : /etc/httpd/modules 이면
LoadModule gzip_module libexec/mod_gzip.so # 또는 : /usr/local/apache/libexec 이면

AddModule mod_gzip.c


mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_min_http 1001 # 1000 = HTTP/1.0, 1001 = HTTP/1.1
mod_gzip_minimum_file_size 300 # 압축할 최소 Size
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 100000
mod_gzip_keep_workfiles No
mod_gzip_item_include file \.html$ # 압축할 파일들 설정
mod_gzip_item_include file \.htm$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^text/.html
mod_gzip_item_include mime ^text/html$ # HTML 형식 모두 압축
mod_gzip_item_include mime ^application/x-httpd-php # PHP 스크립트 압축
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^perl-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
mod_gzip_item_exclude file \.css$ # 압축 제외 파일들.
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude mime ^image/.*

mod_gzip_temp_dir /dev/shm # 이것 Linux용이고요 보통 '/tmp'하시면됩니다.
# 최고의 속도를 날려면 RamDisk 의 위치를 넣으세요.
LogFormat "%h %l %u %t \"%V %r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2
CustomLog logs/mod_gzip common_with_mod_gzip_info2
# Log 가 필요하신분만 넣으세요.

1-3. Apache Server Restart
# service httpd restart
2. Static Complie (설치)
2-1. File Download
http://www.remotecommunications.com/apache/mod_gzip/ 에서 "mod_gzip.c" (300K) 을 Download 한다. 파일을 Apache Source 폴더에 Copy 한다. ('apache/src/modules/extra/')
2-2. Source Modify
apache/src/Configuration... (3개의 파일에 다음내용을 추하간다 "AddModule modules/extra/mod_gzip.o")
# cd ..../apache/ # Apache 소스 있는곳
# echo "AddModule modules/extra/mod_gzip.o" >> src/Configuration.tmpl # configure 생성하기 전에 원시 파일
# ./configure --prefix=...... # configure 실행 필요한 옵션 넣으세요.
# make # 컴파일
# service httpd stop # Web Server Stop
# make install # Apache Install
# httpd -l # 컴파일 된 모듈 확인
Compiled-in modules:
http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_include.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_access.c
mod_auth.c
mod_setenvif.c
mod_redurl.c # 한글 파일 처리 모듈
mod_gzip.c # 이것 이 있으면 정상.
mod_php4.c
# service httpd restart # Web Server Start
2-3. Apache "httpd.conf" Setting.

mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_min_http 1001 # 1000 = HTTP/1.0, 1001 = HTTP/1.1
mod_gzip_minimum_file_size 300 # 압축할 최소 Size
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 100000
mod_gzip_keep_workfiles No
mod_gzip_item_include file \.html$ # 압축할 파일들 설정
mod_gzip_item_include file \.htm$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^text/.html
mod_gzip_item_include mime ^text/html$ # HTML 형식 모두 압축
mod_gzip_item_include mime ^application/x-httpd-php # PHP 스크립트 압축
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^perl-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
mod_gzip_item_exclude file \.css$ # 압축 제외 파일들.
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude mime ^image/.*

mod_gzip_temp_dir /dev/shm # 이것 Linux용이고요 보통 '/tmp'하시면됩니다.
# 최고의 속도를 날려면 RamDisk 의 위치를 넣으세요.
LogFormat "%h %l %u %t \"%V %r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2
CustomLog logs/mod_gzip common_with_mod_gzip_info2
# Log 가 필요하신분만 넣으세요.

2-4. Start web server
httpd -t
service httpd restart
logs/mod_gzip Log 파일 참조하세요.
2006/09/11 10:26 2006/09/11 10:26
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > Human Packet
원본 http://blog.naver.com/jabusunin/30002719579

/* ---------------------------------------------------------
  - 작 성  자 : 정찬호(master@rootman.co.kr)
  - Homepage :
http://www.rootman.co.kr/
  - 최종수정일 : 2003. 12. 08
  - 모듈정보
    Apache DoS Evasive Maneuvers Module
    For Apache 1.3 and 2.0
    Copyright (c) 2002 Network Dweebs Corporation
    Version 1.8 [2003.0901.1845]
  ---------------------------------------------------------------- */

---------------------------------------------------------------------
*. mod_dosevasive이란 무엇인가
---------------------------------------------------------------------
  이것은 HTTP Dos 또는 DDos 스택 또는 저돌적인 공격으로부터 아파치를 보호하는데 있습니다.  이것은 ipchains, 방화벽, 라우터등으로 쉽게 구성될 수 있도록 디자인 되었습니다.

  탐지는 주소, URI의 IP 내부 동적 해쉬테이블을 생성함으로 수행되고, 각 아이피별로 거부됩니다.
  - 초당 몇번 이상의 같은 페이지를 요청하는 경우
  - 초당 같은 자식노드를 동시에 50번 이상 생성하는 경우
  - 일시적으로 블러킹되는 동안 어떠한 요청을 생성하는 경우

----------------------------------------------------------------------

1. mod_dosevasive 설치
----------------------------------------------------------------------
  다운로드 :  
http://www.rootman.co.kr/bbs/zboard.php?category=11&id=dataroom
                 http://www.nuclearelephant.com/projects/dosevasive/

  [root@rootman root]# tar xvfz mod_dosevasive.1.8.tar.gz
  [root@rootman root]# cd /usr/local/apache/bin
  [root@rootman bin]# ./apxs  -iac ../mod_dosevasive/mod_dosevasive.c
  [root@rootman bin]# ./apxs  -iac ../mod_dosevasive/mod_dosevasive.c
     gcc -DLINUX=22 -DUSE_HSREGEX -fpic -DSHARED_CORE -DSHARED_MODULE -I/usr/local/apache/include  -c ../mod_dosevasive/mod_dosevasive.c
     gcc -shared -o ../mod_dosevasive/mod_dosevasive.so mod_dosevasive.o
     [activating module `dosevasive' in /usr/local/apache/conf/httpd.conf]
     cp ../mod_dosevasive/mod_dosevasive.so /usr/local/apache/libexec/mod_dosevasive.so
     chmod 755 /usr/local/apache/libexec/mod_dosevasive.so
     cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
     cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
     rm /usr/local/apache/conf/httpd.conf.new

  [root@rootman root]# vi /usr/local/apache/conf/httpd.conf     <--- 아래두줄이 추가되었나 확인한다.
       LoadModule dosevasive_module  libexec/mod_dosevasive.so
       AddModule mod_dosevasive.c

  [root@rootman /root]# /usr/local/apache/bin/apachectl graceful    <--- 아파치재가동시킨다.

-------------------------------------------------------------------------
2. httpd.conf에는 다음과 같이 설정을 추가한다.
-------------------------------------------------------------------------  
    DOSHashTableSize     3097
    DOSPageCount         3
    DOSSiteCount         50
    DOSPageInterval      1
    DOSSiteInterval      1
    DOSBlockingPeriod    3600
 


  ----------------------------------------------
  추가적으로 지시자를 추가하실 수 있습니다.
  ----------------------------------------------
   DOSEmailNotify      master@rootman.co.kr
   DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"

 - DOSHashTableSize 
   각 자식 해쉬테이블 마다 탑레벨 노드의 수를 지정합니다.
   수치가 높으면 높을수록 더 많은 퍼포먼스가 나타나지만 테이블스페이스에 메모리를 남기게 된다.  접속량이 많으면 이 수치를 높혀도 된다.
   
 - DOSPageCount
   이것은 같은 페이지 또는 URI, 인터벌당 요청수에 대한 카운트 수이다.
   지정된 값이 초과되면 클라이언트에 대한 IP 정보가 블러킹리스트에 추가된다.

 - DOSSiteCount
   지정된 시간동안 같은 페이지를 지정된 수 보다 초과될경우 IP 정보가 블러킹리스트에 추가된다.

 - DOSPageInterval
   페이지 카운트 시발점, 디폴트는 1초이다.

 - DOSSiteInterval
   사이트 카운트 시발점, 디폴트는 역시 1초이다.

 - DOSBlockingPeriod
   클라이언트가 블랙리스트에 추가되어 블러킹되는 총 시간.
   이때 클라이언트는 403 (Forbidden) 에러를 출력하게 된다.

 - DOSEmailNotify
   이 값이 지정되면, IP가 블러킹될때마다 지정된 이메일로 발동된다.
   
   주의 : 메일러는 mod_dosevasive.c 에 정확하게 지정되야 한다.
         디폴트는 "/bin/mail -t %s" 이다.

 - DOSSystemCommand
   이 값이 지정되면, 시스템은 아이피가 블러킹될때마다 명령행을 실행한다.
   이것은 아이피 필터링이나 다른 도구를 사용하도록 설계되었습니다.

--------------------------------------------------------------------------

3. 인가된 IP 주소 할당
--------------------------------------------------------------------------
  버전 1.8에서는 아이피가 블러킹되더라도 인가된 클라이언트 아이피에 대해서는 적용되지 않습니다.   인가시키는 목적은 소프트웨어, 스크립트, 로컬서치로봇, 해당 서버로부터의 많은 요청인한 웹거부로 부터의 또다른 프로그램을 보호하는데 있습니다.

  아파치에서 설정하는 방법은 다음과 같습니다.

  DOSWhitelist    127.0.0.1
  DOSWhitelist    127.0.0.*

  와일드카드는(*) 필요하다면 최대 8진수(xxx.*.*.*)까지 사용할 수 있습니다.

-------------------------------------------------------------------------
4. 테스트 하기
-------------------------------------------------------------------------
  [root@rootman mod_dosevasive]# perl test.pl        
    HTTP/1.1 200 OK
    HTTP/1.1 403 Forbidden
    HTTP/1.1 200 OK
    HTTP/1.1 403 Forbidden
    HTTP/1.1 403 Forbidden
-------------------------------------------------------------------------

5. 원문보기
-------------------------------------------------------------------------
Apache DoS Evasive Maneuvers Module
For Apache 1.3 and 2.0
Copyright (c) 2002 Network Dweebs Corporation
Version 1.8 [2003.0901.1845]

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

WHAT IS MOD_DOSEVASIVE ?

mod_dosevasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack.  
It is also designed to be a detection tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera.  

Detection is performed by creating an internal dynamic hash table of IP Addresses and URIs, and denying any single IP address from any of the following:

- Requesting the same page more than a few times per second
- Making more than 50 concurrent requests on the same child per second
- Making any requests while temporarily blacklisted (on a blocking list)

This method has worked well in both single-server script attacks as well as distributed attacks, but just like other evasive tools, is only as useful to the point of bandwidth and processor consumption (e.g. the amount of bandwidth and processor required to receive/process/respond to invalid requests), which is why it's a good idea to integrate this with your firewalls and routers.

This module instantiates for each listener individually, and therefore has a built-in cleanup mechanism and scaling capabilities.  Because of this, legitimate requests are never compromised but only scripted attacks.  Even a user repeatedly clicking on 'reload' should not be affected unless they do it maliciously.

Two different module sources have been provided:

Apache v1.3 API:        mod_dosevasive.c
Apache v2.0 API:        mod_dosevasive20.c


HOW IT WORKS

A web hit request comes in.  The following steps take place:

- The IP address of the requestor is looked up on the temporary blacklist
- The IP address of the requestor and the URI are both hashed into a "key".  
 A lookup is performed in the listener's internal hash table to determine
 if the same host has requested this page more than once within the past 1 second.  
- The IP address of the requestor is hashed into a "key".
 A lookup is performed in the listerner's internal hash table to determine
 if the same host has requested more than 50 objects within the past second (from the same child).

If any of the above are true, a 403 response is sent.  
This conserves bandwidth and system resources in the event of a DoS attack.  
Additionally, a system command and/or an email notification can also be triggered to block all the originating addresses of a DDoS attack.

Once a single 403 incident occurs, mod_dosevasive now blocks the entire IP address for a period of 10 seconds (configurable).  
If the host requests a
page within this period, it is forced to wait even longer.  
Since this is triggered from requesting the same URL multiple times per second, this again does not affect legitimate users.

The blacklist can/should be configured to talk to your network's firewalls and/or routers to push the attack out to the front lines, but this is not required.

mod_dosevasive also performs syslog reporting using daemon.alert.  Messages
will look like this:

Aug  6 17:41:49 elijah mod_dosevasive[23184]: [ID 801097 daemon.alert] Blacklisting address x.x.x.x: possible DoS attack.


WHAT IS THIS TOOL USEFUL FOR?

This tool is *excellent* at fending off small to medium-sized request-based DoS attacks or script attacks and brute force attacks.  
Its features will prevent you from wasting bandwidth or having a few thousand CGI scripts running as a result of an attack.  
When used in conjunction with other preventative measures such as router blackholing, this tool is very effective against larger DDoS attacks as well.

If you do not have an infrastructure capable of fending off any other types of DoS attacks, chances are this tool will only help you to the point of
your total bandwidth or server capacity for sending 403's.  
Without a solid infrastructure and DoS evasion plan in place, a heavy distributed DoS will most likely still take you offline.  


HOW TO INSTALL

APACHE v1.3
-----------

Without DSO Support:

1. Extract this archive into src/modules in the Apache source tree
2. Run ./configure --add-module=src/modules/dosevasive/mod_dosevasive.c
3. make, install
4. Restart Apache


With DSO Support, Ensim, or CPanel:

1. $APACHE_ROOT/bin/apxs -iac mod_dosevasive.c
2. Restart Apache


APACHE v2.0
-----------

1. Extract this archive
2. Run $APACHE_ROOT/bin/apxs -i -a -c mod_dosevasive20.c
3. The module will be built and installed into $APACHE_ROOT/modules, and loaded into your httpd.conf
4. Restart Apache


CONFIGURATION

mod_dosevasive has default options configured, but you may also add the following block to your httpd.conf:


APACHE v1.3
-----------


   DOSHashTableSize    3097
   DOSPageCount        2
   DOSSiteCount        50
   DOSPageInterval     1
   DOSSiteInterval     1
   DOSBlockingPeriod   10


APACHE v2.0
-----------

   DOSHashTableSize    3097
   DOSPageCount        2
   DOSSiteCount        50
   DOSPageInterval     1
   DOSSiteInterval     1
   DOSBlockingPeriod   10


Optionally you can also add the following directives:

   DOSEmailNotify        you@yourdomain.com
   DOSSystemCommand        "su - someuser -c '/sbin/... %s ...'"

You will also need to add this line if you are building with dynamic support:

APACHE v1.3
-----------
AddModule        mod_dosevasive.c


APACHE v2.0
-----------
LoadModule dosevasive20_module modules/mod_dosevasive20.so

(This line is already added to your configuration by apxs)


DOSHashTableSize
----------------
The hash table size defines the number of top-level nodes for each child's hash table.  
Increasing this number will provide faster performance by decreasing the number of iterations required to get to the record, but consume more memory for table space.  
You should increase this if you have a busy web server.  
The value you specify will automatically be tiered up to the next prime number in the primes list (see mod_dosevasive.c for a list of primes used).


DOSPageCount
------------
This is the threshhold for the number of requests for the same page (or URI) per page interval.  
Once the threshhold for that interval has been exceeded, the IP address of the client will be added to the blocking list.


DOSSiteCount
------------
This is the threshhold for the total number of requests for any object by the same client on the same listener per site interval.  
Once the threshhold
for that interval has been exceeded, the IP address of the client will be added to the blocking list.


DOSPageInterval
---------------
The interval for the page count threshhold; defaults to 1 second intervals.


DOSSiteInterval
---------------
The interval for the site count threshhold; defaults to 1 second intervals.


DOSBlockingPeriod
-----------------
The blocking period is the amount of time (in seconds) that a client will be blocked for if they are added to the blocking list.  
During this time, all subsequent requests from the client will result in a 403 (Forbidden) and the timer being reset (e.g. another 10 seconds).  
Since the timer is reset for every subsequent request, it is not necessary to have a long blocking period; in the event of a DoS attack, this timer will keep getting reset.


DOSEmailNotify
--------------

If this value is set, an email will be sent to the address specified
whenever an IP address becomes blacklisted.  A locking mechanism using /tmp
prevents continuous emails from being sent.

NOTE: Be sure MAILER is set correctly in mod_dosevasive.c
     (or mod_dosevasive20.c).  The default is "/bin/mail -t %s" where %s is
     used to denote the destination email address set in the configuration.  
     If you are running on linux or some other operating system with a
     different type of mailer, you'll need to change this.


DOSSystemCommand
----------------
If this value is set, the system command specified will be executed whenever an IP address becomes blacklisted.  
This is designed to enable system calls to ip filter or other tools.  
A locking mechanism using /tmp prevents continuous system calls.  
Use %s to denote the IP address of the blacklisted IP.


WHITELISTING IP ADDRESSES

As of version 1.8, IP addresses of trusted clients can be whitelisted to insure they are never denied.  
The purpose of whitelisting is to protect software, scripts, local searchbots, or other automated tools from being denied for requesting large amounts of data from the server.  
Whitelisting should *not* be used to add customer lists or anything of the sort, as this will open the server to abuse.  
This module is very difficult to trigger without performing some type of malicious attack, and for that reason it is more appropriate to allow the module to decide on its own whether or not an individual customer should be blocked.

To whitelist an address (or range) add an entry to the Apache configuration
in the following fashion:

DOSWhitelist        127.0.0.1
DOSWhitelist        127.0.0.*


Wildcards can be used on up to the last 3 octets if necessary.  
Multiple DOSWhitelist commands may be used in the configuration.


TWEAKING APACHE

The keep-alive settings for your children should be reasonable enough to keep each child up long enough to resist a DOS attack (or at least part of one).  
For every child that exits, another 5-10 copies of the page may get through before putting the attacker back into '403 Land'.  
With this said,
you should have a very high MaxRequestsPerChild, but not unlimited as this will prevent cleanup.

You'll want to have a MaxRequestsPerChild set to a non-zero value, as DosEvasive cleans up its internal hashes only on exit.  
The default MaxRequestsPerChild is usually 10000.  
This should suffice in only allowing a few requests per 10000 per child through in the event of an attack (although if you use DOSSystemCommand to firewall the IP address, a hole will no longer be open in between child cycles).


TESTING

Want to make sure it's working? Run test.pl, and view the response codes.
If the target machine is not localhost, be sure to change it in the script first.  
You should receive 403 responses after the first 25-50 requests, depending on your server configuration.  
Please don't use this script to DoS others without their permission.


KNOWN BUGS

- This module appears to conflict with the Microsoft Frontpage Extensions


FEEDBACK

Please email me with questions, constructive comments, or feedback:
 jonathan@nuclearelephant.com.

From :http://www.rootman.co.kr

2006/09/11 10:25 2006/09/11 10:25
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > rulru님의 블로그
원본 http://blog.naver.com/rulru/70003288314
Apache 에서 DoS 공격 막기 (1.3.x 2.x 모두)
글쓴이 : 좋은진호 (2003년 08월 29일 오후 06:55) 읽은수: 6,699 [ 아파치 # 트랙백(0) 인쇄용 페이지 본문 E-Mail로 보내기 ]
아파치 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2003.8.20(수) apache v1.3.x
수정일 : 2003.8.25(월) apache v2.x 부분 추가

특정 URL이나 IP일 경우나 특정한 브라우저를 이용하여 DoS(Denial of Service, 서비스거부)
공격이 들어온다면 httpd.conf 에서 SetEnvIf, SetEnvIfNoCase 등과 Allow, Deny 설정으로
간단히 막을 수 있겠지만 일정한 유형이 없다면 해결점을 찾기가 쉽지 않다.

다행히 Apache용 mod_dosevasive 모듈로 DoS 공격을 쉽게 막을 수 있다.
며칠전 1.7버전 발표로 apache 2.x에서도 정상적으로 이 모듈을 이용할 수 있게 됐다.

1. mod_dosevasive 설치

http://www.nuclearelephant.com/projects/dosevasive/
에서 mod_dosevasive (현재 최신버전은 1.7)을 받아온다.

1) 기존에 사용하던 apache 1.3.x에 모듈만 추가할 때

mod_dosevasive.tar.gz 을 푼다음 apxs로 설치

----------------------------------------------
# tar xvfz mod_dosevasive.tar.gz 
# cd dosevasive
# /bin/apxs -iac mod_dosevasive.c
...
[activating module `dosevasive' in /usr/local/apache/conf/httpd.conf]
cp mod_dosevasive.so /usr/local/apache/libexec/mod_dosevasive.so
chmod 755 /usr/local/apache/libexec/mod_dosevasive.so
...
----------------------------------------------

httpd.conf의 LoadModule, AddModule는 apxs가 알아서 추가해준다.

2) apache 1.3.x부터 새로 컴파일할 할 때

mod_dosevasive.tar.gz 을 apache_source_홈/src/modules 에 푼 다음
기존에 apache 컴파일하는 것과 동일한 방법으로 하되, --add-module=... 옵션만
추가해준다.

----------------------------------------------
./configure --prefix=/usr/local/apache \
--enable-module=all --enable-shared=max \
--add-module=src/modules/dosevasive/mod_dosevasive.c  <-- 추가함
make
make install
----------------------------------------------

3) apache 2.x에 모듈만 붙일 때

/bin/apxs -iac mod_dosevasive20.c

2. 설정

httpd.conf 에 아래 설정이 있는지 확인한다.

apache 1.3.x
----------------------------------------------
...
LoadModule dosevasive_module libexec/mod_dosevasive.so
...
AddModule mod_dosevasive.c
----------------------------------------------

apache 2.x
----------------------------------------------
LoadModule dosevasive20_module modules/mod_dosevasive20.so
----------------------------------------------

httpd.conf에는 다음과 같이 설정을 추가한다.
( 단, 아래 설정 중에 apache 2.x일 때는 < IfModule mod_dosevasive20.c> 로 )
----------------------------------------------
< IfModule mod_dosevasive.c>
  DOSHashTableSize  3097
  DOSPageCount    3
  DOSSiteCount    50
  DOSPageInterval   1
  DOSSiteInterval   1
  DOSBlockingPeriod  30
< /IfModule>
----------------------------------------------
DOSHashTableSize  3097

hash table의 크기. IP, URI등을 분석하기 위한 공간으로 쓰이는 것 같은데 정확히는
모르겠다. 접속이 많은 서버이면 수치를 높인다.

DOSPageCount    3
DOSPageInterval   1

DOSPageInterval에서 지정한 시간(초단위)동안 같은 페이지를 3번 요청한 경우
해당 클라이언트 IP를 블럭킹한다. 블럭킹되는 동안에 사용자에게는 403(Forbidden)
코드가 전송된다.

DOSSiteCount    50
DOSSiteInterval   1

DOSSiteInterval에서 지정한 시간동안 어느 페이지나 이미지든 요청 건수가 50번을 넘는
경우 해당 클라이언트 IP를 블럭킹한다. 403코드 보내는 것은 마찬가지.
HTML 내에 이미지가 10개이면 요청 건수는 HTML포함하여 11번이 되므로 이미지가 많은
사이트는 숫자를 크게한다.

DOSBlockingPeriod  30

블럭킹된 IP는 30초동안 접속을 할 수 없다.

3. 모듈 사용을 중지하려면

차단 기능을 이용하지 않기 위해

DOSPageCount 0
DOSSiteCount 0

와 같이 하면 모듈 내부의 default값을 이용해서 동작하므로 LoadModule, AddModule를
주석 처리하는 방법을 써야한다. 또는 Count값을 상당히 큰 수를 지정할 수도 있겠다.

4. 차단하는지 테스트

간단한 테스트 툴로 test.pl을 제공한다.
12번째 줄에

printf("%03d ", $_ );

를 추가하고

apache를 실행시킨 다음 perl test.pl을 해보면 200 OK, 403 Forbidden 된 것을 쉽게
확인할 수 있을 것이다.

DOSPageCount, DOSSiteCount 수치를 너무 낮게 하면 정상적인 접속에 대해서도 차단될 수
있으므로 주의해야 한다. 수치를 낮추고, 같은 페이지를 reload(Ctrl+R)를 여러번했더니
바로 403 페이지가 등장.

403 페이지를 별도로 만드는 것이 좋을 듯 싶다. httpd.conf에 ErrorDocument 403 ... 설정
으로 html을 만들어두면 방문자에게 도움이 되지 않을까...

이젠 ab, lynx 등으로 게시물 조회수를 순간적으로 올린다거나, 시스템 로드를 증가시키는
것까지도 어느정도 막을 수 있을 것이다.

※ syslog 로 로그 남기는 기능과 DOSEmailNotify, DOSSystemCommand 옵션은 제대로 적용
  되지 않아 이 글에 적지 않았다. 정상동작이 확인되면 그 때 추가할 것이다.
2006/09/11 10:23 2006/09/11 10:23
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > [베베] 내 작은 버둥거림..
원본 http://blog.naver.com/babyj2005/19969091

# cd /usr/local/src

# wget http://mirror.trouble-free.net/dosevasive/mod_evasive_1.10.1.tar.gz

# tar xvfz mod_evasive_1.10.1.tar.gz

# cd mod_evasive

# /usr/local/httpd/bin/apxs -i -a -c mod_evasive20.c


-----------------------

<IfModule mod_evasive20.c>
   DOSHashTableSize    3097
   DOSPageCount        5
   DOSSiteCount        50
   DOSPageInterval     1
   DOSSiteInterval     1
   DOSBlockingPeriod   30
   DOSEmailNotify      내 메일주소
   DOSLogDir           "/usr/local/apache/log/mod_evasive"
</IfModule>

2006/09/11 10:23 2006/09/11 10:23
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 공부중...
원본 http://blog.naver.com/soya98/40019330983

아이피 주소를 도메인에 포워딩 하는중 문제가 발생했다. 잘 묵히던

팝업이 갑자기 안묵히고 난리다. 쿠키값을 확인해본 결과 잘 들어가져 있었으나 포워딩된

주소에서는 그 쿠키 값을 거부하고 있었다 ..

닷네임에서 확인해본 결과 아래와 같이 설명하고 있었다...

==================================================================

서로 다른 도메인을 포함하는 프레임 구조로 사이트를 IE6에서 열게 되면, 쿠키가 적용되지 않습니다.
이유는 마이크로 소프트에서 쿠키 정보의 남용을 막기 위해 p3p (Platform for Personal Preferences) 규약을 도입했기 때문입니다.
p3p (Platform for Personal Preferences) 규약은 W3C ( World wide Consortium )에서 만들어 졌습니다.
(마이크로 소프트 p3p 정책 http://msdn.microsoft.com/library/default.asp?url=/workshop/security/privacy/overview/createprivacypolicy.asp)
(W3C - p3p 규약 http://www.w3.org/TR/2002/REC-P3P-20020416/ )

그래서 다른 주소지로 연결되는 프레임구조로(특히 포워딩 고정 연결시) 웹페이지가 열리게 되면, 쿠키가 적용되지 않게 됩니다.

두가지 해결 방안이 있습니다.

첫번째는 쿠키를 적용하는 웹페이지에서 p3p 규약을 허용하는 HTTP 헤더를 추가하는 방법과
두번째는 쿠키를 적용하는 웹서버에서 p3p 규약을 허용하는 HTTP 헤더 추가하는 방법입니다.
===================================================================

무식하게 나마 세번째 방법이 있다.

세번째는 인터넷익스플로러에서 직접 설정을 해주는 것이다.


첫번째는 클라이언트 컴퓨터에서 볼때 설정해주는 것이다 즉 웹페이지에 직접 적어 넣는다.

<head>

< meta http - equiv = "p3p" content = 'CP="CAO DSP AND SO " policyref="/w3c/p3p.xml"' >

</head>


심플하게 php에 들어있는 자바스크립트로 만든 팝업등에서 써먹을 수도 있다.


두번째는  서버에서 직접 설정하는 것인데 왠지 께림찍해서 거부했다.

리누기 conf/httpd.conf 에 다음과 같이 추가한다.

<IfModule mod_headers.c>
Header add P3P "CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\""
Header set P3P "CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\""
</IfModule>

그리고 데몬을 다시 구동 시켜야 겠지요?


세번째 무식한 방법

도구-인터넷옵션-개인정보-고급-자동쿠키덮어쓰기 (제3사 쿠키라고 한다.) 체크해주면 됨





기타 언어별 p3p 셋팅법

<meta http-equiv> 처럼 메타태그를 이용한 헤더 전송방법
아파치서버의 mod_headers 모듈을 이용한 방법
PHP 의 header 를 이용한 방법등이 있다.

jsp의 header

asp의 header

메타태그:
<meta http-equiv="p3p" content='CP="CAO DSP AND SO " policyref="/w3c/p3p.xml"' >


아파치서버 conf/httpd.conf :

<IfModule mod_headers.c>
#Header add P3P "CP=\"DSP CUR OTPi IND OTRi L FIN\""
</IfModule>


php :

<?php
Header
("p3p: CP=\"CAO DSP AND SO ON\" policyref=\"/w3c/p3p.xml\"");
?>

혹은( 이상하게 아래것은 안묵히는것 같다.)

<?

header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');

?>

asp:

<% '//W3C P3P 규약설정 - ASP 버전
Response.AddHeader "P3P", "CP='ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC'"
%>

jsp:

Response.setHeader("P3P","CP='CAO PSA CONi OTR OUR DEM ONL'");

p.s php에서 적용이 안돼서 팝업창과 부모창 모두에게

<?
@header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');
?>
<html>
<head>
<title>  </title>
<meta http-equiv="p3p" content='CP="CAO DSP AND SO " policyref="/w3c/p3p.xml"' >
</head>

위와 같이 적용한 결과 해결되었음

written by soya98

2006/09/11 10:22 2006/09/11 10:22
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > Unix SE Blog
원본 http://blog.naver.com/xtjin/50004052942
DSO 모드로 설치한다, 문제 생기면 제거 하기 쉬우니까~
   /usr/local/apache/bin/apxs -i -a -c mod_throttle.c
 
  ## 옵션 설명.
     -i : 라이브러리 디렉토리에 so 파일 복사하라는 옵션
     -a : httpd.conf 파일에 LoadModule 설정을 하라는 옵션
     -c : 컴파일 하라는 옵션

** 설정
   - httpd.conf 파일을 열어서 다음과 같이 설정한다.

       ## 사용자별 트래픽 모니터링 하기 위한 모듈을 로드한다. (접속자 많을때는 하지말것)
       LoadModule throttle_module    libexec/mod_throttle.so
       
               #예) 전체 설정을 1일 300G 로 한다면, 아래와같다.
               #ThrottlePolicy Volume 300G 1d // 1일 300 M 로 제한

         # 전체적인 상황을 보는 페이지
           
               Order deny,allow
               Deny from all
               ## 특정 ip만 열어준다.
               Allow from 피씨아이피
               SetHandler throttle-status
         


         ## 사용자 자신의 접속량 점검
         
               SetHandler throttle-me
         

         
               SetHandler throttle-me
         

        ## 통계결과를 3초에 한번씩 갱신하여 보여준다.((기본은 60)
        ThrottleRefresh 10
        ## 접속하는 ip들을 1000개 까지 보여주면 통계를 구하기 위해 제한을 두지 않았다.
        ThrottleClientIP 1000 none
        ## 아이피/~doly 으로 접속을 10초에 10번으로 제한하였다.
        ThrottleUser doly Request 10 10
       

       
## 정책들
None : 아무 정책이 없고, 단지 모니터링 용도로 사용할때 사용
Concurrent : 동시접속수를 제한하기위한 것인데.. 별루당
             (ThrottleClientIP, ThrottleRemoteUser와 같이 쓸수 없다.)
Document 요청제한수 기간 : Request와 비슷 단, html 형식의 문서만 카운트 한다.(그림파일 제외)
Idle 쉬는시간 기간 : 요청간에 쉬는 시간을 준다?? 왜??? <-- 이건 더 이해 해야 함.
Random 받아들이퍼센트 기간: 0이면 모두 거절, 100 이면 모두 허가, 중간갑이면 랜덤하게 허가^^;
Request 요청제한수 기간: 기간동안 받아들일 요청수 ^^;
Speed 제한용량 기간 : Volume 하고 비슷하지만, 요청을 거절하지 않고 연기(delay)시킨다.
Volume 제한용량 기간 : 기간동안 제한용량만큼을 준다.

## 항목들
SetHandler throttle-status : throttle의 상태를 보여준다.(관리자 모드)
   Context : server,,,

SetHandler throttle-me : throttle의 자기 상태를 보여준다.(사용자 모드)
   Context : server,,,

** ClinetIP별로 제한을 하기 위함((괜찮은 설정))
ThrottleClientIP 보여줄ip수 정책 제한 기간
   Context : server
   보여줄ip는 : 접속한 ip리스트 들이다.
   정책 : 위 정책들중의 하나를 선택하면 된다.^^ 제한,기간 위 정책에 따른다.

** 통계를 출력할 형태.(별의미 없다.)
ThrottleContentType 문자열
   Context : server
   문자열 : text/html, text/plain  이 둘중에 하나 넣으면 된다.

** 결과에 색을 달리할 퍼센테이지를 정한다. (별 의미 없다.)
   Context : server
ThrottleIndicator green 50
ThrottleIndicator yellow 75
ThrottleIndicator red 90

** throttle 에서 사용하는 파일들 (( 별 의미 없다.))
   Context : server
ThrottleLockFile /usr/local/apache/logs/throttle.lock
ThrottleRuntimeFile /usr/local/apache/logs/throttle.runtime

** Throttle 의 최대 Delay 시간 (기본 :60초,  0:제한하지 않음)
   Context : server
ThrottleMaxDelay 60

** Throttle 정책 설정  (가장 많이 사용 )
   Context : server,,,
ThrottlePolicy 정책 제한 기간
  가장 많이 사용한다. 정책은 Volume 관 Request 를 많이 사용해서 제한 한다.

** Throttle 통계화면 리로드 시간(기본 60초)
   Context : server
ThrottleRefresh 초단위시간
           
** Throttle RemoteUser ?? <== 이놈은 뭐에 쓰는 놈인지??
   Context : server
ThrottleRemoteUser 크기 정책 제한 기간


** 로컬사용자 제한 등록하기 (( 실 계정 사용자만 등록된다.)
   Context : server
ThrottleUser 사용자 정책 제한 기간
2006/09/11 10:22 2006/09/11 10:22
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 웃어...그래야 일류다
원본 http://blog.naver.com/4success/50004528915

httpd.conf 파일은 크게 세부분으로 나누어져 있다.

Section 1: Global Environment : 아파치 전체적인 영향이 미치는 설정
Section 2: 'Main' server configuration : 주 서버에 대한 설정
Section 3: Virtual Hosts : 가상 호스트에 대한 설정

자, 그럼 이제부터 이 아파치웹서버의 모든 환경을 설정하는 아파치환경파일 httpd.conf파일의 설정방법에 대해서 상세히 알아보도록 하자.



### Section 1: Global Environment

전제환경설정 파트로 Section 1에서 설정하는 것들은 아파치 웹서버에
전반적인 영향을 미친다.

ServerType standalone

서버의 구동방법으로는 standalone과 inetd방식이 있는데, standalone
방식은 하나의 웹데몬(아파치서버)이 클라이언트의 접속을 모두 처리하는
방식으로 응답속도가 빠른 방법으로 주로 이방식을 사용한다. inetd 방식은
inetd라는 시스템의 /etc디렉토리 끝에 존재하는 inetd라는 슈퍼데몬이
클라이언트의 접속요구가 있을 때마다 웹서버를 구동하는 방식이다.
일반적으로 응답속도가 빠르고 효율적인 standalone으로 설정하여 사용한다.


ServerRoot "/usr/local/apache"

아파치서버의 홈디렉토리를 지정하며 절대경로로 지정한다. 이후로 나오는
대부분의 패스들은 이 경로에 대한 상대경로로 지정이 된다. 예를 들어
환경설정파일, 에러로그파일등의 상대경로의 기준이 되는 위치이다.


LockFile logs/accept.lock

아파치 컴파일시 USE_FCNTL_SERIALIZED_ACCEPT나
USE_FLOCK_SERIALIZED_ACCEPT으로 컴파일 했을 때 사용되는
LockFile의 경로지정시에 사용된다. 가급적 기본값으로 사용한다.


PidFile logs/httpd.pid

PidFile 설정은 ServerType을 Standalone으로 설정했을때만 유효한
것으로 아파치 서버의 프로세스가 생성되어 있을 때 그 프로세서ID(PID)를
기록하는 파일을 지정한다. 당연히 아파치서버가 재시작되거나 과부하로
인해 PID가 바뀌게 될 경우에는 이 파일의 PID값도 바뀌게 된다. 즉
다시말해서 여기서 지정된 파일(httpd.pid)에 실행되고 있는 아파치서버의
프로세스번호(PID)값이 기록된다고 하면 정답이다. ServerRoot를 기준으로한
상대경로로 지정된다. 절대경로로 지정하려면 "/"로 시작하는 절대경로를
적어주면 된다.




ResourceConfig conf/srm.conf
AccessConfig conf/access.conf

아파치 서버의 환경설정파일은 3개이au httpd.conf, srm.conf, access.conf
가 그것이다. 그러나 하나의 설정파일로 하는 것이 효율적이기 때문에
지금은 httpd.conf파일안에 3개의 파트(Section)로 나누어서 하나의
파일안에서 설정을 하고 있다. srm.conf와 access.conf파일의 내용은 현재
비어있는 상태이지만, 필요하다면 이 파일 내에도 설정을 할 수 있다.
아파치 서버가 실행이 될 때는 httpd.conf, srm.conf, access.conf 순으로
언제나 이 3개의 파일을 모두 읽고 난뒤에 실행이 되기 때문이다. 만약 이
두 개의 파일을 서버가 무시하도록 하려면 다음과 같이 하거나 "#"으로 붙여
두면 주석처리되어 무시된다.

ResourceConfig /dev/null
AccessConfig /dev/null


Timeout 300

클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와
서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을
초단위로 설정한다. 초기값은 1200이며 보통은 300초로 지정을 한다.
네트웍의 속도가 나쁠수록 수치값은 높게 설정하는 것이 좋다.

KeepAlive On

접속한 채로 특별한 요청없이 지속적인 연결을 허용할 것인지를 설정한다.
허용하지 않으려면 off

MaxKeepAliveRequests 100

클라이언트가 접속된 시간동안 아파치서버에 요청할 수 있는 최대의
개수를 지정한다. 0을 지정하면 제한없음을 의미하며, 서버의 성능향상을
위하여 가능한 높은 값이 좋다.

KeepAliveTimeout 15

아파치 서버는 같은 접속상태의 클라이언트에서 여기서 지정한 초만큼의
요청이 없었을 때 접속을 끊게 된다.

MinSpareServers 5
MaxSpareServers 10

아파치 웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재
서비스대기 중인 프로세스)를 만들게 되는데 이 유휴서버의 개수는 시스템의
상황에 따라 달라지게 된다. 유휴서버가 MinSpareServers의 개수(5) 보다
적게되면 추가로 생성을 하게 되며 MaxSpareServers의 개수(10)보다 많게
되면 죽이게 된다. 즉, 유휴서버의 개수를 적절히 조절하기 위한 것이라
생각하면 된다.


StartServers 5

아파치 웹데몬이 구동될 때 자식프로세스를 몇 개로 할 것인가를
지정한다. 시작할 때 동시에 띄우게 될 웹데몬의 개수이다. 그러나 웹데몬이
구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 대부분 합리적인
개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은
아니다.

MaxClients 150

아파치웹서버에 접근할 수 있는 클라이언트의 최대갯수는 이 상한값으로
제한한다. 여기서 지정한 개수이상의 클라이언트의 요청이 생긴다면
아파치는 응답하지 않고 이 요청을 무시한다. 이를 제한하는 이유는
시스템의 자원을 아파치 웹서버가 무한정 차지하는 것을 방지하기 위한
것이다.

MaxRequestsPerChild 30

아파치 웹서버의 자식프로세스들이 클라이언트의 요청 개수를 지정한다.
만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 이
자식프로세스는 자동으로 죽게된다. 이 값이 0으로 설정이 된다면
자식프로세스가 자동으로 죽는일은 없을 것이다. 그러나 0아닌 다른 값으로
설정함으로서 프로세스의 수를 적절히 조절하여 시스템의 부하조절과
자원낭비를 어느정도 방지 할 수 있다.

Listen 3000
Listen 12.34.56.78:80

시스템의 기본값이외에 다른 IP Address와 포트에 대해서도 연결할 수
있도록 해 준다. 환경설정파일(httpd.conf) 맨뒤에 나오는 가상호스트(Virtual
Host)부분에서 설정되는 가상호스트를 설정하기 위해 필요하다.


BindAddress *

서버가 응답할 수 있는 IP Address를 설정하는 것이다. 하나의 시스템에
있는 아파치웹서버 하나로 여러 웹서버처럼 관리하는 웹호스팅서비스등에서
많이 이용하는 것으로 여러 IP Address를 인식할 수 있게 한다. "*"으로
설정이 되었다면 모든 IP Address에 대해 응답할 수 있으며, IP Address를
지정한다면 지정한 IP Address에 대해서만 응답할 수 있게 된다. 여러개의
IP Address를 ISP로부터 할당받아서 웹호스팅서비스를 하고자 한다면
이부분에서 지정해 주면된다. 이 설정파일의 맨 뒷부분에 나오는
<VirtualHost>~</VirtualHost>부분의 IP bind 가상호스트부분에서 아파치
웹서버가 응답할 수 있도록 하려면 여기서 IP Address를 지정해 줘야 한다.

ExtendedStatus On

server-status로 아파치웹서버의 상태를 상태를 모니터링 할 때
"자세한상태정보"기능을 제공할 것인지(On) 아닌지(Off)를 설정하는 것이다.

### Section 2: 'Main' server configuration

Section 2에서 설정하는 항목들은 아파치의 주된서버가 사용할 값들을
지정한다. <VirtualHost>에 정의된 가상호스트들에서 지정하지 않는 것은
여기서 지정된 값이 기본값으로 적용된다. 또한 여기서 지정하는 값을 각
<VirtualHost>내에도 지정할 수 있으며 이경우엔 각<VirtualHost>내에서
지정한 값이 우선적용된다.

Port 80

아파치웹서버의 기본포트를 지정한다. 특별하게 사용하는 것이 아니라면
80번으로 해둬야 한다. 사용가능한 포트는 0 ~ 65535이며 1024이하의
포트번호는 시스템에서 특별하게 예약되어 있으므로 80번 이외의 다른
포트를 사용하려면 1024이상의 포트번호를 지정해서 사용해야 할 것이다.
특별한 지정이 없다면 <VirtualHost>에 정의된 각각의 가상호스트들의
기본포트가 된다. 만약 <VirtualHost> 내에서 Port가 지정이 된다면 그
포트번호가 우선한다.

(특별히 PORT를 따로 지정해 줄 필요가 있을 때는 따로 지정해 주며,
이때는 웹서버로 접근할 때 반드시 따로지정한 PORT번호로 접근해야 한다.
예를들어 Port 1234로 지정했다면, 접근시 : http://www.domain.co.kr:1234
로 접속해야한다. 단, 80번은 default이므로 Port번호를 입력하지 않아도
도메인만으로 그냥 접근할 수 있다. 예: http://www.domain.co.kr )

User nobody
Group nobody

아파치 웹데몬이 요청을 받았을 때 여기서 지정한 user와 group으로
응답을 하게된다. 이 설정은 ServerType이 Standalone방식이며, 아파치의
실행이 root권한으로 실행이 되었을 때 유효한 것이다. 많은
웹서버관리자들이 nobody로 설정을 해 두고 있으며, 만약 시스템에 nobody
user가 없다면 새로생성(useradd)을 해야 할 것이다. 단, root로 설정하는
것은 절대로 있어서는 안되며 nobody이외의 다른 시스템사용자 id로 지정을
한다면 정말 신중히 모든면(시스템 보안 및 자원사용등)에서 깊게 고려를
해봐야 한다.

ServerAdmin webmaster@www.domain.co.kr

여기서 지정하는 email address는 웹문서 로딩에러등의 문제에서
클라이언트측으로 보내질 메일주소값이다. 대부분
웹서버관리자의 email address로 설정을 한다.

ServerName new.host.name

클라이언트에게 보여주는 호스트이름을 지정한다. www를 쓰지않는
호스트에서 www를 쓰는 것처럼 보이게 할 수 있다. 예를 들어
bbs.manualand.co.kr을 www.manualand.co.kr로 지정해서 쓸 수 있다.
이곳에 IP Address를 적게 되면 클라이언트에는 Ip Address를 보여준다.

DocumentRoot "/usr/local/apache/htdocs"

아파치 웹서버의 웹문서가 있는 경로를 지정한다. 예를 들어
"http://www.manualand.co.kr/index.html"의 초기 문서라면 이 초기문서의
절대 경로는 여기서 지정된 "/usr/local/apache/htdocs/index.html"이 된다.
경로의 맨 마지막에 "/"를 추가해서는 안된다. Alias를 사용하여 다른 위치를
지정할 수도 있다.

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory>에서 지정되는 값에 대한 옵션은 다음과 같은 의미를 가지고
있다.
None : 일단 모든허용을 하지 않는다.
All : 모든허용을 한다.
Indexes :
Includes :
FollowSymlinks :
ExeCGI :
MultiViews :


UserDir public_html

하나의 아파치 웹서버에서 여러 사용자의 홈페이지를 별도로 만들어
관리할 때 필요한 개별 가입자의 홈페이지 디렉토리이름이다. 예를 들어
sspark이란 계정가입자의홈페이지는 "http://manualand.co.kr/~sspark"라는
홈페이지를 가지고 있을 때 sspark의 계정에서 "public_html"이란
디렉토리가 홈디렉토리가 되어 이 디렉토리에 있는 초기문서 index.html을
불러서 보여주게 된다.

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch
IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY
MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>

계정사용자의 홈페이지(public_html)의 접근에 대한 옵션을 지정한 것이다.


DirectoryIndex index.html

디렉토리만을 지정했을 경우에 그 디렉토리에서 찾게될 문서의 순서를
지정해 준다. 즉, 디렉토리 이름만을 지정하더라도 여기서 지정한
index.html을 찾아서 웹브라우즈에 보여준다. 여러개의 파일을 지정할 수
있으며, 이런 경우에는 순서대로 찾아서 보여준다. 예를 들어
"DirectoryIndex index.html index.htm"로 지정했다면 먼저 "index.html"을
찾아서 있다면 이 파일을 로딩하고, "index.html"이 없다면 "index.htm"을
찾아서 로딩해 준다.

AccessFileName .htaccess

디렉토리별로 접근제어할 정보(ID, Password)를 담고 있는 파일을
지정한다. 디렉토리별로 인증을 거쳐서 접근할 수 있는 설정을 하기위한
것이다. 예를 든다면 어떤 홈페이지의 전부나 혹은 일부에로 접근하려고 할
때 ID, Password를 묻는 창이 뜨면서 맞게 입력한 경우에만 접근허용하는
것이다. 보안상의 이유로 이 파일의 이름을 다른 이름으로 바꾸로 싶다면
".htaccess"대신에 다름이름을 적어주면 된다.

<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>

바로위에서 설정한 파일(".htaccess")의 내용을 볼 수 없게 할 때 사용하는
옵션이다. 보안상의 이유로 이 옵션은 설정해 두는 것이 좋다. 만약 이
옵션을 주석처리해 둔다면 ".htaccess"파일에 대한 보안은 누구도 장담할 수
없을 것이다.


UseCanonicalName On



TypesConfig conf/mime.types

웹서버의 mime type을 지정한 파일을 지정한다. mime.types파일은 서버에
의해 리턴될 수 있는 파일명과 mime형식을 기술해 놓은 파일이다.

DefaultType text/plain

mime.types 파일에 정의 되어있지 않은 파일형식에 대한 요청을 받았을 때
알 수 없는 문서타입에 대하여 사용할 기본적인 mime 타입을 정해둔다.


HostnameLookups Off

웹서버의 로그(access_log)를 지정하는 Format에서 "DNS Lookup"으로
지정하였을 때, domain으로 남길 것인가, IP Address로 남길 것인가를
지정한다. Default로 Off는 IP Address로 남기는 것이며, Domain으로 변경할
필요가 없으므로 on으로 설정한 것보다는 속도가 조금빠르다.on으로 하게
되면 IP address를 IP Domain으로 변환해야 하므로 속도가 조금 느릴 수
있다.

ErrorLog logs/error_log

아파치 웹서버의 에러로그 기록파일을 지정한다. 참고할 사항은 맨
마지막에 설정하는 <VirtualHost>부분에서 각서버에 대한 에러파일을
지정해 두지 않으면 그에 대한 에러로그도 여기에 기록되며, 지정해 두게
되면 그에 해당하는 로그는 이 파일에 기록되지 않는다.

LogLevel warn

바로위에서 설정한 에러로그 파일에 얼마나 자세하게 적을 것인지를
결정한다. 다음에 해당하는 순서대로 중요도가 정해진다. " debug → info →
notice → warn → error → crit → alert → emerg "

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i"
"%{User-Agent}i"" combind
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

바로 아래에서 사용할 CustomLog에서 사용할 몇가지 로그형식의 별명을
정한 곳이다.
웹서버의 관리자나 서버관리자는 이 부분을 특히 유심히 봐둬야 한다.
웹서버의 로그를 어떤 식으로 남길 것인가를 결정하는 Format을 지정하는
곳이다. 원하는 정보를 지정해서 볼 수 있으므로, 관리자에게 필요한
Format으로 설정해야 하며, 또한 접속통계를 내기에 적당한 Format으로
설정해 둬야 한다.

CustomLog logs/access_log common

위에서 정한 로그형식(여기선 common)대로 로그를 남기게 된다.
맨마지막에서 지정하는 <VirtualHost>부분에서도 아파치 1.3.9버전 부터는
CustomLog를 가상호스트별로 지정할수 있도록 CustomLog를 제공한다.
<VirtualHost>에서 CustomLog를 지정하지 않으면 여기서 지정한 형식대로
로그를 남기게 되며 <VirtualHost>부분에서 CustomLog를 지정했을
경우에는 여기서 지정한 로그형식은 무시된다.

#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
#CustomLog logs/access_log combined

위에서 지정한 4가지의 로그형식(combind, common, referer, agent)중에서
원하는 부분의 #(주석행)을 제거하면 지정된다.

ServerSignature On

서버가 생성하는 문서(error documents, FTP directory listings,
mod_status and mod_info output etc., but not CGI generated documents)의
trailing footer line의 설정을 가능하게 한다.

Alias /icons/ "/usr/local/apache/icons/"

필요한 만큼의 디렉토리 별칭을 만들어 쓸 수 있다. 사용하는 형식은
다음과 같다.
Alias fakename(가상이름) realname(진짜이름)

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

ScriptAlias는 서버스크립트를 포함한다. ScriptAlias는 실제디렉토리 안에
들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것을
제외하고는 근본적으로 Aliases와 같다.


IndexOptions FancyIndexing

IndexOPtions는 디렉토리목록을 표시할 때 사용할 옵션을 지정한다.
Standard는 표준적인 디렉토리를 나타내며, FancyIndexing은 좀더 예쁜
디렉토리목록을 표시해 준다.



아래에서 지정하는 AddIcon으로 시작하는 설정은 바로위에서 설정한
디렉토리인덱싱 옵션을 FancyIndexing으로 한 경우에 해당하며 디렉토리
목록을 표시할 때 각 파일 확장자에 따라서 어떤 아이콘을 선택하여 보여줄
것인지를 지정한다.

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^


DefaultIcon /icons/unknown.gif

여기서 지정한 확장가가 아닌 경우에 여기서 지정한 기본아이콘으로
보여준다.

AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive" .tgz

AddDescription은 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을
표시할 때 사용한다. 이 설정은 IndexOptions가 FancyIndexing으로
설정되었을때만 표시되며, 설정형식은 다음과 같다.
형식 : AddDescription "표시할 설명" 파일확장자

ReadmeName README

ReadmeName은 디렉토리목록표시 뒤에 붙여서 보여줄 README파일의
이름을 지정한다.(일종의 꼬릿말)

HeaderName HEADER

HeaderName은 디렉토리목록표시 앞에 붙여질 파일의 이름을 지정한다.
(일종의 머릿말)

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

디렉토리목록을 인덱싱할 때 제외할 파일명을 지정한다. 즉 디렉토리
목록에 포함하지 않을 파일을 지정한다. 쉘스타일의 와일드카드(*, ?)가
허용된다.

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

AddEncoding은 특정브라우즈(Mosaic/X 2.1+)에서 받고있는 중에 정보에
대한 압축해제를 할 수 있도록한다. 단 모든 웹브라우즈에서 이 기능을
제공하는 것은 아니다.

AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it

AddLanguage는 문서의 언어를 지정하게 한다.

LanguagePriority en fr de

언어의 우선순위를 내림차순으로 지정한다.

AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
AddType application/x-tar .tgz

AddType은 mime.types의 실제 편집없이도 mime을 설정할 수 있다.

AddHandler cgi-script .cgi

AddHandler는 파일확장자를 처리기(Handler)에 매핑(연결)시켜주게 된다.

AddType text/html .shtml
AddHandler server-parsed .shtml

SSI(Server Side Include)문서를 인식하게 하기위한 설정이다. SSI코드가
들어가 있는 문서는 확장자가 *.shtml이다. 시스템의 날짜와 카운터등
CGI프로그램을 하지 않아도 HTML문서에서 단 몇줄로 CGI의 효과를 낼 수
있는 SSI기능을 인식하게끔 하는 설정이다. "7장. 아파치와 SSI"편에서 자세히
설명되어 있다.


#Format: Action media/type /cgi-script/location
#Format: Action handler-name /cgi-script/location

Action은 매칭되는 파일이 호출될때마다 스크립트를 실행시킬 수 있도록
미디어 타입을 정의한다.

MetaDir .web

MetaDir은 아파치가 찾을 메타정보파일들의 디렉토리이름을 지정한다. 이
파일들은 문서를 전송할 때 포함되는 HTTP 헤더정보가 포함되어 있다.

MetaSuffix .meta

MetaSuffix는 메타정보를 포함하고 있는 접미어의 이름을 지정한다.


에러발생시 응답을 정의할 수 있는 방법을 3가지 나타내고 있다.

1) 일반적인 텍스트

ErrorDocument 500 "The server made a boo boo.

2) 지역적인 방향전환

ErrorDocument 404 /missing.html
ErrorDocument 404 /cgi-bin/missing_handler.pl

3) 외부 방향전환

ErrorDocument 402
http://some.other_server.com/subscription_info.html


다음의 BrowserMatch는 keepalives기능을 쓰지못하게 하며 HTTP
헤드방식을 설정한다.

BrowserMatch "Mozilla/2" nokeepalive

이 설정은 Netscape 2.x 또는 이를 따르는 브라우즈에 대하여 KeepAlive
기능을 쓰지 못하게한다.

BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0
force-response-1.0

이 설정은 잘못구현된 HTTP/1.1과 301또는 302반응에 대하여
KeepAlive를 적절히 제공하지 못하는 마이크로소프트 인터넷익스플로러
4.0b2d에 관한 것이다.

BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0

위의 3가지 설정은 기본적인 1.1반응도 처리하지 못하며 HTTP/1.0 스팩을
제한하고 있는 브라우즈에 대하여 HTTP/1.1반응을 하지 못하게 한 것이다.

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from www.manualand.co.kr
</Location>

서버의 상태를 점검할 수 있게하는 설정이다. 이는
"http://www.manualand.co.kr/server-status"와 같은 형식으로 서버의 상태를
점검할 수 있다. "6장. 아파치서버 모니터링"편에서 자세히 설명되어 있다.
여기서 지정한 "SetHandler server-status"의 설정으로 인해 서버
모니터링을 할 수 있는 것이다.

<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from www.manualand.co.kr
</Location>

이설정을 위해서는 mod_info.c가 적재되어야 하며, 이는
"http://www.manualand.co.kr/server-info"와 같은 방식으로 서버의 정보를
볼 수 있다. 위에서 설정한 server-status와 함께 실행중인 웹서버의
상태점검을 위한 것이다.

<Location /cgi-bin/phf*>
Deny from all
ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
</Location>

아파치 1.1이전 버전의 오래된 버그에 대한 악용이 있을시에는 지정한곳
(http://phf.apache.org/phf_abuse_log.cgi) 으로 방향을 전환시킨다.


<IfModule mod_proxy.c>
ProxyRequests On

아파치 웹서버를 Proxy서버로 사용할 때 on을 해줘야 한다. 즉
프락시서버 지시자로서 프락시서버를 on 시킨다.

<Directory proxy:*>
Order deny,allow
Deny from all
Allow from .your_domain.com
</Directory>

ProxyVia On

HTTP/1.1 "Via:"헤드처리를 활성화시킬 것인지 비활성화 시킬것인지를
지정한다. Off, On, Full, Block중 하나가 올 수 있으며 Full은 서버버전을
포함하며, Block은 나가는 모든 것에 대해 Via:헤더를 제거한다.

CacheRoot "/usr/local/apache/proxy"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
NoCache a_domain.com another_domain.edu joes.garage_sale.com

이 설정은 캐시기능을 활성화 하기 위한 것이다.

### Section 3: 가상호스트 설정

여러분의 시스템에서 여러개의 도메인이나 호스트네임을 설정하여
관리하고자 한다면 <VirtualHost>부분을 설정해 줘야 한다. 가상호스트에
대한 정보는 http://www.apache.org/docs/vhosts/를 참조해 보면 좀더
자세한 정보를 얻을 수 있다. '-S'옵션을 사용함으로써 가상호스트의 설정에
대한 점검을 할 수 있다. name-based 가상호스트를 사용하길 원한다면
적어도 한 개이상의 IP Address를 정의할 필요가 있다. "4-2절의 내용"과
"10장.웹호스팅 서비스를 위한 가상호스트"편에서 자세히 설명되어 있다.

NameVirtualHost 12.34.56.78:80
NameVirtualHost 12.34.56.78

<VirtualHost www.manualand.co.kr>
ServerAdmin webmaster@manualand.co.kr
DocumentRoot /home/sspark/public_html
ServerName www.manualand.co.kr
ErrorLog /home/sspark/public_html/aw/error_log
CustomLog /home/sspark/public_html/aw/access_log common
</VirtualHost>

ServerAdmin은 해당서버의 관리자 전자우편이며,
DocumemtRoot는 해당서버의 홈디렉토리이며,
ServerName은 해당서버의 도메인이며,
ErrorLog는 해당서버의 에러파일 위치이며
CustomLog는 로그파일위치와 포맷을 지정한 것이다.

<VirtualHost _default_:*>
</VirtualHost>

Default 가상호스트 설정으로 위에서 설정되지 않은 다른 모든 호스트에
대해서 응답을 하고자 할 경우설정해 준다.


출처

http://www.nehome.net/

2006/09/11 10:21 2006/09/11 10:21
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 서른하나...새로운 시작
원본 http://blog.naver.com/iloview012/40003963448

1.vi편집기로 아래와 같은 스크립트를 만듭니다.

[root@op root]# vi rotate.sh
#!/bin/bash
DATE=`/bin/date +%y%m%d`
/bin/cp /usr/local/apache/logs/access_log /usr/local/apache/logs/access_log.$DATE
cat /dev/null > /usr/local/apache/logs/access_log
/bin/gzip /usr/local/apache/logs/access_log.$DATE
/bin/cp /usr/local/apache/logs/error_log /usr/local/apache/logs/error_log.$DATE
cat /dev/null > /usr/local/apache/logs/error_log
/bin/gzip /usr/local/apache/logs/error_log.$DATE
위의 아파치 로그 경로는 실제 아파치 로그가 있는 경로로 설정해주면 됩니다.
예를 들어 /var/log/httpd/에 로그파일을 옮겼다면 모든 경로를
/var/log/httpd로 바꿔놓으면 됩니다.

2.다음과 같이 실행 가능한 파일로 변경 합니다.
[root@op root]# chmod 755 rotate.sh

3.위의 스크립트를 clontab에 넣어서 매일 실행하게 합니다.
[root@op root]# crontab -e
0 3 * * * /root/rotate.sh
스크립트가 있는 경로를 등록해주시면 되고 매일 3시에 돌게 되어있습니다.

4.스크립트가 실행되어 로그가 일자별로 압축되어 저장된 결과입니다.
[root@op root]# cd /usr/local/apache/logs/
[root@op logs]# ls
access_log access_log.031031.gz error_log error_log.031031.gz httpd.pid
로그체크를 할때 필요한 날짜의 로그만 압축을 풀어서 확인하시면 되겠죠?

위의 스크립트를 응용하면 아파치 로그뿐만 아니라 /var/log 아래
있는 여러 로그들을 일별로 효율적으로 관리할 수 있습니다.


* 출처 : www.inet.co.kr

2006/09/11 10:21 2006/09/11 10:21
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)