Анализ NetFlow v.9 Cisco ASA с помощью Logstash (ELK)

в 11:00, , рубрики: Cisco, logstash-codec-netflow, анализатор netflow cisco ASA., Настройка Linux, хранение данных, метки: ,

Возможно, многие среди тех, кто хоть раз озадачивался поиском программы-анализатора 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

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

Автор: mypomacca

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js