2010-02-08 4 views
8

tcpdump으로 캡처 한 네트워크 트래픽을 처리해야합니다. 소통량을 읽는 것은 어렵지 않다, 그러나 조금 까다로워지는 무엇이 소통량에서 "스파이크"가있는 곳에 반점을두기. 나는 주로 TCP SYN 패킷에 관심이 있고 내가 원하는 것은 주어진 목적지 포트에 대한 트래픽이 갑자기 증가한 날을 찾는 것이다. 처리 할 데이터가 상당히 있습니다 (대략 1 년).트래픽 데이터의 이상 징후 ("스파이크")를 탐지하는 알고리즘

제가 지금까지 시도한 것은 지수 이동 평균을 사용하는 것입니다. 이것은 흥미로운 조치를 취할 수있을 정도로 좋았지 만, 외부 데이터 소스와 비교해 보니 너무 공격적이었습니다. 이상 징후로.

나는 기하 급수적 인 이동 평균과 과거 데이터의 조합을 사용하는 것을 고려해 보았습니다. (아마도 과거 7 일에서부터 내가 보는 것에 주간주기가되어야한다고 생각했을 것입니다) read는 좋은 방법으로 리소스 사용을 모델링하는 것처럼 보였습니다.

그래서, 누군가는 좋은 방법이나 어딘가에 가서 이런 종류의 것을 읽는 것을 안다.

내가 사용해온 이동 평균은 대략 다음과 같습니다.

avg = avg+0.96*(new-avg) 

avg은 EMA이고 new은 새로운 측정 값입니다. 나는 어떤 임계 값을 실험했는지를 실험 해왔다. 그러나 나쁜 결과를 내기 위해서는 "새로운 값을 재어보기 전에 평균보다 높은 주어진 요소 여야한다"와 "적어도 3 이상이어야한다"라는 조합을 발견했다.

답변

5

이 널리 침입 탐지 문헌에서 연구되고있다. 이것은 문제와 관련하여 tcpdump 데이터를 분석하여 관련 통찰력을 얻는 방법을 보여주는 독창적 인 논문입니다.

용지입니다 : 여기 http://www.usenix.org/publications/library/proceedings/sec98/full_papers/full_papers/lee/lee_html/lee.html들이 리퍼 규칙 유도 시스템을 사용하여, 당신이 새로운 같은 http://www.newty.de/pnc2/ 또는 http://www.data-miner.com/rik.html

+0

재미있는 독서입니다. 현재 필요한 트래픽 수준의 증가는 필자가 필요로하는 수준이면 충분하지만 미래에 고려해야 할 사항입니다. – Vatine

4

I 데이터, 긴 시간 상수 T1 하나, 단시간 상수 T2 한 두 개의 저역 통과 필터를 적용한다. 그런 다음이 두 필터의 출력의 크기 차이를 살펴보고 특정 임계 값 K를 초과하면 스파이크가됩니다. 가장 어려운 부분은 T1, T2 및 K를 조정하여 너무 많은 가양 성을 나타내지 않으며 작은 스파이크를 놓치지 않도록하는 것입니다.

new = k * old + (1 - k) * new 

K의 값이 일정 시간을 결정하고, 1.0 (그러나 물론 < 1.0)에 일반적으로 가까운 :

다음 단일 폴 IIR 저역 통과 필터이다.

난 당신이 다른 시간 상수, 예를 들면와 병렬로이 같은 필터를 적용 할 것을 제안하고있다 k = 0.9 (단시간의 상수)와 k = 0.99 (다른 상수의 경우)로 시작한 다음 출력의 크기 차이를 살펴보십시오. 크기의 차이는 대부분 작지만 스파이크가있을 때 커집니다.

+1

재미있는 뭔가 그 이전을 대체 할 수있을 것 같아요. 오프라인 처리를하고 있기 때문에 상대적으로 간단해야합니다. 청크 크기를 실험 해 볼 가치가 있다고 생각하십니까? (과거 시간별로 매일 시도했습니다)? – Vatine

+0

데이터가 정기적으로 샘플링되는지 여부에 따라 다릅니다. 그렇지 않다면 고정 된 샘플링 간격과 동일한 효과를주기 위해 동등한 기간 저장소 나 청크로 또는 다른 저장소로 데이터를 수집하고자 할 수 있습니다. –

+1

tcpdump 데이터에는 적어도 "잠깐"해상도까지는 정확하다고 가정 할 수있는 타임 스탬프가 있지만 들어오는 데이터의 간격은 네트워크 트래픽과 모든 것이므로 실제로는 일정하지 않습니다./고정 된 간격으로 청킹하는 것이 이치에 맞습니다. – Vatine

관련 문제