前回の続き。どうにも ntopng を使って役に立つようにやりくりすることができずに、苦労していた。たぶん私の用途に合っていないだけなのだけれど、代わりの方法を探さないといけなくなってきた。
そうこうしていると、elasticsearch でいいような気分になってきて、実際 fluentd + elasticsearch + kibana でやっている方もいらっしゃるようだし、Cisco にも blog 記事 があるので、この構成を試してみることにした。
interfaces
Ubuntu Desktop 16.04.2 をベースにする。NetworkManager で管理されているので、モニター用のインターフェースが ethX
だったとして、それを切り離す。promisc を設定したいので、次のようにファイルを整える。
# 次の行を追加
[keyfile]
unmanaged-devices=interface-name:ethX
# 次の行を追加
source-directory interfaces.d
auto ethX
iface ethX inet manual
pre-up ifconfig $IFACE up promisc
post-down ifconfig $IFACE down
net.ipv6.conf.ethX.disable_ipv6=1
ipt-netflow
git で https://github.com/aabc/ipt-netflow/ から取得する。promisc
を有効にしてビルドし、インストールする。
./configure --enable-promisc
IPFIX を使う予定。
options ipt_NETFLOW protocol=10 promisc=1 destination=127.0.0.1:4739
iptables-persistent
をインストールしてサービス登録する。
iptables -A PREROUTING -t raw -i ethX -j NETFLOW
ip6tables -A PREROUTING -t raw -i ethX -j NETFLOW
/etc/init.d/netfilter-persistent save
systemctl enable netfilter-persistent
デフォルトでは localhost UDP port 2055 に送るようになっている。行儀よく port 4739 に変えたほうが、wireshark で眺めるときなどに都合がいい。
elasticsearch
インストールドキュメント に従う。default-jre-headless
を使うと世話が無い。
手元でデバッグする都合、0.0.0.0
で listen するように変更した。
network.host: 0.0.0.0
systemd
で有効化する。
systemctl enable elasticsearch
logstash
インストールドキュメント に従う。
設定ファイルは YAML ではなく、独自形式なので混同しないように注意する。
output {
elasticsearch {}
}
input {
udp {
port => 4739
codec => netflow {
versions => [10]
target => ipfix
}
type => ipfix
}
}
こちらも systemd
で起動させる。
systemctl enable logstash
kibana
外部からウェブブラウザでアクセスするので、こちらも 0.0.0.0
で listen させる。
server.host: "0.0.0.0"
systemd
で起動させる
systemctl enable kibana
Dashboard
さぁて、ここからは通り一辺倒なダッシュボードでも作ってみるか(続く)