2014년 11월 23일 일요일

실시간 120만개의 패킷분석 - OpenSOC 프로젝트

올해 들어서 블로그에 글 쓰기가 힘들어 졌는데, 오랜만에 포스팅을 해 보려고 합니다.  오늘의 주제는 오픈소스 기반의 시큐리티 분석 프레임웍인 OpenSOC 입니다. OpenSOC 는 여러 보안 문제의 이슈를 빅데이터라는 관점에서 접근해 볼 수 있어, 보안 침해 사고에 대한 조사, Anonmaly 탐지 등 이용범위는 사용방법에 따라 다양해 질 수 있습니다.  오픈소스 기반인 만큼 여러가지 오픈소스를 이용하고 있는데요 Storm, Kafka, Elasticsearch 와 같은 하둡의 에코시스템 MySQL 등을 사용하고 있습니다.  이를 통해 패킷캡쳐 인덱스, 저장, 데이터 스트리밍 처리, 배치 처리, 실시간 검색, 집계등을 이용할 수 있게 됩니다. 


프레임웍에서 제공하는 주요 기능은 아래와 같습니다.

  • Extensible spouts and parsers for attaching OpenSOC to monitor any telemetry source
  • Extensible enrichment framework for any telemetry stream
  • Anomaly detection and real-time rules-based alerts for any telemetry stream
  • Hadoop-backed storage for telemetry stream with a customizable retention time
  • Automated real-time indexin for telemetry streams backed by Elastic Search
  • Telemetry correlation and SQL query capability for data stored in Hadoop backed by Hive
  • ODBC/JDBC compatibility and integration with existing analytics tools

OpenSOC 를 사용하기 위해서 필요한 것은 다음과 같습니다.
  • 2 개의 네트워크 패킷 캡쳐 카드 (Napatech 사의 NT20E2-CAP 추천)
  • 아파치 Flume 1.4.0 +
  • 아파치 Kafka 0.8.1+
  • 아파치 Storm 0.9+
  • 아파치 하둡 2.X 
  • 아파치 하이브 12+ (13 권장)
  • 아파치 Hbase 0.94+
  • Elastic Search 1.1+
  • MySQL 5.6+
OpenSOC 컴포넌트는 크게 데이터처리를 위한 스트리밍 쪽과 실제 분석을 하기위한 UI 화면으로 나뉘어져 있습니다.  OpenSOC 를 구현하기 위해 테스트된 환경은 시스코에서 제공한 것으로 14개의 데이터 노드와 3개의 클러스트 제어 노드, 2개의 ESX 호스트, 라우터, 스위치등이 있습니다. 

과거에 제가 진행해 보았던 패킷 분석 프로젝트와 비슷한 개념이 되기도 하는데, 더욱 큰 관점에서 프레임웍이 만들어져 있다는 점에서 매력이 있습니다. 오픈소스로 공개되어 있는 만큼 사용도 자유롭고 실시간으로 120 만개의 패킷을 처리할 수 있다는 것은 성능면에서도 만족스러워 보입니다.  관련 프로젝트를 진행해 보신 분들은 아시겠지만 패킷분석 처리가 만만치는 않은 작업입니다. 제대로 구현하면 얻어낼 수 있는 데이터도 많지만 이 엄청난 패킷 데이터를 저장하고 처리하고 의미있는 데이터로 얻어내기까지는 상당히 많은 작업들이 필요합니다. 

이걸 오픈소스로 이용할 수 있다는 측면에서는 아주 매력적이죠. 물론, 다양한 오픈소스를 사용해야 하기 때문에 어느정도의 경험이 필요로 할듯 해 보입니다.  

더 상세한 정보는 다음 사이트에서 얻을 수 있습니다.


혹시 OpenSOC 로 구현을 진행하였거나 진행할 계획이 있으신 분들은 알려주세요~ 

//Rigel