티스토리 뷰
httpd.conf를 확인해보자.
....
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
....
위에 있는 LogFormat에서는 가상 호스트 적용시 접근 URL을 알 수 없으므로 인자를 하다 더 추가하자.
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%v 는 클라이언트에서 요청한 Host 정보를 확인해서 보여준다.
cronolog 설정
일자별로 저장하기 위해서 cronolog를 사용한다.
apache에서 기본 제공하는 rotatelogs가 있지만 일자별로 저장하기보다는 아파치 프로세스 실행 시작 이후 일정 시간이 지나거나 특정사이즈에 대해서 분할하는 것이기에 정확하게는 일자별로 파일을 저장하는 것은 아니다.
예를 들자면,
CustomLog "|/usr/local/apache/bin/rotatelogs /apache_logs/access.log.%Y%m%d 86400" common
위 설정은 일자별로 저장하는 것 같지만 뒤에 86400 이 가리키는 것처럼 하루에 한번씩 로테이션해서 파일을 생생하는 것이다. 파일을 생성할 때 해당 일자를 확인해서 파일명에 추가하는 것 뿐이다.
CustomLog "|/usr/local/apache/bin/rotatelogs /apache_logs/access.log.%Y%m%d_%H%M%S 100M" common
위 설정은 100M 단위로 파일을 로테이션시키며 파일 생성시 시분초까지 확인해서 파일명에 추가해 준다.
cronolog를 사용하면 일자별로 파일을 생성할 수 있다.
cronolog v1.6.2 이 최신 버전이다. 2002년 이후 추가로 개발은 되지 않은 것 같다. 사이트에 가면 몇 개의 패치 파일은 있다.
# tar zxvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure --prefix=/usr/local/server/cronolog
# make && make install
httpd.conf 파일에 다음과 같이 추가한다.
추가할 때 이미지 파일을 기록하지 않는 설정도 같이 추가한다.
SetEnvIfNoCase Request_URI "\.(gif|jpg|jpeg|png|css|swf|ico)$" image
ErrorLog "|/usr/local/server/cronolog/sbin/cronolog /usr/local/server/apache/logs/error_log/%Y/%m/error_log_%Y%m%d"
CustomLog "|/usr/local/server/cronolog/sbin/cronolog /usr/local/server/apache/logs/access_log/%Y/%m/access_log_%Y%m%d" combined env=!image
위와 같이 설정하면 해당 년, 월 디렉터리가 생성되며 그 안에 로그파일이 생성된다.
이미지와 특정 로그를 다른 파일에 저장하고 싶을 때는...
웹서버 튜닝 중에 이미지 파일만 별도의 웹서버로 분리하는 방법이 있다.
이 방법은 Request와 I/O 출력, 트래픽을 분산하는 효과가 있을 것이다.
이런 튜닝 방법과는 다르지만 images 로그만 별개로 파일로 저장하는 방법을 소개한다.
다음은 이미지 파일은 images_log에, 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 "^/NULL.printer" except=warm #
SetEnvIf Request_URI "^/NULL.IDA?" except=warm
SetEnvIf Request_URI "^/NULL.ida?" except=warm
SetEnvIf Request_URI "^/NULL.idq?" except=warm
SetEnvIf except images images
SetEnvIf except warm warm
CustomLog logs/access_log common env=!except
CustomLog logs/images_log common env=images
CustomLog logs/warm_log common env=warm
---------------------------------
URI 중에 .gif, .jpg, .jpeg, .png 로 끝나는 것은 except 변수에 images값으로 정의하고,
/default.ida, /root.exe?, /cmd.exe?, /NULL.printer, /NULL.IDA?, /NULL.ida? /NULL.idq?
등은 윈도의 IIS의 취약점을 이용한 웜 공격으로 except 변수에 warm 값으로 정의한다.
그리고 또한번 변수 except의 값이 images 인 것은 변수 images로 정의
변수 except의 값이 images 인 것은 변수 warm으로 정의
CustomLog 설정을 보면
env=!except 에 의해 image와 warm로그(except변수로 정의)를 제외한(=!) 것만 access_log
에 저장하게 된다.
마찬가지로 env=images, env=warm에 따라 각각 images_log, warm_log에 저장하게 된다.
cronolog 와 함께 쓸 때는 다음과 같이
CustomLog "|/usr/local/sbin/cronolog --symlink=/usr/local/apache/logs/access_log
/usr/local/apache/logs/access_log.%Y%m" common env=!except
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/images_log.%Y%m" common env=images
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/warm_log.%Y%m" common env=warm
'Study > System' 카테고리의 다른 글
apache SetEnvIf (0) | 2013.11.08 |
---|---|
[apache] awstats를 통한 apache 로그 모니터링 (0) | 2013.11.06 |
웹사이트 페이지 로딩 모니터링용 스크립트 (0) | 2013.07.22 |
sshd_config 설정 (0) | 2013.07.22 |
파일명 일괄로 변경하기 (0) | 2013.06.20 |
- Total
- Today
- Yesterday
- webhack
- editcap
- 윈도우 패스워드 복구
- ssl decrypt
- bash modification
- docker_dvwa
- dvwa_command
- metasploitable3
- NX ASLR
- history timestamp
- tshark
- cisco ssh
- mergecap
- docker
- megacli
- bash parameter
- 도커
- 리눅스 버전
- filesystem check
- text2pcap
- capinfos
- dvwa_bruteforce
- tcpdstat
- dvwa
- oracle 11gr2
- pcapng
- excel_aton
- ${1##*.}
- recovery file on linux
- MySQL csv
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |