Pergunta

Eu me vejo a necessidade de tráfego de rede processo capturado com tcpdump. Lendo o tráfego não é difícil, mas o que fica um pouco difícil é detectar onde há "picos" no trânsito. Estou principalmente preocupado com pacotes SYN TCP e o que eu quero fazer é dias encontrar onde há um aumento repentino no tráfego para um determinado porto de destino. Há um pouco de dados para processar (aproximadamente um ano).

O que eu tentei até agora é usar uma média móvel exponencial, este era bom o suficiente para me deixar entrar algumas medidas interessantes, mas comparando o que eu vi com fontes de dados externas parece ser um pouco em muito agressivo sinalizando coisas como anormal.

Eu considerei usando uma combinação do móvel exponencial dados médios mais históricos (possivelmente a partir de 7 dias no passado, pensando que deve haver um ciclo semanal para o que estou vendo), como alguns papéis que li já parecem ter conseguido o uso de recursos modelo assim com um bom sucesso.

Então, alguém sabe de um método bom ou um lugar para ir e ler sobre esse tipo de coisa.

A média móvel Eu tenho usado olhares mais ou menos como:

avg = avg+0.96*(new-avg)

Com avg sendo a EMA e new sendo a nova medida. Tenho feito experiências com o que limiares de usar, mas descobriu que uma combinação de "deve ser um dado factor mais elevado do que a média antes da pesagem o novo valor no" e "deve ser de pelo menos 3 superior" para dar o resultado menos ruim.

Foi útil?

Solução

Este é amplamente estudado na literatura de detecção de intrusão. Este é um artigo seminal sobre a questão, que mostra, entre outras coisas, como analisar tcpdump dados para obter insights relevantes.

Este é o papel: http://www.usenix.org/publications/library/proceedings/sec98/full_papers/full_papers/lee/lee_html/lee.html aqui eles usam o sistema de indução de regras RIPPER, eu acho que você poderia substituir o antigo para algo mais recente, como http://www.newty.de/pnc2/ ou http://www.data-miner.com/rik.html

Outras dicas

Gostaria de aplicar dois filtros passa-baixa para os dados, um com um longo tempo constante, T1, e um com um curto constante de tempo, T2. Você, então, olhar para a diferença de magnitude na saída desses dois filtros e quando excede um certo limite, K, então isso seria um ponto. A parte mais difícil é a sintonização T1, T2 e K para que você não obter muitos falsos positivos e você não perca nenhuma pequenos picos.

O que se segue é um único pólo IIR filtro passa-baixo:

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

O valor de k determina a constante de tempo e é geralmente perto de 1,0 (mas <1,0, é claro).

Eu estou sugerindo que você aplicar dois desses filtros em paralelo, com diferentes constantes de tempo, por exemplo, começar com digamos k = 0,9 para um (curto constante de tempo) e k = 0,99 para o outro (constante de tempo de comprimento) e, em seguida, olhar para a diferença magnitude em suas saídas. A diferença magnitude será pequena a maior parte do tempo, mas vai se tornar grande quando há um pico.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top