Обнаружение Аномалий в IP Сетях Методами Анализа Временных Рядов

 

      Мы сначала рассматриваем методы обнаружения аномалии и затем описываем подробно технику статистической обработки сигналов, обработки данных, основанную на обнаружении резких изменений. Конкретные примеры алгоритмов, которые демонстрируют возможности статистической обработки сигналов для обнаружению аномалии сети, представлены. Применение статистической обработки сигналов,  находится все еще в ее младенчестве, и мы полагаем, что она имеет большой потенциал расширения области, и таким образом повышения надежности IP сетей.

 

Простой Протокол Управления Сети (SNMP):

      SNMP (Simple Network Management Protocol) (см.[3]) работает в парадигме клиент-сервер. Протокол обеспечивает механизм связи между менеджером и агентом. Единственный SNMP менеджер может контролировать сотни SNMP агентов расположенных на устройствах сети (раутерах и маршрутизаторах). SNMP реализован на прикладном уровне, т.е. выше UDP. SNMP-сервер имеет способность собрать данные управления (MIB-management information base), которые, содержат данные о MIB-переменных, хотя не может её должным образом обрабатывать.

Простой Протокол Управления Сети (2):

      SNMP---MIB Переменные: MIB переменные распадаются на группы: интерфейсы системы(if), интерфейсы интернетовского протокола (ip),  протоколом сообщений управления Интернетом (icmp),  протокол управления  передачей(tcp),  протокол  пользовательских дейтаграмм (udp), и другие. Каждая группа переменных описывает  функциональные возможности определенного протокола устройства сети. В зависимости от типа контролируемого узла, можно рассмотреть соответствующую группу переменные.

Простой Протокол Управления Сети (3):

      Если проверяемый узел - маршрутизатор, тогда исследуется ip группа переменных. Переменные MIB реализованы как счетчики. Данные временного ряда для каждой MIB переменной получены вычислением их приращений  между двумя последовательными моментами времени, образующими период опроса (интервал дискретизации – в случае процесса с непрерывным временем).

ОБНАРУЖЕНИЕ АНОМАЛИИ, ИСПОЛЬЗУЮЩЕЕ СТАТИСТИЧЕСКИЙ АНАЛИЗ SNMP MIB(1)

      В статистическом анализе сетевая аномалия моделируется как коррелированное (связанное по времени в нескольких переменных) резкое изменение в сетевых данных. Такое изменение отмечают как статистически значимое изменение параметров порождающей временной ряд модели на промежутке, сравнимом с периодом  опроса (15 сек).

      Этот подход основан на интуитивных приемах сетевых администраторов, которые устанавливают жесткие пороговые ограничения на приращения переменных и используют «голосование по большинству». Однако, статистические методы позволяют снизить число ложных тревог.

ОБНАРУЖЕНИЕ АНОМАЛИИ, ИСПОЛЬЗУЮЩЕЕ СТАТИСТИЧЕСКИЙ АНАЛИЗ SNMP MIB(2)

      Резкое изменение в данных временного ряда можно смоделировать с помощью авторегрессионной модели. Ма допускаем, что резкие изменения в одном значении временного ряда влияют на следующие, но не слишком долго. В нашем случае успешным оказалось применение авторегрессионной модели 1-го порядка Y(n)=a1*Y(n-1)+eps(n) в окне длительности 5 минут, т.е. содержащем N=300/15+1=21 отсчет. В качестве Y были использованы значения следующих MIB переменных.

ОБНАРУЖЕНИЕ АНОМАЛИИ, ИСПОЛЬЗУЮЩЕЕ СТАТИСТИЧЕСКИЙ АНАЛИЗ SNMP MIB(3)

ОБНАРУЖЕНИЕ АНОМАЛИИ, ИСПОЛЬЗУЮЩЕЕ СТАТИСТИЧЕСКИЙ АНАЛИЗ SNMP MIB(4)

      Три MIB переменные выбраны из ip MIB группы. Эти переменные представляют перекрестную секцию движения, отмеченного в маршрутизаторе. Переменная ipIR (In Recieves), представляет общее количество дейтаграмм, полученныхо от всех интерфейсов маршрутизатора. ipIDe (In Deliver), представляет число дейтаграмм, правильно поставленного более высоким уровням, поскольку этот узел был их заключительным предназначением.

ОБНАРУЖЕНИЕ АНОМАЛИИ, ИСПОЛЬЗУЮЩЕЕ СТАТИСТИЧЕСКИЙ АНАЛИЗ SNMP MIB(5)

      ipOR (Out Requests), представляет число дейтаграмм, переданных от более высоких уровней узла, который будет отправлен ip уровнем. Движение, связанное с ipIDe и ipOR переменными включает только долю полного трафика сети. Однако, в случае аномалии, они - уместные переменные, так как маршрутизатор делает некоторую обработку таблицы маршрутов, которая была бы отражена в этих переменных.

 

График приращений MIB переменной ipIR

График приращений MIB переменной ipIDe

График приращений MIB переменной ipOR

Обнаружение Резкого Изменения(1)

      В нашем статистическом подходе, функция здоровья сети (network health function) получена, с использованием комбинации индикаторов ненормальности индивидуальных MIB переменных. Ненормальность в MIB данных определена через обнаружение резких изменений в их статистике. Так как статистическое распределение индивидуальных MIB переменных чрезвычайно различно, трудно сделать согласованную обработку этих переменных. Поэтому, сначала получены свидетельства резких изменений в каждой из MIB переменных.

Обнаружение Резкого Изменения(2)

Обнаружение Резкого Изменения(3)

      На предыдущем слайде показаны два смежных окна, к данным каждого из которых мы применили оценивание авторегрессионной модели и сравнили дисперсии рядов из соответствующих остатков на основе обобщенного отношения правдоподобия (ООП):

G=sR^(-NR)*sS^(-NS)/[sR^(-NR)*sS^(-NS)+ sP^(-NR-NS)],

Где sR, sS – вариации рядов остатков R и S,

      sP – вариации оьъединенного ряда остатков R и S,

     NR+1,NS+1 – численности рядов в окнах R и S.

Обнаружение Резкого Изменения(4)

      Преобразованное обобщенное отношение правдоподобия (ООП):

G=1/[1+ (sR/sP)^NR*(sS/sP)^NS],

 удобнее с точки зрения устойчивости вычислений.

Эта величина как правило принимает значения близкие к 1 для резко меняющихся дисперсий остатков.

Обнаружение Резкого Изменения(5)

      Оценивание параметров авторегрессионной модели для ряда {y(i), i=1,..,N}.

      1) Очистить ряд от среднего значения, т.е. заменить y(n) на y(n)-my, где my =sum(y(i), i=1,..,N)/N– среднее значение ряда.

      2) Вычислить a1 реализующее минимум суммарной ошибки предсказания y(n) с помощью линейного прогноза по y(n-1)   Serr=sum([y(i)-a1*y(i-1)]^2, i=1,..,N).

      Легко доказать, что a1=corr1(y)/disp(y), где

      corr1(y)=sum([y(i)*y(i-1)], i=2,..,N), выборочная автоковариация ряд с лагом 1;

      Disp(y)=sum([y(i)]^2, i=1,..,N-1), дисперсия ряда.

Обнаружение Резкого Изменения(6)

      3) Вычислить ряд из остатков {erry(i), i=1,..,N} полагая erry(i)=y(i)-a1*y(i-1), i=2,..,N.

      4) Вычислить вaриацию остатков

      Sy=sqrt[sum(erry(i))^2, i=2,..,N)/(N-1)].

 

Задание лабораторной работы.

1) Следуя варианту, загрузить 1-й файл данных, разбить его на смежные участки (колонки) по 21 отсчету и провести вычисления ООП. Считая, что любые два смежных участка содержат резкое изменение модели, определить пороговые значения критерия, которые выявляют 50%, 75%, 90% и 95% аномалий.

2) Загрузить 2-й файл данных, разбить его на смежные участки (колонки)  по 21 отсчету и провести вычисления ООП. Считая, что никакие два смежных участка не содержат резкого изменения модели, определить для найденных в предыдущем пункте пороговых значений доли ложных тревог.

Пример решения задания лабораторной работы(1)

clear all

load var126  % Загрузка данных смешанного

                   % трафика

load var226 % Загрузка данных нормалного

                   % трафика

figure(1),

subplot(2,1,1), plot(datac(:)),…

title('Normal traffic') % График «объединенных»

subplot(2,1,2), plot(datav(:)),… % отрезков рядов

title('Mixed traffic')

Графики наблюденных данных

Пример решения задания лабораторной работы(2)

       helthfunk1=[];helthfunk2=[];

        

       % Вычислим значения функции здоровья для смежных пар в

       % нормальном и аномальном трафике,helthfunk2 и helthfunk1

       %  соответственно

        

       [rv,cv]=size(datav);

       K=cv;

        

       for i=1:2:(cv-1)

           helthfunk1=[helthfunk1,cotest01(datav(:,i),datav(:,i+1))];

           helthfunk2=[helthfunk2,cotest01(datac(:,i),datac(:,i+1))];

       end

        % На следующем слайде приведен текст функции cotest01

Функция cotest01(1)

        function alert=cotest01(ld,sd)

       % Вычисляет функцию здоровья на стыке

       % отрезков рядов 'ld'(Learning data) длины NL+1

       % и 'sd' (Sequential data) длины NS+1 по критерию

       % alert=sl^(-NL)*ss^(-NS)/(sl^(-NL)*ss^(-NS)+sp^(-NL-NS)

       % =1/(1+(sl/sp)^NL*(ss/sp)^NS)

       % где sl,sd - остаточные вариации, полученные в

       % предположении, что каждый из

       % отрезков попрожден авторегрессионной моделью первого

       %  порядка,

       % оцененной по каждому отрезку

       % sp - вариация объединенных отрезков.

       % Среднее из рядов удаляется при начале вычислений

 

Функция cotest01(2)

       ld=ld(:);sd=sd(:);

       NL=length(ld)-1;NS=length(sd)-1;

       ld=ld-ones(size(ld))*mean(ld); % Удалим среднее

       sd=sd-ones(size(sd))*mean(sd); % Удалим среднее

       ldrest=farrest(ld); % Ряд из остатков от ld

       varldrest=std(ldrest); % Вариация ряда из остатков ld

       sdrest=farrest(sd); % Ряд из остатков от sd

       varsdrest=std(sdrest);  % Вариация ряд из остатков sd

       sp=[ldrest;sdrest]; % Объединенный ряд из остатков

       varsp=std(sp); % Вариация этого ряда

       ret1=varldrest/varsp; % Отношение вариации ldrest к вариации sp

       ret2=varsdrest/varsp;

       alert=1/(1+ret1^NL*ret2^NS);

 

Функция farrest

       В работе функции cotest01 использована функция farrest. Вот ее текст:

       function rest=farrest(tb)

       % Функция возвращает ряд из остатков автрегрессионной модели,

       % оцененной по отрезку ряд tb на основе предположения о том,

       % что данные порождены авторегрессионным процессом

       %                tb(n)=r*tb(n-1)+e(n),n=2:tr,

       % где e(n) независимые одинаково распределенные случайные

       %  величины

       % с нулевым средним. Из tb должно быть удалено среднее.

       tb=tb(:); % Теперь это точно колонка

       [rt,ct]=size(tb); % Запишем размеры tb

       tb1=tb(2:rt); % Усекаем tb от начала на один элемент - будущее

       tb2=tb(1:(rt-1)); % Усекаем tb от конца на один элемент –

        % запаздывающее

       r=tb2\tb1; % МНК-оценки

       rest=tb1-tb2*r;   % Вектор ошибок предсказания

 

Пример решения задания лабораторной работы(продолжение)

[helthfunk1,hlt12]=sort(helthfunk1);

[helthfunk2,hlt122]=sort(helthfunk2);

% Отсортировали по возрастанию

% значения функций здоровья

      figure(2), % Посмотрим графики

      subplot(2,1,1),plot(healthfunk1),

    title('Health function for MIX'),

      subplot(2,1,2),plot(helthfunk2),

  title('Health function for correct data'),

Графики функций здоровья

Пример решения задания лабораторной работы(продолжение)

 

 

       x=0:0.05:1;ST=length(x);

       % Значения возможного порога,

       % отделяющего примеры разных классов

         TP=[];FP=[];

         % Протабулируем функцию TP=TP(x) - количество значений

         % функции здоровья нормального трафика меньших x, столько

         % правильно распознанных положительных примеров

         % Протабулируем функцию FP=FP(x) - количество значений

          % функции здоровья аномального трафика меньших x,

          % столько неправильно распознанных отрицательных

          % примеров

       % Далее – три графика.

 

Пример решения задания лабораторной работы(продолжение)

 

         for i=1:ST

             TP=[TP,sum(helthfunk2<x(i))]; %Число "нормальных

              % пар блоков удаленных от нуля менее x(i)

             FP=[FP,sum(helthfunk1<x(i))]; %Число "аномальных"

           % пар блоков удаленных от нуля менее x(i)

         end 

         figure(3),

         subplot(3,1,1), plot(x(1:ST),FP(1:ST)),

 title('Distances vs FP for normal traffic')

         subplot(3,1,2),plot(x(1:ST),TP(1:ST)),….

title('Distances vs TP for abnormal traffic')

         subplot(3,1,3), plot(FP/(K/2),TP/(K/2),'*'),

      title('ROC curve')

 

Пример решения задания лабораторной работы(продолжение)

Пример решения задания лабораторной работы(продолжение)

      % Для оформления отчета применим

      % отображение данных в командном

      % окне MATLAB и экспорт в формат

      %  электронной таблицы Lotus.

      disp('      levels      FP         TP      ')

        [x' FP' TP' ]

      wk1write('var26.wk1',[x',FP',TP'])

Последний вывод в командном
окне MATLAB

         levels      FP         TP     

 

        ans =

 

                 0         0         0

            0.0500         0         0

            0.1000         0         0

            0.1500         0         0

            0.2000         0         0

            0.2500         0         0

            0.3000         0         0

            0.3500         0         0

            0.4000         0    1.0000

            0.4500         0    6.0000

            0.5000    1.0000    8.0000

            0.5500    2.0000   11.0000

            0.6000    3.0000   13.0000

            0.6500    3.0000   14.0000

            0.7000    3.0000   15.0000

            0.7500    3.0000   16.0000

            0.8000    3.0000   16.0000

            0.8500    4.0000   17.0000

            0.9000    5.0000   17.0000

            0.9500    7.0000   18.0000

            1.0000   20.0000   20.0000