데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

[기술 6기] 윈도우 서버 감사로그 분석 시스템 구축(상)

데이터 이야기
작성자
dataonair
작성일
2014-09-30 00:00
조회
6414


윈도우 서버 감사로그 분석 시스템 구축(상)

빅데이터 처리 기술로 윈도우 서버를 지켜라!



글: 정하권(빅데이터 아카데미 기술 전문가 과정 6기)

서버 OS 시장에서 매우 높은 점유율을 자랑하는 마이크로소프트 윈도우 운영체제. 널리 사용되는 운영체제인 만큼 윈도우는 수많은 보안 위협들이 존재한다. 현재 많은 기업이 이러한 보안 위협을 피하기 위해 많은 비용과 투자를 한다. 그렇다면 빅데이터 처리 기술을 응용하여 더 비용 효율적으로 윈도우 운영체제의 허점을 이용한 외부 공격을 예방하고 침입을 탐지할 수 없을까 빅데이터 기술 전문가 6기 윈도우 감사 로그 분석팀(이하 감사 로그팀)은 이러한 문제를 해결하기 위해 ‘윈도우 서버 감사 로그 분석’이라는 프로젝트에 도전했다.



기술 6기 인터뷰 <익숙한 것으로부터 떠나자 빅데이터가 가까이 다가왔다> 바로가기>>

Challenges

어느 팀이나 프로젝트를 시작할 때는 ‘우리가 과연 할 수 있을까’ 하는 두려움과 ‘최우수상을 타고 싶다’는 바람이 교차했을 것이다. 우리팀은 김용문 팀장을 중심으로 김태형/윤재문/김종회/정하권 팀원이 공용준 멘토의 지도를 받으며 수료 프로젝트를 진행했다. 팀 소개를 하려고 하니 프로젝트 팀을 편성하던 때가 생각난다. 기술 전문가 집체교육이 중간 정도 진행되었을 쯤, 수료 프로젝트팀을 구성하라고 했다. 낯선 사람들이 모여서 어색한 인사를 나누던 때가 엊그제 같은데, 얼마 지나지 않아 서로를 이해하고 배려하는 단합된 팀으로 거듭났다. 감사 로그팀(이하 ‘우리팀’으로 통일)이 좋은 결과물을 낼 수 있었던 배경은 구성원 간 대화와 배려, 책임감, 열정이 잘 결합되었기에 가능한 일이었다.



윈도우 보안로그 분석을 주제로 선정

학위 논문을 쓸 때, 주제 선정이 절반이라는 말이 있듯이, 빅데이터 아카데미의 수료 프로젝트의 주제 선정도 쉽지 않았다. 두 달 남짓한 기간에 그것도 직장 생활을 하면서 수행해야 했으므로 ‘과연 무엇을 얼마나 잘할 수 있을까’ 하는 고민을 계속 할 수밖에 없었다. 팀원 모두 한 개 이상의 주제를 갖고 토론의 시간을 가졌다.

데이터 처리 주제부터 분석 전문가 과정의 프로젝트에 더 어울릴 법한 다양하고 폭넓은 주제가 제안됐다. 다양한 의견이 쏟아져 나오자 자칫 팀이 의도하지 않은 방향으로 흘러갈 수 있겠다는 생각이 들었다. 이에 팀원들은 프로젝트 주제의 선정 기준을 다음과 같이 더 분명히 하기로 했다.

1. 집체교육에서 배운 빅데이터 처리 기술을 응용해 볼 수 있는 주제여야 한다.
2. 제한된 일정과 리소스로 완성도 높은 결과물을 도출할 수 있어야 한다.

이 기준에 부합하는 주제 2개를 선정한 다음, 이 가운데 ‘운영체제(Linux, Windows) 보안로그 분석’이라는 주제를 최종적으로 선정했다. 팀원 가운데 보안 전문업체에서 일하는 도메인 전문가가 있었으므로 제한된 일정에도 빠른 기획과 설계가 가능한 점과, 빅데이터 처리 기술을 다양하게 응용해 볼 수 있다는 점에서 최종 주제로 선정했다. 운영체제는 윈도우와 리눅스를 놓고 논의를 거쳐 윈도우를 최종적으로 선택했다. 윈도우는 많은 보안 취약점이 존재하고, 다양한 로그 수집과 분석이 가능하기 때문이었다.



프로젝트 목표를 달성하기 위하여

빅데이터 기술 전문가 교육 마지막 날, 최종 결정된 팀 프로젝트 주제를 다음과 요약해 제출했다.

dbin_313.jpg



Solution

우리팀은 프로젝트에 들어가기에 앞서 프로젝트 시스템 기획과 설계에 관한 미팅을 가졌다. 집체교육이 끝나자 공용준 멘토를 중심으로 모든 팀원이 모여 첫 번째 미팅을 가졌다. 3시간 가까이 열띤 토론 끝에 프로젝트 시스템 구성과 팀원별 역할 및 진행 일정을 아래 <표 1>처럼 정리했다.



<표 2> 진행 일정 dbin_314.jpg

가장 적합한 도구를 찾아라!

무언가를 새로 시작하려고 할 때, 자신이 사용해 본 것을 먼저 찾게 되게 마련이다. 우리팀을 포함한 나머지 팀 또한 빅데이터 기술 전문가 집체교육 기간에 배운 기술을 먼저 검토했다. Flume, Hadoop, Storm, R 등 다뤄 본 기술로 프로젝트를 수행할 수 있을지를 살펴 보았다. 그러다 보니 의도하지 않게 수료 프로젝트를 아는 기술 테두리에 맞춰서 접근하려는 ‘본말전도’ 상황이 벌어지기 시작했다. 당초 의도에서 벗어나고 있었다. 이에 우리팀은 목표한 바를 이루기 위해서는 해당 주제를 선정했던 이유를 잊지 않고 더 적극적으로 파고들어야겠다는 생각에 이르렀다. 결국 집체교육 중에 배우지 않았던 낯선 기술까지 적극 수용하기로 했다.

로그 수집도구: logstash
첫 번째로 윈도우 보안 이벤트 로그를 수집하기 위해 윈도우 운영체제에서 이슈 없이 이벤트 로그를 수집해서 전달해 줄 수 있는 수집도구가 필요했다. 교육시간에 경험해 본 로그 수집 도구는 Flume이었다. 이 기술은 아파치 톱 프로젝트에 속할 만큼 강력한 도구지만, 우리팀의 주제를 수행하는 도구로서는 적합하지 않았다. 윈도우 운영체제의 로그를 수집/전달할 수 있는 기능이 없었기 때문이다. 이에 윈도우 로그 수집도구를 찾던 중 다양한 OS에서 이용할 수 있고, 입출력 플러그인이 다양한 logstash라는 강력한 수집도구가 있음을 알게 됐다.

로그 저장/검색: Elasticsearch
이어서 로그를 저장/검색하기 위한 도구를 찾아 나섰다. 교육시간에 배운 대용량 데이터를 분산 저장하는 기술인 Hadoop을 놓고 적합성 검토를 했다. Hadoop은 빠르게 늘어나는 대용량의 다양한 비정형 데이터를 저장하기 위해서는 의심할 여지 없는 선택이었다. 하지만 Hadoop 또한 윈도우 이벤트 로그를 빠르게 검색하는 데는 적합하지 않았다. Hadoop의 대안으로 Lucene 기반의 분산 검색엔진인 Elasticsearch를 선택했다. Elasticsearch는 안전한 분산 저장소와 강력한 검색기능을 지원하고 있었다. 더욱이 최근 Logstash가 Elasticsearch에 편입됨에 따라 로그 수집도구로 선택한 Logstash와 조합하기에도 유리할 것이라고 생각했다.

실시간 처리 분석: Redis
세 번째로 Storm이 윈도로 로그를 실시간 처리/분석하는 데 접합한지를 알아 보았다. 이 기술은 집체교육 시간에 배운 실시간 처리 기술로서 프로젝트 주제를 선정하기 이전부터 팀원들로부터 관심을 끌어왔다. Storm은 프로그래밍이 가능하다면, 실시간 처리/분석에 얼마든지 응용할 수 있는 장점을 가지고 있으므로, 윈도우의 보안 로그를 실시간 처리/분석하는 데 적합한 기술이었다. 하지만 고민은 ‘Storm을 수집/저장/검색 도구와 어떻게 연동하느냐’는 문제가 남아 있었다. 로그를 수집/전달하는 쪽에서 Storm과 연동할 수 있어야 했는데, 관련 사례가 없었고 로그 수집 툴인 Logstash의 출력 부분에서 Storm 연동 기능이 없었다. 결국 Logstash에서 전달한 데이터를 저장할 수 있고, Storm과 연동을 지원하는 매개체인 Redis를 검토하게지원하고, 초당 수만 건 이상의 요청을 처리할 수 있다. 이에 따라 로그 수집도구에서 전달한 데이터를 중간에서 저장해 나를 수 있는, 데이터 버스 형태로 사용하기로 최종 결정했다.

우리팀이 여기까지 검토하고 적용한 기술을 간략하게 정리하면 <그림 1>과 같다. dbin_315.jpg

<표 3> 윈도우 감사로그 빅데이터를 분석하는 데 적용한 기술과 설명
dbin_316.jpg

Logstash 이벤트와 로그를 관리하기 위한 도구. 검색을 비롯해 다양한 용도로 사용하기 위해 로그를 수집/저장/분석하는 데 사용된다. 아파치 2.0 라이선스를 사용하는 완전 무료 오픈소스이며, 현재는 Elasticsearch 제품 군의 일부가 되었다.

Elasticsearch Shay Banon이 Lucene을 바탕으로 개발한 분산 검색엔진. 설치와 서버 확장이 매우 편리한 것이 장점이며, 탁월한 검색기능을 갖고 있다. 분산 시스템이므로 검색 대상 용량이 늘어났을 때, 유연하게 대응할 수 있는 것이 장점이다.

Storm 분산 환경에서 사용할 수 있는 실시간 빅데이터 분석 플랫폼. 분산 환경에서 카산드라(Cassandra), 카프카(Kafka), Redis 같은 다양한 데이터베이스와 연동할 수 있고, 다양한 프로그램 언어로 실시간 데이터 분석 알고리즘을 적용할 수 있다. 프로그램 개발자에게 다양한 빅데이터 분석의 장에 참여할 수 있도록 유도하고 있다.

Redis 오픈소스로 BSD 라이선스를 사용하며, 키-값 저장소를 지원하는 기술. 문자열, 해시, 리스트, 세트, 정렬된 세트를 포함할 수 있으므로 데이터 구조 서버라고도 한다. 모든 데이터를 메모리에 올려 놓고 처리하고, 이벤트 기반의 네트워크 비동기 입출력 처리를 하여 초당 수만 건 이상의 요청을 처리할 수 있다. 또한 데이터의 가용성과 영속성을 위해 복제 및 RDB(Redis DB), AOF(Append Only File) 기능도 지원한다.



윈도우 보안 로그 분석

수료 프로젝트에 적합한 도구 선정이 끝나자, 팀원별로 배정받은 역할을 수행하기 위해 필요한 기술을 각자 검토하는 시간을 가졌다. 최종 검토 모임을 갖고 각자 알아 본 기술을 취합했다.

dbin_317.jpg

몇 차례의 모임에서 분석해야 할 다양한 윈도우 보안 로그 중에서 어떤 것을 저장/분석할 것인지를 논의했다. 기본적으로 윈도우 보안로그는 <표 3>에서 보는 바와 같이 다양한 감사 로그 분류와 분류별 수백 개의 이벤트(EventID: 4000~6000)를 갖고 있다. 표본을 정의하지 않고 프로젝트를 시작하면, 제한된 일정 안에 목표한 분석 결과를 얻지 못할 것이라고 봤다.

<표 4> 윈도우 보안감사 로그 분류
dbin_318.jpg

우리팀은 보안 감사 로그 분류 중에서 사용자의 로그온/로그오프에 대한 Audit logon events를 토대로 로그를 수집/저장/검색/분석하기로 했다. 이 중에서 로그온 감사 실패 이벤트 로그를 중심으로 보안 이슈를 발생시켜 시험/검증해 보기로 했다. 우리팀은 로깅을 구성하기 위해 먼저 대상 윈도우 서버에 <그림 3>과 같이 로컬 보안정책의 고급 감사 정책을 적용해 로그온 감사 실패 이벤트를 발생시키도록 구성했다.



dbin_319.jpg

그리고 보안 위협을 발생시키기 위해, 특별한 도구를 사용하는 대신, 윈도우 운영체제용 원격 데스크톱 연결 도구를 사용해 공격 대상 서버에 administrator(관리자 계정을 변경하지 않았다는 가정) 계정으로 암호를 무작위로 입력하는 Brute Force 공격을 시도해 감사 이벤트를 발생시켜 보기로 했다. 더불어 감사 이벤트가 발생하는 즉시, 로그 수집도구인 Logstash에서 파싱을 거쳐 데이터 버스 역할을 하는 Redis로 로그를 전달하도록 설정했다. (하편에서 계속)?



dbin_320.jpg

dbin_321.jpg






출처 : 한국데이터베이스진흥원

제공 : 데이터전문가 지식포털 DBguide.net