- Elastiсsearch — инструмент для полнотекстового поиска
- Logstach — инструмент для сборки, обработки и последующей отправки данных в хранилище
- Kibana — отвечает за поиск данных по elastiksearch и позволяет построить различные графики для последующего анализа полученных данных
Стоит отметить, что стек ELK довольно требовательный к ресурсам, поэтому даже для работы с одним Netflow потоком необходимо минимум 2 процессорных ядра и 4 гигобайта оперативной памяти.
Прежде чем отправлять Netflow поток, установким и настроим ELK. Установку стека ELK будем производить на Ubuntu 16.04
Установка Java 8
Установка Java необходима для работы Logstash, поэтому с нее и начнем
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt -y install oracle-java8-installer
Если не будет хватать каких то зависимостей, выполните
sudo apt install -f
и повторите команду установки. В процессе так же необходимо будет подтвердить лицензионное соглашение.
Установка Elasticsearch
Установка всех компонентов ELK будем производить из официальных репозитеориев, поэтому нам понадобятся приватные ключи
Скачиваем и устанавливаем приватный ключ:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Установим необхоимый пакет для APT
sudo apt-get install apt-transport-https
Добавляем репозиторий Elastiksearch в source.list
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
И переходим непосредственно к установке
sudo apt-get update && sudo apt-get install elasticsearch
После установки запускаем Elasticsearch
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Установка Logstach Поскольку пакеты ELK находятся в одном репозитории, который мы уже добавили, остается только установить пакет
sudo apt-get install logstash
После заверешения установки, необходимо создать конфигурационный файл для Logstash, в котором укажем, на каком порту будет работать Netflow коллектор:
nano /etc/logstash/conf.d/netflow.conf
И вставляем следующую конфигурацию:
input {
udp {
port => 9996
codec => netflow {
versions => [5, 9]
}
type => netflow
tags => "port_9996"
}
udp {
port => 9995
codec => netflow {
versions => [5, 9]
}
type => netflow
tags => "port_9995"
}
}
output {
if "port_9996" in [tags] {
elasticsearch {
hosts => "127.0.0.1"
index => "logstash-netflow-9996-%{+YYYY.MM.dd}"
}
} else if "port_9995" in [tags] {
elasticsearch {
hosts => "127.0.0.1"
index => "logstash-netflow-9995-%{+YYYY.MM.dd}"
}
}
}
Если коротко, то тут мы обьявляем, что будем собирать данные с 9995 и 9996 UDP портов, версии Netflow — 5 и 9, и даем название потоку logstash-netflow-9995-(дата) — это понадобится Elasticsearch для создания индексов.
Так же для работы logstash с Netflow необходимо уставновить плагин codec-netflow:
cd /usr/share/logstash/bin
./logstash-plugin install logstash-codec-netflow
Перезапускаем Logstash:
sudo systemctl enable logstash
sudo systemctl restart logstash
Установка Kibana
Все так же как и с Logstash — просто установим пакет:
sudo apt install kibana
sudo systemctl enable kibana
sudo systemctl start kibana
Важное замечание — доступ к Web интерфейсу Kibana осуществяляется по умолчанию только с локального компьютера на порту 5601. Если вы устанавливаете ELK на свой компьютер, то уже можете перейти по адресу localhost:5601 и проверить работу Kibana, однако вы не получите доступа к интерфейсу с других компьютеров. Для того чтобы это исправить необходимо установить Apache и настроить его в качестве обратного прокси.
Установка Apache как обратного прокси
Устанавливаем пакет Apache
sudo apt install apache2
После установки необходимо активировать некоторые модули apache:
sudo a2enmod
И вводим строку со списком необходимых модулей:
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
Теперь перейдем к правке дефолтной конфигурации виртуального хоста apache, чтобы направить все подключения к 80 порту узла на localhost:5601 :
sudo nano /etc/apache2/sites-enabled/000-default.conf
Очищаем конфигурацию и вставляем следующее:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5601/
ProxyPassReverse / http://127.0.0.1:5601/
ServerName kibana
</VirtualHost>
Выходим из редактора и перезагружаем apache:
sudo systemctl restart apache2
Пока на этом все. Теперь, если обратиться по адресу http://ВАШ_IP вы будете попадать на web-интерфейс Kibana. В следующей статье рассмотрим как добавить поток данных Netflow в Kibana и построим пару простых графиков.
If you liked my post, feel free to subscribe to my rss feeds