2017년 6월 16일 금요일

Windows Event Log 분석(feat. Elasticsearch)

파워쉘 삽질은 그만하고 엘라스틱서치를 이용해서 이벤트 로그를 분석해보기로 했다. 그런데 홈페이지에서 한글 서비스를 제공하네? 글로벌 벤더들 대부분 아시아 상대로는 중국, 일본어 정도만 제공하는데, 한국 시장을 남다르게 보는 듯. 물론 세부적인 매뉴얼은 다 영어.


설치는 매우 간단. 자바가 설치되어 있다면 다운받아서 압축 풀고 그냥 실행하면 된다. 검색 엔진인 엘라스틱서치(elasticsearch.bat) 실행.



데이터 시각화 도구인 키바나(kibana.bat) 실행.



다음은 로그 적재 도구인 로그스태시(logstash.bat) 실행을 위한 설정 파일(sample.conf). logz.io 덕분에 친해진 winlogbeat를 이용했다.
input {
 beats { port => 5044 }
}

filter {
 grok {
  match => { "message" => "\S+\s([^.]+\.)*?(?<url>[^.]+?\.((ac|co|go|ne|nm|or|pe|re)\.)?[^.]+?\.?)(?=,).+" }
 }
}

output {
 elasticsearch { hosts => [ "localhost:9200" ] }
 stdout { codec => rubydebug }
}

상위 도메인만을 따로 추출하기 위해 grok 필터를 사용했다. 해당 필터는 정규표현식을 이용해서 데이터 정규화를 도와주는데, 전체 로그 메시지와 일치하는 정규표현식 중 추출을 원하는 영역만을 'named capture group'으로 씌워주면 된다.

즉, 해당 grok 필터는 전체 message 영역에서 정규표혀식 '[^.]+?\.((ac|co|go|ne|nm|or|pe|re)\.)?[^.]+?\.?'와 일치하는 패턴을 'url' 필드(주황색 영역)로 추출해준다.


로그스태쉬(logstash.bat) 실행.


다음은 winlogbeat 설정. 3006 이벤트만 전송하도록 설정했다.



winlogbeat.exe를 실행하면 logstash 실행창에서 전송 과정을 확인할 수 있다. winlogbeat는 윈도우 이벤트 로그 수집에 최적화되어 있는 듯. 뭐 해준 것도 없는데 알아서 필드별 정규화가 이루어진다. grok 필터를 이용한 상위 도메인 추출도 잘 됨.


to be continued

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스