목차
레퍼런스 : http://blog.paran.com/psycho/7981318
자주쓰는 아파치 설정사항 정리
브라우징 제거
아파치의 디폴트세팅은 브라우징이 enable되어 있다. 브라우징이란 웹브라우저에서 URL입력시 index.html과 같은 정확한 파일명을 생략하고 디렉토리만 적었을 경우, 디렉토리내 파일목록이 출력되는 현상을 말한다.
http.conf의 디렉토리 디렉티브내 다음줄 추가
Options -Indexes
아파치 인증창 사용
http.conf에서 인증을 걸 디렉토리 디렉티브내 다음줄 추가
AllowOverride AuthConfig
해당 디렉토리에 다음과 같이 .htaccess파일(텍스트파일) 생성
[root@ns mrtg]# cat .htaccess AuthName "MRTG를 위한 인증" AuthType Basic AuthUserFile /webhosting/mrtg/.auth require valid-user
AuthName: 인증창 타이틀 AuthType: 인증형태 AuthUserFile: 인증자들의 리스트를 가진 파일(htpasswd명령어로 생성)
-c(create)는 처음 파일을 생성할때 필요하다.
[root@ns mrtg]# htpasswd -c .auth kang New password: Re-type new password: Adding password for user kang [root@ns mrtg]# ls -l .auth -rw-r--r-- 1 root root 19 May 3 16:54 .auth
각 유저별 www 폴더에 브라우징 권한 부여
chmod 711 /home/UserDir chmod 755 /home/UserDir/public_html
외부 IP접근제어
http.conf의 디렉토리 디렉티브내 다음줄 추가
AllowOverride AuthConfig Order Allow,Deny Deny from 211.43.134.128/24 xxx.xxx.xxx.xxx/24 Allow from all
Deny from 에 접근차단할 ip대를 입력.
슬래쉬(/)뒤의 숫자들은 net mask지정(생략하면 single ip에 대한 차단)
위의 내용을 종합한 예는 다음과 같다.
Options -Indexes FollowSymLinks MultiViews AllowOverride AuthConfig Order allow,deny Allow from all Deny from 211.43.134.128/24 xxx.xxx.xxx.xxx/24
가상호스트/Redirect
아래의 예는 dbakorea.pe.kr로 오면, www.dbakorea.pe.kr로 redirect시킨다.
본인은 아파치말고, packet filtering으로 처리하려했으나 실력부족과 게으름으로 인해 그만두었다.
ServerName dbakorea.pe.kr Redirect / http://www.dbakorea.pe.kr
가상호스트의 전형적인예
ServerAdmin kang at dbakorea.pe.kr DocumentRoot /webhosting/dbakorea-mobile ServerName mobile.dbakorea.pe.kr ErrorLog /usr/local/apache/logs/mobile.dbakorea.pe.kr-error_log CustomLog /usr/local/apache/logs/mobile.dbakorea.pe.kr-access_log common ScriptAlias /cgi-bin/ /webhosting/dbakorea-mobile/cgi-bin/ DirectoryIndex login.html
아파치 정보출력제어
80포트로 telnet후 get / http/1.0하면 나오는 정보제어
ServerTokens Prod[uctOnly] : Apache 만 보여줌 ServerTokens Min[imal] : Apache 버젼만 보여줌 ServerTokens OS : 아파치 버젼과 운영체제를 보여줌 ServerTokens Full (또는 지시하지 않았을때) : 모두 보여줌
Offline Browser서비스 거부(출처: http://www.apache.kr.net)
WebZip만 테스트해봤지만 %{User-agent} 라는 변수에 'MSIE 6.0b'와 같이 찍힌다.
한마디로 안된다. 다른 용도로 사용될 지 몰라도,..
Options FollowSymLinks AllowOverride None Order allow,deny Allow from all Deny from env=go_out #CustomLog /usr/local/apache/logs/access_log common #CustomLog /usr/local/apache/logs/referer_log referer #CustomLog /usr/local/apache/logs/agent_log agent CustomLog /usr/local/apache/logs/access_log combined BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 BrowserMatch "WebZIP" go_out BrowserMatch "Teleport" go_out BrowserMatch "GetRight" go_out BrowserMatch "WebCopier" go_out ServerAdmin kang@dbakorea.pe.kr DocumentRoot /webhosting/dbakorea ServerName www.dbakorea.pe.kr ServerAlias dbakorea.pe.kr ErrorLog /usr/local/apache/logs/www.dbakorea.pe.kr-error_log CustomLog /usr/local/apache/logs/www.dbakorea.pe.kr-access_log combined
아파치 로그 rotate
디폴트로 아파치로그는 wtmp, lastlog등과 같이 일정 시간, 크기..등등에 따라 로그의 순환이 이루어지지 않는다.
logrotate로 3개의 로그를 1달단위로 순환하려면 /etc/logrotate.conf파일의 마지막에 다음과 같이 추가한다.
# system-specific logs may be configured here /usr/local/apache/log/www.dbakorea.pe.kr-access_log { monthly rotate 2 }
바이러스등에 대한 아파치로그 제거
# CodeRed Worm등의 로그제거 SetEnvIf Request_URI default\.ida CodeRed SetEnvIf Referer \.ida CodeRed SetEnvIf Request_URI cmd\.exe CodeRed SetEnvIf Referer cmd\.exe CodeRed SetEnvIf Request_URI root\.exe CodeRed SetEnvIf Referer root\.exe CodeRed ServerAdmin kang at dbakorea.pe.kr DocumentRoot /webhosting/dbakorea ServerName www.dbakorea.pe.kr ServerAlias dbakorea.pe.kr ErrorLog /usr/local/apache/logs/www.dbakorea.pe.kr-error_log CustomLog /usr/local/apache/logs/www.dbakorea.pe.kr-access_log combined env=!CodeRed
설치된 모듈 확인
[root@ns /root]# httpd -l Compiled-in modules: http_core.c mod_env.c mod_log_config.c mod_mime.c mod_negotiation.c mod_status.c mod_include.c mod_autoindex.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_so.c mod_setenvif.c mod_php4.c suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec
설정파일 확인(Virtual Host Only by httpd -S)
컴파일 설정보기
[root@ns /root]# httpd -V Server version: Apache/1.3.26 (Unix) Server built: Sep 17 2002 00:36:53 Server's Module Magic Number: 19990320:13 Server compiled with.... -D HAVE_MMAP -D HAVE_SHMGET -D USE_SHMGET_SCOREBOARD -D USE_MMAP_FILES -D HAVE_FCNTL_SERIALIZED_ACCEPT -D HAVE_SYSVSEM_SERIALIZED_ACCEPT -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D HTTPD_ROOT="/usr/local/apache" -D SUEXEC_BIN="/usr/local/apache/bin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/httpd.scoreboard" -D DEFAULT_LOCKFILE="logs/httpd.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" -D ACCESS_CONFIG_FILE="conf/access.conf" -D RESOURCE_CONFIG_FILE="conf/srm.conf" [root@ns /root]#
SSI를 사용
CGI와 거의 비슷하게 세팅한다.
아파치(Apache)의 설정파일은 이젠 httpd.conf하나로 통일되었으므로 이 파일에 모든 설정을 한다.
AddType text/html .shtml AddHandler server-parsed .shtml
위의 2개를 꼭 있어야 한다. 그리고 CGI와 마찬가지로 ssi가 실행될 디렉토리에 Includes옵션을 설정한다.
아래의 예는 /www/htdocs/count라는 티렉토리에 CGI, SSI가 실행될 수 있게 한다.
# 내가 추가(Options에 ExecCGE는 CGI를 사용하기위해, Includes는 SSI를 사용하기 위해) Options ExecCGI Includes AllowOverride None
favicon.ico 에러 감추기
vi {..}/httpd.conf
Redirect 404 /favicon.ico <Location /favicon.ico> ErrorDocument 404 "no favicon" </Location>