VagrantとAnsibleを用いた
フロー情報の可視化環境作成
Takashi Umeno
2018/06/16
自己紹介と注意事項
 氏名: 梅野 崇 (うめの たかし)
 所属: 富士通株式会社
 ※発表内容は発表者個人によるものであり、会場や組織を代
表するものではありません。
 ※パケットや通信フローには機微な情報が含まれます。作成
環境は「通信の秘密」を尊重して使用してください。
 ※作成環境のダッシュボードはTCP 5601を経由して通信を行
います。IPフィルタなどを使用しインターネット等の外部か
らTCP 5601に対して接続できない環境で使用してください。
はじめに
 Wiresharkで大量のパケット(1GB以上)を追うのは大変
 ネットワークのフロー情報から有用な情報を得たい
 netflowやIPfixのフロー情報の可視化環境構築は面倒
 →VagrantやAnsibleを用いてフロー情報の可視化環境をパソコン
上で簡単に作成できる様にした。
 visualize network traffic by ELK6
https://github.com/t-umeno/visualize_network_traffic
https://github.com/t-
umeno/visualize_network_traffic/blob/master/README.ja.md
動作環境
 メモリ8GB以上のWindows,Mac,Linux
 対象となるネットワークに接続可能なNIC
 VirtualBox
 Vagrant
 Vagrant plugin install vagrant-disksize
構成
 YAFでNICから受信したパケット
をIPfix形式のフロー情報に変換
 IPfixをsuper_mediatorでJSON
ファイルに変換
 JSONファイルをLogstash経由で
Elasticsearchに入力
 Elasticsearchでフロー情報検索
 Elasticsearchの検索結果をKibana
でWebブラウザにダッシュボー
ド表示
 上記構成のVMをVagrantと
Ansibleで生成
YAF
• パケットをIPfix形式のフロー情報に変換
super_me
diator
• IPfixをJSONファイルに変換
Logstash
• JSONファイルをElasticsearchに入力
Elasticsear
ch
• フロー情報の検索
Kibana
• Elasticsearchの検索結果をダッシュボードに表示
インストール
$ export http_proxy="http://aaa.bbb.ccc.ddd:8080/" # option
$ export https_proxy="http://aaa.bbb.ccc.ddd:8080/" # option
$ vagrant plugin install vagrant-disksize
$ cd ansible/ELK6/playbooks
$ vagrant up
(snip)
(select network interface for packet capture)
==> default: Available bridged network interfaces:
1) en1: Wi-Fi (AirPort)
2) bridge0
3) en0: Ethernet
4) en2: Thunderbolt 1
5) p2p0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
default: Which interface should the network bridge to? 3
使用方法(shell)
$ cd ansible/ELK6/playbooks
$ vagrant ssh
vagrant@ubuntu-xenial:~$ super_mediator.sh
vagrant@ubuntu-xenial:~$ yaf.sh enp0s8 >& /dev/null &
使用方法(ブラウザ)
 ブラウザでの操作方法は下記URLの「使用方法(ブラウザ)」を
参照してください
https://github.com/t-
umeno/visualize_network_traffic/blob/master/README.ja.
md
ダッシュボード(bar2)
その1
 5タプル(src IP, dst IP, src
port, dst port, protocol)以外
の情報も表示します。
フロー数推移(当日、1日
前、1週間前)
DNS問い合わせ名
順方向、逆方向のオク
テット数推移(当日、1日
前、1週間前)
ダッシュボード(bar2)
その2
 フロー数
src IP(IPv4, IPv6両方)
src MAC
dst IP(IPv4, IPv6両方)
dst MAC
ダッシュボード(bar2)
その3
 フロー数
dst port(TCP)
dst port(UDP)
順方向、逆方向の最初の
TCPflag(SYN, SYN+ACK,
RST,無応答等)
src IP dst IP dst Port
protocol(TCP, UDP)
ダッシュボード(bar2)
その4
 フロー数
 http Host
 ICMP(1),IGMP(2),TCP(6),UDP(17)等のプ
ロトコル番号
 http Referer
 http Get
 http UserAgent (右図の範囲外)
 http ServerString (右図の範囲外)
 bar2以外にもbar,circle,circle2,main等各
種ダッシュボードあり
 YAFで取得したパラメタを表示する
ダッシュボードを作成可能
ToDo
 ドキュメント作成
 設定ファイルでVMのディスク容量などを変更可能にする
 リバースプロキシを利用してダッシュボードに認証機能追加
URL
 Visualize network traffic by ELK6
 https://github.com/t-umeno/visualize_network_traffic
 https://t-umeno.github.io/visualize_network_traffic/
 VirtualBox
 https://www.virtualbox.org/
 Vagrant
 https://www.vagrantup.com/
 Elasticsearch
 https://www.elastic.co/jp/
 YAF
 https://tools.netsa.cert.org/yaf/
ご静聴ありがとうございました

Visualize network traffic.20180616