官方github一直在更新,可以follow
https://github.com/robcowart/elastiflow
Netflow方便分析網路量問題,例如哪幾個IP使用流量大、用什麼protol,不論在維運或資安上都非常方便
補充Netflow為cisco協定,其他還有sflow等等 https://zh.wikipedia.org/wiki/NetFlow
**原理:**利用logstash將收到的netflow訊息轉成json格式傳給elasticsearch
到logstash資料夾(cetnos7 在/user/share/logstash)後安裝插件
./bin/logstash-plugin install logstash-codec-netflow
config,filter是將ip拿出來做GeoIP(logstash內建功能),可以產生經緯度國家位置等,方便畫圖。
input {
udp {
port => 9995
codec => netflow {versions => [5, 9]}
type => netflow
}
}
filter {
mutate {
convert => {"[netflow][ipv4_src_addr]" => "string"
}
}
geoip {
source => "[netflow][ipv4_src_addr]"
}
}
output {
elasticsearch {
hosts => "X.X.X.X:9200"
}
}
收到數據後可以到kibana畫圖
也可以用Grafana畫
要裝worldmap Panel插件
成果
注意:這會產生大量流量及消耗儲存空間,需要定時刪除,或是在對資料做合併二次處理
這裡用的是安裝Codec plugins的方式
https://www.elastic.co/guide/en/logstash/current/plugins-codecs-netflow.html
另外還有找到另一種方式Logstash Netflow Module, 不太確定原理還沒試驗成功
https://www.elastic.co/guide/en/logstash/current/netflow-module.html
補充
用systemctl啟動logstash好像會因為conf沒寫好大量使用memory...因此改到rc.local去啟動script
https://ephrain.net/linux-%E5%9C%A8-centos-7-%E9%96%8B%E6%A9%9F%E6%99%82%E8%87%AA%E5%8B%95%E5%9F%B7%E8%A1%8C-script/
vi /etc/rc.d/rc.local
去啟用logstash.sh
/root/shell/logstash.sh
設定logstash.sh
vi /root/shell/logstash.sh
cd /usr/share/logstash
./bin/logstash -f test.conf