Tshark + Elasticsearch для создания системы анализа трафика с возвратом

Elasticsearch

tsharkэто инструмент сетевого анализаwiresharkСледующий инструмент в основном используется для захвата и анализа пакетов в среде командной строки, особенно для глубокого анализа протокола.tcpdumpв сложных ситуациях. В этой статье будут представлены иtsharkСвязанные трафик решения.

img
Photo by hao wang on Unsplash

tshark + elastic stack

Используя tshark, можно не только анализировать существующие файлы pcap, но и выводить другие форматы, а мощные поисковые возможности ES можно комбинировать для достижения возможности записи, анализа и обработки пакетов данных, а также для реализации анализа с возвратом. с инструментами визуализации kibana и даже осуществлять визуальный мониторинг в реальном времени.

Семейный ковш с эластичным штабелем

Самое раннее ведро семейства ELK, производительность logstash подвергалась критике, а затем оно началось заново, с целью сбора и использованияgolangСоздайте набор битов для разных сценариев сбора. Среди них для сетевого трафика разработаныpacketbeat.

packetbeatПреимущество в том, что индивидуальныйelasticsearchизmapping,kibanaСерия визуальных диаграмм может удовлетворить общий анализ обычных пакетов, таких как tcp, dns и udp. В основном из коробки.

ноpacketbeatЕсть и недостатки.Анализ пакетов заимствован из сеансового анализа.Отдельного анализа каждого пакета нет.Склонность к прикладному уровню, а анализ сетевого уровня недостаточен (особенно при поиске и устранении неполадок). , поддерживаемые протоколы ограничены, только общие протоколы иtsharkОчевидные пробелы есть в более чем 2000 видах плагинов, при столкновении с неподдерживаемыми нужно ждать поддержки или вручную писать плагины, что крайне сложно.

Импортируйте elasticsearch в автономном режиме

tsharkПоддержка импорта файлов json после анализа пакетов pcap.elasticsearch, поддерживаяelasticsearchИнтерфейс массового импорта_bulkформат, команда выглядит следующим образом:

tshark -r test_trace.pcap -T ek > test_trace.pcap.json

После этого вы можете передать файл json черезcurlимпорт.

curl -s -H «Тип содержимого: application/x-ndjson» -XPOST «localhost: 9200/foo/_bulk»  —  data-binary «@/Users/test-elastic/test_trace.pcap.json»

Примечание:

  1. При импорте может произойти сбой импорта из-за_bulkВ интерфейсе есть ограничение на размер файла поста, старайтесь не превышать 15МБ, желательно в пределах 10МБ. Если он превышает, рекомендуется использоватьtsharkУсловие вывода для создания нескольких файлов json, используйтеcurlИмпортировать последовательно.
  2. Если импорт не удался, вы можетеcurlДобавить-vПросмотр оперативной информации.
  3. Имя индекса по умолчанию выглядит примерно такpackets-2019-04-23(дата записи сообщения), которые можно переиндексировать после импорта

Импорт можно просмотреть с помощью такой команды:

завитокhttp://127.0.0.1:9200/packets-2019-04-23/_search/?size=10&pretty=true'

Решение для мониторинга в реальном времени

Главная мысль

  • использоватьtsharkЗахват пакетов в режиме реального времени и активация политик фильтрации
  • использоватьtsharkПроанализируйте захваченное сообщение, извлеките указанные поля и запишите в файл csv или используйте формат json для следующего шага.ETL
  • использоватьfilebeatПостоянно обнаруживать CSV-файлы и одновременноlogstashИспользуется для фильтрации полей и т.п. (если фильтрация не требуется, ее можно пропуститьlogstashотправить прямо наelasticsearch)
  • logstashФильтруйте поля, конвертируйте форматы и т. д., а затем отправляйте их наelasticsearch
  • использоватьkibanaВизуализация данных и статистический анализ пакетов

Простая реализация

1. часть акулы

tshark -i phy0.mon -t ad -t ad -lT fields -E separator=, -E quote=d   -e _ws.col.Time  -e wlan.fc.type -e wlan.fc.type_subtype -e radiotap.dbm_antsignal -e frame.len -e radiotap.datarate   > tshark.csv

2. filebeat

Простой файл конфигурации filebeat.yml

filebeat.modules:
- module: system
  syslog:
    enabled: false
  auth:
    enabled: true
    var.paths: ["/home/tshark.csv"]
name: test
output.logstash:
  hosts: ["localhost:5044"]

3. logstash

Файл logstash.yml в основном делится на:

  • Слушайте порт 5044 для полученияfilebeatДанные
  • Разобрать данные в формате csv и разделить поля
  • Обработка даты, формат преобразования
  • Добавляйте часы, минуты и секунды для удобства индексации
  • Преобразование некоторых полей в числовой формат
  • Заменить некоторые поля
  • вывод в elasticsearch
input {
  beats {
    port => 5044
  }
}

csv {
     source => "message"
     columns => [ "col.time","frame.type","frame.subtype","rssi","frame.size","data.rate" ]
   }

date {
     match => [ "col.time", "YYYY-MM-DD HH:mm:ss.SSSSSSSSS" ]
     target => "@timestamp"
   }

mutate {
  add_field => {"[hour]" => "%{+HH}"}
  add_field => {"[minute]" => "%{+mm}"}
  add_field => {"[second]" => "%{+ss}"}

  }

mutate {
     convert => [ "rssi", "integer" ]
     convert => [ "frame.size", "integer" ]
     convert => [ "data.rate", "integer" ]   
     convert => [ "second", "integer" ]  
     convert => [ "minute", "integer" ]  
     convert => [ "hour", "integer" ]  

   }

if[frame.type]=="0"{
   mutate {
     replace => [ "frame.type", "Management" ]
   }}
   if[frame.type]=="1"{
   mutate {
     replace => [ "frame.type", "Control" ]
   }}
   if[frame.type]=="2"{
   mutate {
     replace => [ "frame.type", "Data" ]
   }}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
  }
}

4. elasticsearch

Определения индексов могут быть предварительно импортированыmapping, это можно проверитьelasticsearchДокументация

5. kibana

Используйте диаграммы, панели и т. д. для визуализации данных, чтобы реализовать функции мониторинга, которые можно использовать в соответствии с потребностями бизнеса ~

резюме

использоватьtshakФункции синтаксического анализа пакетов и экспорта данных можно гибко обрабатывать в соответствии с требованиями.С помощью инструментов больших данных с открытым исходным кодом можно реализовать инструменты, более подходящие для бизнеса, а также быстрый анализ сети, мониторинг в реальном времени, устранение неполадок, расширенный поиск , ретроспективный анализ, статистика, отчеты и т. д. могут даже заменить коммерческие сетевые системы ретроспективного анализа в некоторых сценариях.

Ссылаться на

Воспроизведение запрещено без разрешения