[Из песочницы] Анализ NetFlow v.9 Cisco ASA с помощью Logstash (ELK)
Вот ссылка на официальный сайт.
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
В действительности, очень много времени потратил на поиск решения для данного вопроса, что и побудило написать данную статью (не хочется, чтобы кто-то также напрягался). Я надеюсь, что данный мануал был для полезен. Удачи в ваших начинаниях!
Комментарии (1)
10 августа 2016 в 14:14
0↑
↓
А вы не рассматривали возможность анализа уже существующих netflow 9 данных?
Например «залить» их в какую-то парку и оттуда проанализировать?