###################[ /usr/local/http/bin/:./httpd -[option] ]##################
아파치 웹서버의 각종 설정에 대한 지시자들의 집합
지시자라 함은 Port, ErrorLog, DocumentRoot 등과 같이
httpd.conf안에 들어있는 항목들을 얘기한다.
Httpd 실행 파일을 통해 알 수 있는 내용
사용옵션
-D name : <IfDefine name> 지시자에서 사용되는 이름을 정의함.
-d directory : 아파치실행시에 아파치의 Root 경로를 따로 지정해 줄 수 있음.
-f file : 아파치 설정파일을 직접 지정해 줄 수 있음.
-C "directive" : 아파치 설정파일을 읽기 전의 process dirctive
-c "dirctive" : 아파치 설정파일을 읽은 후의 process directive
-v : 아파치의 버전을 보여줌.
-V : 컴파일시 사용했던 옵션을 보여줌.
-h : httpd 실행시 사용할 수 있는 옵션들의 도움말을 보여줌.
-l : 컴파일시 사용했던 모듈들을 보여줌.
-L : 설정가능한 지시자를 보여줌.
-S : 설정되어있는 가상호스트를 보여줌.
-t : 설정파일(httpd.conf)파일의 문법적인 체크를 할 수 있음.
-T : DocumentRoot 항목체크는 제외하고 설정파일의 문법적인 테스트함.
<실습>
[root@kakasi:10:03:55]#pwd
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
/usr/local/http/bin
[root@kakasi:10:03:56]#./httpd -v
Server version: Microsoft IIS/6.0/6.0.15 (Unix)
Server built: Oct 14 2009 04:03:02
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@kakasi:10:03:58]#./httpd -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_so.c
[root@kakasi:10:04:45]#./httpd -t
Syntax OK
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@localhost:10:24:18]#./httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server 203.237.211.230 (/usr/local/httpd/conf/extra/httpd-
vhosts.conf:27)
port 80 namevhost 203.237.211.230 (/usr/local/httpd/conf/extra/httpd-
vhosts.conf:27)
Syntax OK
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
</실습>
----------------------------------[ END ]--------------------------------------
########################[ conf디렉터리의 구성내용 ]############################
[root@kakasi:10:05:59]#ls
extra httpd.conf magic mime.types original
Extra/ 아파치 추가 설정 파일들이 들어있는 디렉토리
httpd.conf 아파치 메인 설정 파일
magic file 이란 명령어가 참조하는 파일의 type가 정의 되어 있는 text 파일
mime.types 웹상에서 쓰이는 파일의 종류에 대해 정의 해놓은 파일로서 예를 들면 jpeg는
그래픽 파일이란것을 이 파일을 통해 웹 서버는 구분한다.
Original 초기 원본 설정 파일들이 보관되는 디렉토리
Mime 란 무엇인가?
MIME (Multipurpose Internet Mail Extensions) 는 전자우편을 위한 인터넷 표준 포맷이다.
전자우편은 7비트 ASCII 문자를 사용하여 전송되기 때문에 8비트 이상의 코드를 사용하는
문자나 바이너리 파일들은 MIME 포맷으로 변환되어 SMTP로 전송된다. 실질적으로 SMTP로 전
송되는 대부분의 전자우편은 MIME 형식이다. MIME 표준에 정의된 content types은 HTTP 와
같은 통신 프로토콜에서 사용되며, 점차 그 중요성이 커지고 있다.
----------------------------------[ END ]--------------------------------------
########################[ httpd.conf ]############################
[root@kakasi:10:14:17]#pwd
/usr/local/http/conf
[root@kakasi:10:14:18]#vi httpd.conf
```````````````````````````````````````````````````````````````````````````````
139 ServerAdmin you@example.com (서버관리자 이메일 주소)
155 DocumentRoot "/usr/local/http/web" (웹파일 디렉토리 지정)
165 <Directory /> ( )
166 Options FollowSymLinks
167 AllowOverride None
168 Order deny,allow
169 Deny from all
170 </Directory>
216 <IfModule dir_module> (웹서버를 시작할 수 있는 웹문서파일 지정)
217 DirectoryIndex index.html (순서는 앞에서 부터 차례대로 찾는다.)
218 </IfModule>
224 <FilesMatch "^\.ht"> (파일의 확장자를 지정)
225 Order allow,deny
226 Deny from all
227 Satisfy All
228 </FilesMatch>
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
237 ErrorLog "logs/error_log" (에러 로그가 쌓이면 문제가 된다.)
240 # LogLevel: Control the number of messages logged to the error_log.
241 # Possible values include: debug, info, notice, warn, error, crit,
242 # alert, emerg.
244 LogLevel warn (에러 로그를 남기는 레벨 설정)
상황에 맞게 끔 로그가 쌓이게된다. 그것을 결정해주는 게 LogLevel 이다.
쌓이는 순서
debug, >>info, >>notice, >>warn, >>error, >>crit, >> alert, >>emerg.
info, >>notice, >>warn, >>error, >>crit, >> alert, >>emerg
notice, >>warn, >>error, >>crit, >> alert, >>emerg
warn, >>error, >>crit, >> alert, >>emerg
error, >>crit, >> alert, >>emerg
241 # Possible values include: debug, info, notice, warn, error, crit,
242 # alert, emerg.
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
<IfModule log_config_module>
251 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}
i\"" combined
252 LogFormat "%h %l %u %t \"%r\" %>s %b" common
253
257 </IfModule>
258
266 CustomLog "logs/access_log" common
272 #CustomLog "logs/access_log" combined
273 </IfModule>
로그남기는 형식 설정하는 부분이다.
common, combined 로 설정
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
<로그 설정 변경>
[root@kakasi:10:23:30]#mkdir /weblogs
[root@kakasi:10:23:36]#touch /weblogs/error_log
[root@kakasi:10:23:39]#touch /weblogs/access_log
[root@kakasi:10:23:41]#chown -R webuser:webuser /weblogs/
<httpd.conf>
에러로그
237 #ErrorLog "logs/error_log" (바꿈.)
238 ErrorLog "|/usr/local/http/bin/rotatelogs /weblogs/error_log 60"
로그를 로테이션 시키는데 로그를 60초 단위로 남긴다는 뜻
액세스로그
267 #CustomLog "logs/access_log" common
268 CustomLog "|/usr/local/http/bin/rotatelogs /weblogs/access_log 60" common
</로그 설정 변경>
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
```````````````````````````````````````````````````````````````````````````````
[root@kakasi:11:36:51]#ls
access_log access_log.1255574160 error_log error_logs.1255574160
[root@kakasi:11:36:51]#cat access_log
[root@kakasi:11:36:52]#cat access_log.1255574160
127.0.0.1 - - [15/Oct/2009:11:36:05 +0900] "GET /server-status HTTP/1.1" 404 211
[root@kakasi:11:36:53]#cat error_logs.1255574160
[Thu Oct 15 11:36:02 2009] [warn] Init: Session Cache is not configured [hint:
SSLSessionCache]
[Thu Oct 15 11:36:02 2009] [notice] Digest: generating secret for digest
authentication ...
[Thu Oct 15 11:36:02 2009] [notice] Digest: done
[Thu Oct 15 11:36:03 2009] [notice] Microsoft IIS/6.0/6.0.15 (Unix) mod_ssl/6.0.15
OpenSSL/0.9.8e-fips-rhel5 DAV/2 configured -- resuming normal operations
[Thu Oct 15 11:36:05 2009] [error] [client 127.0.0.1] File does not exist: /usr/loca
로그가 쌓이는 걸 볼 수 있다.
----------------------------------[ END ]--------------------------------------
<날짜대로 로그 쌓이게 바꾸기>
[root@kakasi:11:38:08]#vi httpd.conf
```````````````````````````````````````````````````````````````````````````````
238 ErrorLog "|/usr/local/http/bin/rotatelogs /weblogs/error_logs.%Y%m%d 86400"
CustomLog "|/usr/local/http/bin/rotatelogs /weblogs/access_log.%Y%m%d 86400"
common
```````````````````````````````````````````````````````````````````````````````
:wq
[root@kakasi:11:38:39]#ps -ef |grep http
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
root 6287 6284 0 11:36 ? 00:00:00 /usr/local/http/bin/rotatelogs
/weblogs/error_logs 60
root 6289 6284 0 11:36 ? 00:00:00 /usr/local/http/bin/rotatelogs
/weblogs/access_log 60
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
</날짜대로 로그 쌓이게 바꾸기>
########################[ 확장자에 따른 로그 파일 분류 ]############################
SetEnvIf 를 이용한 필터링 기능
Request_URI
웹서버 튜닝 중에 이미지 파일만 별도의 웹서버로 분리하는 방법이 있다.
이 방법은 Request와 I/O 출력, 트래픽을 분산하는 효과가 잇을 것이다.
이런 튜닝 방법과는 다르지만 images 로그만 별개로 파일로 저장하는
방법을 소개한다.
다음은 이미지파일은 images_logs에, Codered나 Nimda 등의 warm은 warm_log에
저장하는 설정이다.
예)
SetEnvIf Request_URI".gif$" except=images
SetEnvIf Request_URI".jpe?g$" except=images
SetEnvIf Request_URI".png$" except=images
SetEnvIf Request _URI “.^/default.ida$” except=warm #codered
SetEnvIf Request _URI “/root.exe?” except=warm #Nimda
SetEnvIf Request _URI “/cmd.exe?” except=warm
SetEnvIf Request _URI “^/NULLprinter” except=warm
SetEnvIf Request _URI “^/NULLIDA?” except=warm
SetEnvIf Request _URI “^/NULL.ida?” except=warm
SetEnvIf Request _URI “^/NULL.idq?” except=warm
<실습>
[root@kakasi:11:53:16]#vi httpd.conf
```````````````````````````````````````````````````````````````````````````````
269 # Use SetEnvIF Log Filtering
270 SetEnvIF Requiest_URI ".gif$" except=images
271 SetEnvIf Request _URI “/cmd.exe?” except=warm
272
273 SetEnvIf except images images
274 SetEnvIf except warm warm
275
276 CustomLog "|/usr/local/http/bin/rotatelogs /weblogs/access_log.%Y%m%d 86400"
common env=!except
277 CustomLog "/weblogs/image_log" common env=images
278 CustomLog "/weblogs/warm_log" combined env=warm
```````````````````````````````````````````````````````````````````````````````
:wq
gif$ >> gif 에 대한 로그는 /weblogs/image_log 에 쌓이고
cmd.exe? 라는 요청에 대한 로그는 /weblogs/warm_log 에 쌓인다.
이런식으로 로그파일을 분류할 수 있다.
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@kakasi:11:54:01]#../bin/httpd -t
Syntax OK
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
http://192.168.10.180/cmd.exe? 인터넷 접속한다.
로그 디렉토리를 살펴본다.
[root@kakasi:11:55:47]#ls
access_log error_log error_logs.20091015
access_log.1255574160 error_logs.1255574160 image_log
access_log.20091015 error_logs.1255575240 warm_log
[root@kakasi:11:55:27]#cat warm_log
192.168.10.26 - - [15/Oct/2009:11:55:26 +0900] "GET /cmd.exe? HTTP/1.1" 404 205 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)"
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
즉, 원래대로라면 http://192.168.10.180/cmd.exe?
라는 Request를 받았을 때 access_log.20091015
라는 파일이 생기고 거기에 로그가 남아야 됩니다.
그쵸?
그런데 지금 access_log.20091015란 파일은 안생기고 뭐가 생겼나요?
warm_log 이거 생겼죠?
더 자세한 내용은
http://httpd.apache.org/docs/2.1/logs.html 참고
</실습>
----------------------------------[ END ]--------------------------------------
############################[ Directory 지시자 ]###############################
아래는 Directory 지시자에 사용되는 옵션의 뜻이다.
+-----------------------------------------------------------------------------+
None: 모든 접근 거부
All: 모든 접근 허용
Indexes: 디렉토리 인덱스 파일이 없을 경우 파일목록의 출력
Includes: 서버측의 추가적인 포함기능 활성화(SSI)
IncludesNOEXEC: 서버측의 포함기능은 사용, #exec #include
등의 CGI스크립트는 X
FollowSymLinks: 서버측 심볼릭 링크 사용
ExecCGI --> CGI 스크립트의 실행 가능
MultiViews: 컨텐트 협상 활성화
그리고.. AllowOverride는 사용자 인증에 관한 지시자입니다.
----------------------------------[ END ]--------------------------------------
########################[ 디렉토리 리스팅 1 ]############################
165 <Directory />
166 Options FollowSymLinks
167 AllowOverride None
168 Order deny,allow
169 Deny from all
170 </Directory>
루트 디렉토리에 심볼릭 링크
[root@kakasi:12:04:19]#ln -s / ./test.html
[root@kakasi:12:04:21]#ll
total 28
drwxr-xr-x 2 webuser webuser 4096 Oct 15 12:04 .
drwxr-xr-x 16 root root 4096 Oct 14 04:18 ..
-rw-r--r-- 1 root root 12 Oct 14 04:18 index.html
lrwxrwxrwx 1 root root 1 Oct 15 12:04 test.html -> /
익스플로러에서 http://192.168.10.180/test.html
치면 링크 걸린 루트 디렉토리를 다 볼 수 있다.
대안>
165 <Directory />
166 #Options FollowSymLinks << 주석달기
167 AllowOverride None
168 Order deny,allow
169 Deny from all
170 </Directory>
195 Options Indexes << 뒤에 FollowSymLinks 없앴음.
또는 "Option -Indexes" 로 고치기
----------------------------------[ END ]--------------------------------------
########################[ 디렉토리 리스팅 2 ]###############################
디렉토리 리스팅 공격
[root@kakasi:12:09:15]#touch test1
[root@kakasi:12:09:15]#touch test2
[root@kakasi:12:09:16]#mkdir test
[root@kakasi:12:09:16]#ls
index.html test test1 test2 test.html
[root@kakasi:12:09:17]#mv index.html index.html.bak
[root@kakasi:12:09:18]#ls
index.html.bak test test1 test2 test.html
다음 >
인터넷 익스프로러로 http://192.168.10.180 으로 들어가면 디렉토리 정보가 다보인다.
인덱스 확장자인index.html or index.htm 등의 파일이 없을 경우 디렉토리 내부 파일
이 다 보인다.
대안>
httpd.conf파일의
196 Options -Indexes
'-'를 붙여 수정한다.
접속시
Forbidden 에러난다.
----------------------------------[ END ]--------------------------------------
#############################[ .htaccess ]################################
디렉토리에 .htaccess 파일을 만드면 그 디렉토리는 .htaccess 파일대로 설정된다.
따라서 인덱스 리스팅이 가능해진다.
무조건 나쁜게 아니라 어쩔 땐 필요할 때가 있다.
[root@kakasi:12:10:38]#vi .htaccess
````````````````````````````````````````````
Options +Indexes
Order allow,deny
Allow from all
ser
````````````````````````````````````````````
:wq
httpd.conf에
AllowOverride None --> 으로 되어있는데 이러면 모든 파일이 똑같이되므로
204 AllowOverride all --> 이렇게 바꿔준다.
<설명>
Directory 지시자 연습
Home 디렉터리는 웹으로
하위 디렉터리인 test/는 디렉터리 리스팅으로 하기
1.httpd.conf의 홈디렉터리 Option은 -Indexes 추가
2.httpd.conf의 AllowOverride는 FileInfo 혹은 All로
해주어야 .htaccess를 사용할 수 있다.
3. cd test/ 이동 후 vi .htaccess 생성
Options +Indexes
Order allow,deny
Allow from all
이 내용 추가 후 저장
http://www.htaccesseditor.com/kr.shtml#a_fileList <-- htaccess 관련 사이트
Order allow,deny
--> Deny 먼저 적용 후 Allow 적용 Order의 순서는 뒤에 부터 적용됨.
Deny from 192.168.10.19
Allow from all
혹은
Allow from all
Deny from 192.168.10.19
-->적용 범위
Deny from 192.168.10.
192.168.10.19
```
192.168.10. or 192.168.10
192.168.10.0/255.255.255.0
192.168.10.0/24
같은 뜻
[root@kakasi:12:17:20]#vi httpd.conf
```````````````````````````````````````````````````
210 Order allow,deny
211 Deny from 192.168.10.24
212 Deny from 192.168.10.22
213 Allow from all
```````````````````````````````````````````````````
:wq
#service httpd restart
</설명>
----------------------------------[ END ]--------------------------------------
######################[ 환경 변수를 활용한 접근 제어 ]#########################
Robot / bot -->
우리가 사용하는 구글 검색을 할 수 있게 인터넷을 떠돌아 다니며
사이트를 검색해서 자동으로 링크 걸어주는 일종의 프로그램임!!!!
이런 자동화된 프로그램들의 접근 제어라든지 매칭이되는 클라이언트의 접근 제어를
위해 하는 것이다.
BrowserMatch 이 지시자를 통해서 접근 제어를 한다.
실제로 잘 안먹힌다.
단순히 bot만 막는게 아니라 Webzip(사이트 통째로(html,files) 읽어(복사) 가는 놈.)
같은 것도 막는다.
[root@kakasi:12:17:33]#vi httpd.conf
```````````````````````````````````````````````````
182 BrowserMatch "WebZIP" go_out
183 BrowserMatch "Teleport" go_out
184 BrowserMatch "GetRight" go_out
185 BrowserMatch "WebCopier" go_out
186 BrowserMatch "NetZip Downloader 1.0" go_out
187 BrowserMatch "NetZip Downloader/1.0.62" go_out
188 BrowserMatch "Teleport Pro/1.29" go_out
190 <Directory>
218 Order allow,deny
219 Allow from all
220 deny from env=go_out
221
222 </Directory>
288 CustomLog "|/usr/local/http/bin/rotatelogs /weblogs/access_log.%Y%m%d 86400
" combined env=!except
```````````````````````````````````````````````````
:wq
webzip 다운로드 및 설치
http://www.spidersoft.com/webzip/downloads.asp
이제 webzip 이 걸러지는 지 테스트해보자
로그 파일을 tail -f 로 실시간으로 실행시켜놓고
webzip을 이용하여 접속해본다.
[root@kakasi:12:30:01]#service httpd restart
[root@kakasi:12:30:01]#tail -f /weblogs/access_log.20091015
웹집을 실행하여 내 인터넷익스플로러로 접속한 후
아까 로그 를 보면
이렇게 나온다.
192.168.10.26 - - [15/Oct/2009:12:30:20 +0900] "GET / HTTP/1.1" 403 202 "-"
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Embedded Web
Browser from: http://bsalsa.com/; InfoPath.2)"
192.168.10.26 - - [15/Oct/2009:12:30:22 +0900] "GET /test HTTP/1.1" 301 235 "-"
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Embedded Web
Browser from: http://bsalsa.com/; InfoPath.2)"
192.168.10.26 - - [15/Oct/2009:12:30:22 +0900] "GET /test/ HTTP/1.1" 200 338 "-"
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Embedded Web
Browser from: http://bsalsa.com/; InfoPath.2)"
192.168.10.26 - - [15/Oct/2009:12:30:31 +0900] "GET / HTTP/1.1" 403 202
"http://192.168.10.180/test/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
Trident/4.0; Embedded Web Browser from: http://bsalsa.com/; InfoPath.2)"
192.168.10.26 - - [15/Oct/2009:12:30:40 +0900] "GET / HTTP/1.1" 200 12 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2)"
192.168.10.26 - - [15/Oct/2009:12:31:22 +0900] "GET / HTTP/1.1" 200 12 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Win32)"
웹집을 못 막는다.
웹집에 버젼이 낮았을때는 에이전트가 webzip이라고 떠서 막을 수 있었으나
지금은 웹집에서 웹사이트의 파일들을 다운로드 받을 때 MSIE 8.0으로 나온 것을
볼 수 있는데 이 MSIE 8.0을 매칭시켜 막으면 인터넷 접속 자체가 안된다.
그러므로 못 막는다.
----------------------------------[ END ]--------------------------------------
########################[ 배너정보 변조하기 ]############################
[root@kakasi:12:32:48]#wget -S --spider http://192.168.10.180
--12:32:48-- http://192.168.10.180/
Connecting to 192.168.10.180:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Thu, 15 Oct 2009 03:32:48 GMT
Server: Microsoft IIS/6.0/6.0.15 (Unix) mod_ssl/6.0.15 OpenSSL/0.9.8e-fips-rhel5
DAV/2
Last-Modified: Tue, 13 Oct 2009 19:18:46 GMT
ETag: "1e8a6f-c-475d5ea495180"
Accept-Ranges: bytes
Content-Length: 12
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Length: 12 [text/html]
200 OK
뒤쪽에 (Unix) mod_ssl/6.0.15 OpenSSL/0.9.8e-fips-rhel5 DAV/2
이렇게 나오는데 이걸 없애는 것을 하겠다
[서버 시그니쳐] - 보여 줄지 안 보여 줄지 확연하게 결정(딱딱함)
[서버 토큰] - 어느 정도 보여줄지 결정 (유연함)
[root@kakasi:12:32:56]#vi httpd-default.conf
52 # Set to one of: Full | OS | Minor | Minimal | Major | Prod
선택
``````````````````````````````
55 ServerTokens Full <-- 이렇게 되어있어 정보가 다나온다. 밑에 처럼
Server: Microsoft IIS/6.0/6.0.15 (Unix) mod_ssl/6.0.15 OpenSSL/0.9.8e-fips-rhel5
``````````````````````````````
``````````````````````````````
55 ServerTokens Minimal <-- 미니멀로 바꾸었다. 그럼 OS정보가 최소화 되서 나올것이다.
``````````````````````````````
[root@kakasi:12:33:10]#vi httpd.conf <-- httpd-default.conf에 대한 주석을 풀어준다
``````````````````````````````
471 # Various default settings
472 Include conf/extra/httpd-default.conf
``````````````````````````````
[root@kakasi:12:33:12]#service httpd restart
[root@kakasi:12:33:14]#wget -S --spider http://192.168.10.180
--12:33:15-- http://192.168.10.180/
Connecting to 192.168.10.180:80... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Date: Thu, 15 Oct 2009 03:33:17 GMT
Server: Microsoft IIS/6.0/6.0.15
Last-Modified: Tue, 13 Oct 2009 19:18:46 GMT
ETag: "1e8a6f-c-475d5ea495180"
Accept-Ranges: bytes
Content-Length: 12
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Length: 12 [text/html]
200 OK
이렇게 최소화되서 나온것을 확인할 수 있다.
Server: Microsoft IIS/6.0/6.0.15 (Unix) mod_ssl/6.0.15 OpenSSL/0.9.8e-fips-rhel5
DAV/2
--> Server: Microsoft IIS/6.0/6.0.15
----------------------------------[ END ]--------------------------------------