일하면서 실무중에 구글링으로 배우는게 참 많은것 같다.
IIS에서 발생한 로그파일을 편집기가 아닌 커스터마이징식으로 분석할 수 가 있다.

구글링을 하다가 찾은건데 이미 많은 사람들이 알고 있을것 같다.

LogParser  마이크로에서 만든 강력한 로그분석 툴이다. 아래와 같이 SQL 스크립트 형태로
로그를 조회가 가능하다.


이러한 형태라면 MS-SQL 과 연동할 수 있는 방법이 있지 않을까..
업무성격에 맞는 형태로 재구성하여 데이터베이스 조회가 가능토록 하면.. 좋을것 같다. ㅎㅎ


다운로드 받는 경로는 다음과 같다. <링크>

그리고 자세한 내용은  Coderant 님의 블로그에서 자세하게 볼 수 있다. <링크>
 

Logparser는 MS에서 만든 강력한 IIS, W3C, 이벤트 로그 분석툴로서 SQL 쿼리타입으로
조건별 검색할 수 있는 강력한 툴입니다.


1) 가장 최근에 생성된 시간을 기준으로 ASP 스크립트를 변조한 Trojan Files 여부를 진단
 
C:\logparser2.2\logparser -i:FS "SELECT TOP 20 Path, CreationTime FROM C:\inetpub\wwwroot\*.* ORDER BY CreationTime DESC" -rtp:-1  


2). 가장 최근에 수정된 Files 로그 찾기

C:\logparser2.2\logparser -i:FS "SELECT TOP 20 Path, LastWriteTime FROM C:\inetpub\wwwroot\*.* ORDER BY LastWriteTime DESC" -rtp:-1    
   
3). 해커가 Trojan Files을 삭제한 경우에 HTTP 200 서버코드 흔적 로그를 찾는다.
 
C:\logparser "SELECT DISTINCT TO_LOWERCASE(cs-uri-stem) AS URL, Count(*) AS Hits FROM ex*.log WHERE sc-status=200 GROUP BY URL ORDER BY URL"    -rtp:-1   
  
* nc.exe, tini.exe, root.exe, cmd.exe, upload.asp, aspexec.asp, cmd.asp 같은 파일 이름이 있으면 의심

4) Script Abuse 분석(가장 많은 Request 요청을 받은 Executable 파일의 확장자 확인)

C:\logparser -i:FS "SELECT TO_LOWERCASE(SUBSTR(Name, LAST_INDEX_OF(Name, '.'),  STRLEN(Name))) AS Extenstion, Count(*) AS Files FROM C:\inetpub \wwwroot\*.*, C:\inetpub\scripts\*.* WHERE Attribute NOT LIKE 'D%' GROUP BY Extenstion ORDER BY Files DESC" -rtp:-1  

* 특히, .ASP, .DLL 파일 요청을 유심히 봐야함

5) HTTP 서버 500 에러코드 검사

C:\logparser "SELECT [cs-uri-stem], [cs-uri-query], Count(*) AS [Hits] FROM c:\logs\web\ex*.log WHERE sc-status = 500 GROUP BY [cs-uri-stem], [cs-uri-query] ORDER BY [hits], [cs-uri-stem] DESC" -rtp:-1 -i:iisw3c
  

6) 가장 많은 Request Hit 수를 높음 ASP, DLL 파일 확인

C:\logparser "SELECT TO_STRING(TO_TIMESTAMP(date, time), 'yyyy-MM-dd') AS Day, cs-uri-stem, Count(*) AS Total ex*.log WHERE (sc-status<400 or sc-status>=500) AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' OR TO_LOWERCASE(cs-uri-stem) LIKE '%.exe') GROUP BY Day, cs-uri-stem ORDER BY cs-uri-stem, Day" -rtp:-1  

7) 시간당 에러수가 가장 많이 발생한 날짜 확인
  
C:\logparser "SELECT date, QUANTIZE(time, 3600) AS hour, sc-status, Count(*) AS Errors FROM ex03*.log WHERE sc-status>=400 GROUP BY date, hour, sc-status HAVING Errors>25 ORDER BY Error DESC" -rtp:-1  

* 25개 이상의 에러코드(404코드)를 발생한 날짜와 시간 결과를 출력

8) 하루동안 50번이상 동일 페이지에 접속을 시도한 클라이언트 IP 확인
  
C:\logparser "SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM ex*.log GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC" -rtp:-1  

9) 하루동안 50번이상 동일 페이지에 접속을 시도한 클라이언트 IP 확인
 
C:\logparser "SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM ex*.log GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC" -rtp:-1  

10)  모든 ASP 에러 기록 확인
  
C:\logparser "SELECT cs-uri-query, Count(*) AS Total FROM ex*.log WHERE sc-status>=500 GROUP BY cs-uri-query ORDER BY Total DESC" -rtp:-1  

* 특히, ODBC와 ADO 에러는 SQL Injection 가능성이 있으므로 주의깊게 살펴봐야 함

11) 스크립트 및 Executable 파일의 HTTP 서버 코드 기록 확인
  
C:\logparser "SELECT cs-uri-stem, sc-status, Count(*) AS Total FROM ex*.log WHERE TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' or TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%' GROUP BY cs-uri-stem, sc-status ORDER BY cs-uri-stem, sc-status" -rtp:-1  

12) Win32 Status Code 분석을 통한 Attack 확인
  
C:\logparser "SELECT cs-uri-stem, WIN32_ERROR_DESCRIPTION(sc-win32-status) AS Error, Count(*) AS Total FROM ex*.log WHERE sc-win32-status>0 AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' OR TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%') GROUP BY cs-uri-stem, Error ORDER BY cs-uri-stem, Error" -rtp:-1 
  

13) HTTP Method 통계 분석
  
C:\logparser "SELECT cs-uri-stem, cs-method, Count(*) AS Total FROM ex*.log WHERE (sc-status<400 or sc-status>=500) AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' or TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%') GROUP BY cs-uri-stem, cs-method ORDER BY cs-uri-stem, cs-method" -rtp:-1   

모바일 웹 애플리케이션 모범 사례 카드
출처 :  
http://www.w3c.or.kr/Translation/MWABP/#mwabp

네트워크를 절약하자

네트워크 병목과 지연을 줄이기 위한 적합한 웹 프로토콜 기능 사용한다.

  • 전송 압축 사용
  • 핑커프린트 정보를 이용한 캐시
  • AJAX 데이터 캐시
  • 외부 자원 최소화
  • 애플리케이션 및 데이터 크기 최소화
  • 최소한의 쿠키 사용
  • 불필요한 쿠키 정보 전송 금지
  • 네트워크 요청 최적화
  • 리다이렉트 회피

상위 ↑

사용자를 자유롭게 하자

모바일 디바이스는 집에서 심심풀이로 사용하는것부터 외부에서 급히 이용하는 등의 다양한 상황에서 사용된다. 사용자의 신뢰를 얻기 위하여 어떤 일이 발생하는지 알고 제어할 수 있도록 한다.

  • 개인 정보와 단말 정보의 사용에 대한 사용자 인지 필요
  • 자동 로그인 사용
  • 사용자의 인터페이스 선택 제공
  • 동적으로 페이지 섹션을 갱신할 때 포커스 변경 금지

상위 ↑

웹의 원칙을 지키자

모바일 디바이스는 웹에 접근하는 한 방법이다. 따라서, 일반적인 웹 원칙은 견고한 모바일 웹 애플리케이션의 개발에 적용된다.

  • 로컬 데이터 복제
  • 디바이스 간 상태 일관성 보장
  • 회피 할 수 없거나 신뢰할 수 없는 JSON 데이터 실행 금지
  • 애플리케이션 뷰 구동시 프래그먼트 ID를 사용

상위 ↑

유연하게 설계하자

웹 애플리케이션은 발전하고 있는 다양한 환경에서 구동된다. 유연성은 다양한 디바이스와 사용자들이 비용을 절약할 수 있도록 한다.

  • 다양한 상호작용 방법을 위한 설계
  • 텍스트 플로우 보장
  • 가능한 경우 서버에서 감지 기능 사용
  • 필요한 경우 클라이언트 감지 기능 사용
  • 콘텐트 적용 단순화를 위하여 디바이스 분류법을 사용
  • 적합하다면 비 JavaScript 변이형을 지원

상위 ↑

모바일의 특징을 활용하자

어떤 웹 기술은 특별히 모바일 디바이스에 관련이 있다. 이를 활용하라.

  • 전화번호를 클릭하면 전화기능 실행
  • 웹 애플리케이션을 실행하는 모바일 특화된 기술을 고려
  • 원하는 화면 크기를 위하여 메타 뷰포트 엘리먼트를 사용
  • 로컬 데이터를 위하여 클라이언트쪽 저장 기술 사용

상위 ↑

응답시간을 최소화 하자

모바일 웹 애플리케이션과 몇가지 기술적 요인은 전반적으로 사용자 경험을 상당히 높일 수 있다.

  • 정적 이미지를 단일 복합 리소스(스프라이트)로 통합
  • CSS에 배경 그림 포함
  • 합리적인 DOM 크기 유지
  • 인지한 지연시간 최소화
  • 애플리케이션 구동 시간 최적화

상위 ↑

당신의 애플리케이션을 모바일화 하라!

이 가이드라인은 풍부하고 동적인 모바일 웹 애플리케이션 개발에 도움을 준다. 자세한 정보:

www.w3.org/TR/mwabp/

MobiWebApp FP7 EU 프로젝트 지원

mobiwebapp.eu

상위 ↑

'Development > Web Standard' 카테고리의 다른 글

웹표준 개괄내용  (0) 2011.04.01
모바일 웹 애플리케이션 모범 사례 카드  (0) 2011.03.29
Semantic Markup  (0) 2010.08.05

+ Recent posts