
Вот ссылка на официальный сайт.
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
В действительности, очень много времени потратил на поиск решения для данного вопроса, что и побудило написать данную статью (не хочется, чтобы кто-то также напрягался). Я надеюсь, что данный мануал был для полезен. Удачи в ваших начинаниях!
Комментарии (11)
pavelkolodin
10.08.2016 17:56+1Автор картинку рисовал наверное дольше, чем делал решение.
mypomacca
11.08.2016 02:25+1pavelkolodin, все рисунки были взяты из поисковика google, решение искал долго, пришлось связываться с разработчиками.
Faight
10.08.2016 22:59+2А где собственно анализ? Графики в kibana?
mypomacca
11.08.2016 02:20Faight, все доступные графики и таблицы есть в kibana, там также существует возможность править потоки для дальнейшего корректного отображения. Могу сказать, что есть еще 4 человека, которые допиливают шаблоны kibana для NetFlow v.9, как только появится информация — я обязательно добавлю к основному материалу. Если, кто-то найдет данную информация раньше, пусть скидывает мне в личку.
Faight
11.08.2016 20:52Отлично, буду ждать. Попробую выкроить время для ознакомления с netflow в ELK. У себя пока его для сетевых железок + voip в основном использую.
aremdae
11.08.2016 17:48С плагином для netflow не все так прозрачно. Например, устройства на платформе IOS XR будут слать netflow в flowset с id=260, как раз тем, который у вас в посте по заверениям logstash не имеет подходящего шаблона. А в этом flowset содержится вся полезная информация: количество октетов, адреса, протокол, порты и т. д. Эта проблема встречается на многих устройствах Cisco и с другими flowset id. Мне в сети найти подходящие шаблоны не удалось, а с руби, к сожалению, я не знаком.
mypomacca
12.08.2016 02:18OpManager позволяет неплохо рисовать статистику и вести анализ NetFlow v.9, так-то он платный… НО, есть бесплатная версия на два интерфейса.
doti
А вы не рассматривали возможность анализа уже существующих netflow 9 данных?
Например «залить» их в какую-то парку и оттуда проанализировать?
mypomacca
doti, да, рассматривал. Запарсить не сложно, но, ELK имеет очень сильную сторону — сбор и фильтрацию всех получаемых данных.