해킹시도등 보안위협 탐지나 침해 사고로 인한 피해 시스템 로그 분석 진행시 이기종 OS(windows, linux) 다양한 Application(Apache, Nginx, Tomcat, IIS)별 로그 형식이 달라 분석하는데 있어 불편한 점이 한두가지가 아닙니다.
원인 분석을 위해 지속적으로 형식이 다른 로그들을 취합해 파싱해야하고 반복적으로 작업하는 일은 매우 번거롭고 힘든일입니다.
좀더 간편하고 쉽게 다양한 로그를 분석할수 있는 방법은 없을까요?
고민하던 중 아래와 같은 방법을 도입하여 보안 로그 분석에 대한 복잡한 과정과 불편한 점들에 대해 개선할수 있었습니다.
개선된 로그 분석 Flow
핵심은 엘라스틱의 filebeat 입니다. 지금 글을 쓰는 현재 시점에서는 filebeat 가 -> elastic agent로 통합되었습니다. 요약하자면 elastic 버전이 업그레이드 되면서 각종 로그 수집에 필요했던 각기 다른 로그 수집 agent가 “elastic agent”라는 명칭의 프로그램으로 통합되었습니다.
이 글에서는 legacy 타입의 파일 수집 에이전트 filebeat를 기준으로 설명드립니다. filebeat는 일종의 에이전트로 데이터를 수집하고자 하는 호스트에 설치하여 ELK스택으로 보내주는 기능을 담당합니다.
요약하자면 아래 과정으로 진행됩니다.
침해사고 발생 -> 서버나 PC 중요 로그를 수집 -> Filebeat 서버 업로드 -> 엘라스틱에 저장 -> 분석 및 시각화
filebeat 장점
다양한 OS나 Application 로그 타입에 대하여 기본적으로 모듈을 제공하여 일일이 필터나 파싱 과정 없이 엘라스틱에 저장할수 있다. (version 7.8.0 기준 약 42개 모듈 지원)
예를들자면, 웹쉘 공격으로 침해사고 발생시 Apache나 IIS 웹 웹 로그를 집중 분석해야합니다. 기존 분석 방법은 OS 명령어 조합이나 오픈소스등을 사용하여 찾고자하는 키워드, 필드등을 필터 및 집계등의 과정을 여러번 거처야 한다. (로그 분석에 대한 방법론은 다양하지만…)
개선된 방법으로 진행한다면, 침해사고 서버의 웹로그를 복사하여 filebeat 데몬이 올라가있는 서버에 업로드하면 filebeat는 업로드된 디렉토리를 감시하고있다가 엘라스틱 스택으로 저장한다. 별도의 필터나 파싱 과정 불필요. 그럼 kibana 화면을 사용하여 편리하게 분석을 진행 가능합니다.
위와 같은 방법은 침해사고 대상의 중요로그를 복사하여 업로드하는 수동적인 방법입니다.
가장 좋은 방법은 엔드포인트 로그(침해사고 대상)를 실시간으로 엘라스틱에 저장하면 되지만 필자가 근무하는 회사는 여러가지 이유로 실시간 로그 전송은 불가능한 환경입니다. 수동으로 하는것이 최선책 입니다.
조금만 시간을 투자한다면 획기적인 방법은 아니지만 로그 분석시 엄청난 효율성과 장점을 경험할수 있을것입니다. 설치 방법이나 자세한 환경 설정등에 대한 내용은 여기서 다루지 않겠습니다. 설정 방법이나 구성등에 대한 정보는 인터넷 구글링을 통하면 많이 접할수 있습니다.
실제 분석 사례
winlogbeat를 활용한 windows event logs 분석
분석하고자 하는 윈도우 이벤트 로그 형식의 .evtx 파일을 아래와 같이 수동 명령으로 엘라스틱에 저장.
위 화면은 powershell 에서 수동 명령 실행으로 윈도우 OS 보안 이벤트를 엘라스틱에 저장하는 과정입니다.
엘라스틱 서버에 윈도우 이벤트 로그 색인(저장)된 화면입니다.
활용 팁
- winlog.channel 필드를 구분하여 검색하면 편리함.
- 윈도우 이벤트 -> 응용프로그램, 보안, 시스템 구분
- filebeat를 활용한 Apache, IIS, linux audit 로그 분석
- 분석할 로그를 취합하여 특정 디렉토리에 업로드
- filebeat 데몬이 파일을 자동 감지하여 엘라스틱에 색인
- event.module 필드로 filebeat 특정 모듈에 의해 엘라스틱에 자동 색인 되었는지 확인하면됨.
정리하자면, 엘라스틱 스택에 분석해야할 다양한 이기종 로그를 저장하여 분석하는 것입니다. 엘라스틱 사용시 로그 분석에 대한 장점은 경험해본 사람들은 잘 알고 있을것입니다. 궁극적으로 좀더 편리하고 업무적 개선과 효율성 증대를 목표로 하기 때문에 굳이 이런 방법이 아니더라도 오픈소스나 기타 다른 방안을 찾아서 융합하고 응용해도 됩니다.
조금만 시간을 투자하여 위와 같이 구성한다면 수많은 이점을 경험할수 있을것입니다.