Возможно, многие среди тех, кто хоть раз озадачивался поиском программы-анализатора NetFlow v.9, знают, что доступных бесплатных решений нет не так уж и много. Особенно если это решение open source. В моем случаем мне нужно было получить, разобрать и визуализировать трафик NetFlow v.9 cisco ASA 5585. Для этого я использовал ELK (Elasticsearch+Logstash+Kibana):
Вот ссылка на официальный сайт.
1. Данная сборка была развернута на ОС Red Hat Enterprise Linux 7.
2. Для начала установим Java, как требует их инструкция на сайте:
# sudo yum install java
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