Возможно, многие среди тех, кто хоть раз озадачивался поиском программы-анализатора NetFlow v.9, знают, что доступных бесплатных решений нет не так уж и много. Особенно если это решение open source. В моем случаем мне нужно было получить, разобрать и визуализировать трафик NetFlow v.9 cisco ASA 5585. Для этого я использовал ELK (Elasticsearch+Logstash+Kibana):

image

Вот ссылка на официальный сайт.

Спойлер
Данный продукт является open source решением, а это значит, что в нем было и будет немало «багов», с которыми мне посчастливилось пришлось столкнуться. Ниже будет представлена рабочая сборка.


1. Данная сборка была развернута на ОС Red Hat Enterprise Linux 7.

2. Для начала установим Java, как требует их инструкция на сайте:

# sudo yum install java

image

3. Устанавливаем Elasticsearch (решение для полнотекстового поиска, построенное поверх Apache Lucene, но с дополнительными удобствами, типа лёгкого масштабирования, репликации и прочих радостей, которые сделали elasticsearch очень удобным и хорошим решением для высоконагруженных проектов с большими объёмами данных):

# sudo yum install download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.4/elasticsearch-2.3.4.rpm
# sudo service elasticsearch start

4. Устанавливаем Logstash (для сборки, фильтрации и последующего перенаправления в конечное хранилище данных):

# sudo yum install download.elastic.co/logstash/logstash/packages/centos/logstash-2.3.4-1.noarch.rpm
# sudo service logstash start

5. Устанавливаем Kibana (позволяет брать\искать данные по elasticsearch и строить множество красивых графиков):

# sudo yum install download.elastic.co/kibana/kibana/kibana-4.5.3-1.x86_64.rpm
# systemctl enable kibana.service
# sudo service kibana start

6. Теперь у вас должен стать доступен сайт по адресу localhost:5601 во вкладке status вы сможете проверить все ли модули у вас подключены.

7. Сейчас нам нужно установить плагин logstash-codec-netflow:

# /opt/logstash/bin/logstash-plugin install logstash-codec-netflow

8. Теперь, после успешной установки, ставим поверх новую рабочую версию 2.1.1 logstash-codec-netflow:

# /opt/logstash/bin/logstash-plugin install --version 2.1.1 logstash-codec-netflow

9. Готово! После установки мы можем настроить конфиг (/etc/logstash/conf.d):

# cd /etc/logstash/conf.d
# nano netflow.conf

input {
     udp {
       port => 9996
       type => "netflow"
       codec => netflow {
         versions => [5,9,10]
       }
     }
}

output {
 if [type] == "netflow" {
  elasticsearch {
     hosts => localhost
     index => "netflow-%{+YYYY.MM.dd}"
     }
   }
}


10. Из нашего конфига следует, что на cisco ASA нужно настроить сброс NetFlow v.9 на ip адрес нашего сервера, который слушает порт 9996 (если есть желание — можете поменять на свой).

Пример настройки:
access-list global_mpc extended permit ip any any
flow-export destination inside ВАШ ИП 9996
class-map global_class
match access-list global_mpc
policy-map global_policy
class global_class
flow-export event-type all destination ВАШ ИП

11. Так, теперь можно проверить результат наших стараний. Используем команду и проверим, что наши труды не прошли даром:

# /opt/logstash/bin/logstash -e 'input { udp { port => 9996 codec => netflow }} output { stdout {codec => rubydebug }}'

Вначале мы будет видеть только это:

:message=>"No matching template for flow id 265", :level=>:warn}
:message=>"No matching template for flow id 263", :level=>:warn}
:message=>"No matching template for flow id 256", :level=>:warn}
:message=>"No matching template for flow id 265", :level=>:warn}
:message=>"No matching template for flow id 263", :level=>:warn}
:message=>"No matching template for flow id 260", :level=>:warn}

Это может продолжаться пару минут, не переживайте, запись изменится и мы получим желаемый результат.

12. Далее заходим localhost:5601 проверяем, что вы получили данные, выстраиваем необходимые для вас значения в таблицы и графики.

P.S.


Итак, что хотелось бы сказать в конце… Начнем с того, что вам скорее всего придется ставить самописные плагины, а это дело не простое (по крайней мере для меня), для этого вам понадобится такой пакет (для монтирования ваших «gem», «gemspec»):

# yum install rubygem-bundler

И вот этот пакет, чтобы получить некоторые самописные плагины с сайта github.

# yum install git

В действительности, очень много времени потратил на поиск решения для данного вопроса, что и побудило написать данную статью (не хочется, чтобы кто-то также напрягался). Я надеюсь, что данный мануал был для полезен. Удачи в ваших начинаниях!
Поделиться с друзьями
-->

Комментарии (11)


  1. doti
    10.08.2016 14:14

    А вы не рассматривали возможность анализа уже существующих netflow 9 данных?
    Например «залить» их в какую-то парку и оттуда проанализировать?


    1. mypomacca
      11.08.2016 02:48

      doti, да, рассматривал. Запарсить не сложно, но, ELK имеет очень сильную сторону — сбор и фильтрацию всех получаемых данных.


  1. pavelkolodin
    10.08.2016 17:56
    +1

    Автор картинку рисовал наверное дольше, чем делал решение.


    1. mypomacca
      11.08.2016 02:25
      +1

      pavelkolodin, все рисунки были взяты из поисковика google, решение искал долго, пришлось связываться с разработчиками.


  1. igor_suhorukov
    10.08.2016 19:27

    Спасибо за обучающий материал по netflow+logstash


    1. mypomacca
      11.08.2016 02:20

      Спасибо за ваш отзыв!


  1. Faight
    10.08.2016 22:59
    +2

    А где собственно анализ? Графики в kibana?


    1. mypomacca
      11.08.2016 02:20

      Faight, все доступные графики и таблицы есть в kibana, там также существует возможность править потоки для дальнейшего корректного отображения. Могу сказать, что есть еще 4 человека, которые допиливают шаблоны kibana для NetFlow v.9, как только появится информация — я обязательно добавлю к основному материалу. Если, кто-то найдет данную информация раньше, пусть скидывает мне в личку.


      1. Faight
        11.08.2016 20:52

        Отлично, буду ждать. Попробую выкроить время для ознакомления с netflow в ELK. У себя пока его для сетевых железок + voip в основном использую.


  1. aremdae
    11.08.2016 17:48

    С плагином для netflow не все так прозрачно. Например, устройства на платформе IOS XR будут слать netflow в flowset с id=260, как раз тем, который у вас в посте по заверениям logstash не имеет подходящего шаблона. А в этом flowset содержится вся полезная информация: количество октетов, адреса, протокол, порты и т. д. Эта проблема встречается на многих устройствах Cisco и с другими flowset id. Мне в сети найти подходящие шаблоны не удалось, а с руби, к сожалению, я не знаком.


    1. mypomacca
      12.08.2016 02:18

      OpManager позволяет неплохо рисовать статистику и вести анализ NetFlow v.9, так-то он платный… НО, есть бесплатная версия на два интерфейса.