2015년 1월 12일 월요일

IIS Domain Traffic ( 도메인 별 트래픽 값 측정 방법 )





IIS에서 설정해놓은 도메인의 트래픽값을 txt로 출력하는 방법




설치해야 할 프로그램 및 용도



IIS로 Domain을 등록하고 Log가 쌓이게하기 위해


IIS Log에 404.7(유발시킨 설정 에러 로그)를 추출하게 위해 사용


기본 서버에서 설치하는 snmp를 대체하기 위해 net-snmp를 이용해
IIS Log 값을 가져오기 위해 사용


Bash shell 스크립트를 동작시키기 위해 설치
*주의 공개된 서버라면 Bash shell 공격을 받을 수 있음


파일을 다운로드받기 위해 사용


snmpd.conf 파일을 생성하기 위해 필요한 프로그램




구성 정리

전체적으로 이해하는데 어려움이 많았지만, 하나하나 왜 사용되는지를 알고 연결고리를 만들면 이해하기 쉬울듯 하다.


1. 5분마다(windows 스캐쥴러 최소 설정단위가 5분이기 때문) 배치파일이 실행 됨

2. 배치파일을 실행되면 그안의 bash 쉘 명령어(wget)을 이용해 지정해놓은 파일을 다운로드 받는다. ex) empty-file

3. IIS에 설정한 deny가 작동한다 ex).emptyfile

4. 404.7 error를 유발시켜 IIS에 설정한 W3SV32디렉토리에 IIS Log가 남는다.

5. 동시에 snmpd이 실행되고 snmpd.conf 파일이 작동하고 다음 conf 파일에 설정한
    "tail" bash 스크립트가 작동하여 Logparser가 가져온 IIS Log 값을 count.txt파일에 저장 된다.










설정 및 설치 


1. IIS에 test용 웹사이트를 만든다.







2. 웹 주소는 임의 설정 한다. " Physical Path"는 이후 생성하게 될 "htm"파일의 위치 









3. 생성한 도메인을 오른쪽 클릭하여 "Manage Web Site" -> "Advanced Settigs" 선택









4. 빈 htm 파일을 생성해 놓을 경로 지정









5. IIS -> "Request Filtering" -> "Deny File Name Extension" 클릭 후 거부할 htm 파일의 이름을 등록한다
 ex) .nellfile

















6. emptyfile.htm 파일 생성 내용은 아무것도 안넣지 않음








"emptyfile" deny를 유발시켜 404.7에러가 뜨게 한 다음 에러 페이지 경로를 설정해준다.














7. "Logging" 클릭하여 Log가 쌓일 위치 및 설정을 한다.












Log가 쌓이는 디렉토리 설정

































Select Fields " Bytes Sent (sc-bytes), Bytes Recevied, cs-version, cs-host" 체크 -> Apply




















8. 기존에는 Perl을 이용해 snmpd.conf 파일을 생성 해야 하지만, 미리 생성해둔 "snmpd.conf" 파일을 net-snmp 디렉토리로 옮겨 놓는다.

(수정중)

*snmpd.conf 생성

perl을 설치하고 c\usrl/bin에 위치한 "snmpconf.bat" 파일을 "cmd"에서 실행하여snmpd.conf 생성 내용은 아래와 같다.




경로 
c\usr/bin/







9. snmpd를 구동시킨다. 그림의 "1"은 snmpconf.bat 파일을 실행하여 snmpd.conf 파일을 생성 하는것이지만 Perl을 설치하지 않은 상태라 이전에 만들어 둔 snmpd.conf 파일을 복사해 붙여 넣은 것이다.

그림의 "2"는 미리 생성해둔 snmpd.conf 파일을 복사해 넣은 상태에서 실행 했을때
데몬이 구동되는 모습이다.

명령어

c:\usr/bin> snmpd.exe -c snmpd.conf



Perl로 생성한 snmpd.conf 파일 내용


###########################################################################
#
# snmpd.conf
#
#   - created by the snmpconf configuration program
#
###########################################################################
# SECTION: Access Control Setup
#
#   This section defines who is allowed to talk to your running
#   snmp agent.

# rocommunity: a SNMPv1/SNMPv2c read-only access community name
#   arguments:  community [default|hostname|network/bits] [oid]

#exec nell1 C:\cygwin64\bin\sh /cygdrive/c/1.nell.net/1_nell_net.sh
#exec nell2 C:\cygwin64\bin\sh /cygdrive/c/2.nell.net/2_nell_net.sh

rocommunity  seacdn  

exec nell C:\cygwin64\bin\sh /cygdrive/c/xxxx/xxxx.net/control/xxxx_net.sh















10. bash shell 생성 .sh

tail -1 /cygdrive/c/domain/xxxx.net/control/counterlog.txt | grep 2015 | gawk '{print $3}'
// tail를 이용하여 ('{print $3}' = sc-bytes )








11. 배치파일 생성



wget http://xxxx.net/control/empty-file.emptyfile

//wget으로 해당 deny htm 파일 다운로드 시도


logparser "SELECT TO_LOCALTIME(QUANTIZE(TO_TIMESTAMP(date, time), 300)) AS Hour, SUM(sc-bytes) AS TotalBytesSent FROM c:\xxx\xxxx.net\W3SVC3\u_ex*.log WHERE cs-host='xxxx.net' GROUP BY Hour ORDER BY Hour" -stats:off -q:on > c:\xxxx\xxxx.net\control\counterlog.txt

// logparser를 이용하여 5분동안의 IIS Log sc-bytes 기록을 취합하여 counterlog.txt에 기록  







12. 배치파일 스캐쥴러 등록

매일 5분마다 위에 생성한 배치파일 자동실행


















































댓글 없음: