DDoS 필터링을위한 머신 러닝 적용


12

에서 스탠포드의 기계 학습 코스 앤드류 응은 IT에 ML을 적용 언급했다. 얼마 후 우리 사이트에서 적당한 크기 (약 20k 봇)의 DDoS를 얻었을 때 나는 간단한 신경망 분류기를 사용하여 그것에 맞서 싸우기로 결정했습니다.

나는이 파이썬 스크립트를 약 30 분 안에 작성했습니다 :
https://github.com/SaveTheRbtz/junk/tree/master/neural_networks_vs_ddos

그것은 pyBrain을 사용 하고 3 개의 nginx 로그를 입력으로 취하고 그중 2 개는 신경망을 훈련시킵니다.

  1. 좋은 쿼리
  2. 나쁜 것들로

분류를위한 하나의 로그

나쁜 질문에서 ..

0.0.0.0 - - [20/Dec/2011:20:00:08 +0400] "POST /forum/index.php HTTP/1.1" 503 107 "http://www.mozilla-europe.org/" "-"

... 그리고 좋은 ...

0.0.0.0 - - [20/Dec/2011:15:00:03 +0400] "GET /forum/rss.php?topic=347425 HTTP/1.0" 200 1685 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0"

... 사전을 만듭니다.

['__UA___OS_U', '__UA_EMPTY', '__REQ___METHOD_POST', '__REQ___HTTP_VER_HTTP/1.0', 
'__REQ___URL___NETLOC_', '__REQ___URL___PATH_/forum/rss.php', '__REQ___URL___PATH_/forum/index.php',
'__REQ___URL___SCHEME_', '__REQ___HTTP_VER_HTTP/1.1', '__UA___VER_Firefox/3.0',
'__REFER___NETLOC_www.mozilla-europe.org', '__UA___OS_Windows', '__UA___BASE_Mozilla/5.0',
'__CODE_503', '__UA___OS_pl', '__REFER___PATH_/', '__REFER___SCHEME_http', '__NO_REFER__',
'__REQ___METHOD_GET', '__UA___OS_Windows NT 5.1', '__UA___OS_rv:1.9',
'__REQ___URL___QS_topic', '__UA___VER_Gecko/2008052906']

우리가 우리의 네트워크를 양성한다는 항목 / 우리가 분류하는 데 필요한 항목을 ...

0.0.0.0 - - [20/Dec/2011:20:00:01 +0400] "GET /forum/viewtopic.php?t=425550 HTTP/1.1" 502 107 "-" "BTWebClient/3000(25824)"

... 특징 벡터로 변환됩니다.

[False, False, False, False, True, False, False, True, True, False, False, False, False, False, False, False, False, True, True, False, False, False, False]

이 모든 후에 데이터 세트를 훈련 및 테스트 세트로 나누고 신경망을 훈련시키고 최상의 것을 선택하는 표준 경로가 있습니다. 이 프로세스 (데이터 집합 크기에 따라 시간이 오래 걸릴 수 있음)가 끝나면 훈련 된 네트워크를 사용하여 로그를 분류 할 수 있습니다.

그러나 그 접근 방식과 관련된 많은 문제가 있습니다.

  1. 감지 하려면 먼저 감지 하고 해당 데이터로 신경망을 훈련 시켜야하기 때문에 감독 된 머신 러닝은 이러한 유형의 문제에있어 다소 잘못된 것입니다 .
  2. 고객의 행동을 계정에 포함시키지 않습니다. 각 사용자에 대한 페이지 간 전환 그래프를 고려하는 것이 좋습니다.
  3. 고객의 지역 정보를 계정에 포함시키지 않습니다. 네트워크의 한 컴퓨터가 일부 바이러스에 감염된 경우 해당 네트워크의 다른 컴퓨터가 감염 될 가능성이 높습니다.
  4. 지리적 위치 데이터를 계정에 넣지 않습니다. 물론 러시아에서 사이트를 운영하는 경우 브라질 고객이 거의 없을 것입니다.
  5. 그러한 문제를 해결하기 위해 신경망과 분류를 사용하는 것이 올바른 방법인지는 모르겠습니다. 이상 감지 시스템을 사용하는 것이 더 좋았을 수도 있습니다.
  6. ML 방법이 "온라인"(또는 "스트리밍") 일 때 더 좋으므로 즉시 교육을받을 수 있습니다.

따라서 다음과 같은 질문이 있습니다.
현재 웹 서버 로그 (좋은 클라이언트와 봇으로 구성됨)와 기록 데이터 (전날 / 주 / 월의 로그 만)에서 DDoS 공격에 대해 동일한 방어 문제에 직면 한 경우 어떻게 하시겠습니까? 주로 좋은 고객과 함께)?
어떤 머신 러닝 방식을 선택 하시겠습니까?
어떤 알고리즘을 사용 하시겠습니까?

답변:


11

이상 탐지 알고리즘은 어떻습니까? Andrew Ng의 클래스를 언급 할 때 ml-class.org의 "XV. ANOMALY DETECTION"섹션을 보았을 것입니다.

이상 탐지는 다음과 같은 시나리오에서 감독 된 분류보다 우수합니다.

  • 일반적으로 예외가 거의 없습니다 (예 : "긍정적 인"예가 너무 적음)
  • 일반적으로 매우 다른 유형의 예외가 있습니다
  • 미래의 변칙은 지금까지 보았던 것과 유사하지 않을 수 있습니다.

이상 감지의 중요한 점은 선택할 기능입니다. 여기에서 두 가지 일반적인 조언은 기능을 선택하는 것입니다.

  • 가우스 분포 (또는 그와 같이 왜곡)

  • 확률 p (anomaly)p (normal)와 비교할 수 없습니다. 즉, 비정상 값은 매우 큰 반면 정상 값은 매우 작습니다 (또는 그 반대).

지리적 위치가 시나리오에 도움이 될지 확실하지 않지만 클라이언트 동작은 응용 프로그램마다 다를 수 있지만 확실히 중요합니다. GET / POST의 비율이 중요하다는 것을 알 수 있습니다. 또는 요청 수에 대한 응답 크기의 비율입니다. 또는 단일 페이지 조회수입니다. 로그에 이러한 정보가있는 경우 확실하게 소급 분석에 데이터를 사용하고 IP 블랙리스트에 올릴 수 있습니다 :)


이상 감지의 경우 +1 또한 "지난 5 분 동안의 로그인 시도 횟수"와 "ip X 마지막 5 분 동안의 로그인 시도 횟수"를 추가합니다.
neuron

ML-Class에서 제공 한 이상 탐지의 주요 문제점은 복잡한 관계를 가진 수많은 기능에 사용할 수 없다는 점입니다. 계산이 너무 비쌉니다. 내 예에서는 콜 그래프, 지리적 위치 및 nginx로그에 추가 변수가 없어도 2 (!!) 쿼리 중 23 개의 기능이 있습니다 . 공격자가 봇 동작을 변경할 수 있기 때문에 PCA를 사용할 수 없습니다.
SaveTheRbtz

@SaveTheRbtz은 "계산 비용"재 - IIRC, 이상 탐지를 단지 밀도 추정했다 ml의 수준에 제시된 그래서 당신 좋겠 단 곱셈에서 같은 기능의 확률 P (1 개) * .. * P (xN으로) 하는 I 믿는다, O (n) 그래서 O (logn) 또는 무언가를 찾고 있는가? 어쨌든, 그것은 공정한 질문입니다 그리고 그것은 나를 자동 기능 선택에 대해 생각했다 - 그래서에서 질문 요청 machinelearning.stackexchange.com/questions/184
andreister

더 정확하게 말하면 1Mb의 로그 파일 당 최대 100,000 개의 기능에 대해 이야기하고 있습니다. 추신. 좋은 질문!
SaveTheRbtz

1

이것은 어려운 문제입니다. 여기 몇 가지 관찰 사항이 있습니다.

  • 이 백서 는 여러분에게 도움이 될 수 있습니다. 이 논문 은 다중 클래스 분류의 맥락에서 감독 학습 기술에 의존하여 적대 광고를 탐지합니다. 적대적 전략이 발전함에 따라 저자는 희귀 한 "변칙"에 주석을 달고있는 인간 전문가에 의존해야한다. 그들은 SVM 기반 순위 기술을 사용합니다.
  • 다른 사람들이 지적했듯이, 비지도 학습 기반의 이상 / 이상치 탐지를 시도 할 수 있지만 오탐과 오음의 균형을 맞추려면 많은 조정이 필요합니다.
  • 좋은 기능 세트를 갖는 것이 매우 중요합니다. 방법론을 선택하는 것은 부차적입니다 (예 : Naive Bayes 또는 로지스틱 회귀와 같은 간단한 기술만으로도 충분한 기능 세트가 주어지면 충분합니다)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.