用意するもの
1.raspberry pi3(Raspbian環境) Amazonでこれにしました
2.USB-LAN変換アダプタ(キャプチャ用NICとして利用)
構成図
適当な構成図ですみません・・・。
L2には色々PCやらWifiAPやらがつながっています。
環境構築
Raspberry Pi3設定
SSHでログインできるように、管理用固定IPを付与してください。
USB-LAN変換アダプタは接続すれば自動的に認識するはずなので、そのままでOK
nDPIインストール
nDPIをインストールする前に、ntopngをインストールしようとすると下記メッセージが表示されてしまうので、先にnDPIをインストールします。
Please do cd ..; git clone https://github.com/ntop/nDPI.git; cd nDPI; ./autogen.sh; make; cd ../ntopng
and try again
nDPI
git clone https://github.com/ntop/nDPI.git
./autogen.sh
PCAPない!
apt-get install libpcap-dev
Permission Deniedのエラーがでる
chmod 755 configure
./autogen.sh
./configure
make
cd tests/
./do.sh
OK表示がずらずらと
ntopngインストール
apt-get install build-essential git bison flex libxml2-dev libpcap-dev libtool libtool-bin rrdtool librrd-dev autoconf automake autogen redis-server wget libsqlite3-dev libhiredis-dev libgeoip-dev libcurl4-openssl-dev libpango1.0-dev libcairo2-dev libnetfilter-queue-dev zlib1g-dev libssl-dev libcap-dev libnetfilter-conntrack-dev
apt-get install libpng-dev libzmq5-dev default-libmysqlclient-dev
git clone https://github.com/ntop/ntopng.git
cd ntopng
./autogen.sh
./configure
make geoip
もう一度
./configure
make
make install
javaインストール
$ sudo apt-get install oracle-java8-jdk
$ sudo apt-get update
elasticsearchインストール
リポジトリ追加で6.xをインストールしようとしたのですが、CPUアーキテクチャがARMのため
うまくインストールできませんでした。
そのため、5.x系で構築しています。
$ cd /usr/local/src
$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.deb
$ sudo dpkg -i elasticsearch-5.5.2.deb
標準だとメモリが、1G?2G?設定になっているため起動できません。
(ラズパイメモリ1GBしかないので・・・)
そのため、jvm.optionsを編集します。
$ sudo vi /etc/elasticsearch/jvm.options
下記のように変更します。
-Xms256M
-Xmx256M
elasticsearch起動
$ sudo service elasticsearch start
kibanaインストール
$ sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.2-linux-x86.tar.gz
$ sudo tar –xzf kibana-5.5.2-linux-x86.tar.gz
$ sudo mkdir /opt/kibana/
$ sudo mv kibana-5.5.2-linux-x86/ /opt/kibana/
$ sudo wget https://nodejs.org/download/release/v6.10.2/node-v6.10.2-linux-armv6l.tar.gz
$ tar -xzf node-v6.10.2-linux-armv6l.tar.gz
$ sudo cp node-v6.10.2-linux-armv6l/bin/node /usr/local/bin/node
$ sudo cp node-v6.10.2-linux-armv6l/bin/npm /usr/local/bin/npm
$ sudo mv /opt/kibana/node/bin/node /opt/kibana/node/bin/node.orig
$ sudo mv /opt/kibana/node/bin/npm /opt/kibana/node/bin/npm.orig
$ sudo ln -s /usr/local/bin/node /opt/kibana/node/bin/node
$ sudo ln -s /usr/local/bin/npm /opt/kibana/node/bin/npm
$ sudo vi /opt/kibana/config/kibana.yml
リモートからkibanaにアクセス可能にするため、kibana.ymlを変更します。
今回はどこからでもアクセス可能としています。
$sudo vi /opt/kibana/config/kibana.
server.host: "0.0.0.0"
kibana起動ファイル作成
$ sudo vi /etc/systemd/system/kibana.service
下記内容で保存します。
[Unit]
Description=Kibana
[Service]
ExecStart=/opt/kibana/bin/kibana
StandardOutput=null
[Install]
WantedBy=multi-user.target
kibana起動
$ sudo service kibana start
$ sudo service kibana status
logstashインストール
$ sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.2.deb
$ sudo dpkg -i logstash-5.5.2.deb
$ sudo apt-get install ant
$ sudo git clone https://github.com/jnr/jffi.git
$ cd jffi
$ sudo ant jar
$ cp build/jni/libjffi-1.2.so /usr/share/logstash/vendor/jruby/lib/jni/arm-Linux
(when the .so file is not generated, delete the complete jffi folder and reinstall again)
$ cd /usr/share/logstash/vendor/jruby/lib
$ sudo zip -g jruby-complete-1.7.11.jar jni/arm-Linux/libjffi-1.2.so
elasticsearchと同様jvm.optionsを変更します。
$ sudo vi /etc/logstash/jvm.options
下記のように変更します。
-Xms256m
-Xmx256m
logstash起動
$ sudo service logstash start
$ sudo service logstash status
logstash設定
ntopngからのログを、logstashで受け取りelasticsearchに飛ばします。
$ sudo /etc/logstash/conf.d/ntopng.conf
下記内容で保存します。
input {
tcp {
port => 5000
codec => json
type => "ntopng"
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "localhost:9200"
index => "ntopng-%{+YYYY.MM.dd}"
}
}
logstash起動
$ sudo service logstash start
$ sudo service logstash status
ntopng起動
$sudo ntopng -i eth1 -F "logstash;localhost;tcp;5000"
ntopngへWebUIからログイン
デフォルトだと3000番ポートで起動します。
ブラウザを起動して、http://ホスト:3000/ へアクセスします。
下記画面が表示されれば起動しています。
デフォルトは、admin/admin でログインできるので入力しログインします。
パスワード変更画面が表示されるので、自身が利用するパスワードを設定しておいてください。
ここまで確認できればひとまずntopngはOKです。
elasticsearchにindexが作成されているか確認する
ntopngを起動してから、数分間(10分くらい)おいてから下記コマンドを実行しindexが作成されているか確認します。
$ curl http://localhost:9200/_cat/indices
yellow open .kibana V4sLU9SfTOGEXBXVksubDQ 1 1 11 0 23.9kb 23.9kb
red open ntopng-2018.03.05 2UdzLd0CSnCD5gW7IYiU_g 5 1 80500 0 34.7mb 34.7mb
red open ntopng-2018.03.04 gxIJvo5tRaydYheruLDQ3A 5 1 231043 0 98.9mb 98.9mb
ntopng-YYYY.MM.DDという表示があればOKです。
kibanaで可視化する
1.ブラウザを利用して、http://ホスト:5601/ にアクセスします。
2.左ペインからManagementをクリック
3.Create Index Patternをクリック
4.Time-field name ドロップダウンから@timestampフィールドを選択
5.Createをクリック
このあとVisualizeからグラフ等を作成することで、下記のようななんちゃってSIEMができあがります。
異常なトラフィックを出しているプロトコルとかがあれば気づけそうですね。
少し試す分にはラズパイで十分かと思いますが、実際に本格運用する場合には、
きちんとしたサーバを用意することをオススメします!
オフィス等のトラフィックなんかを監視したら、SDカードなんかすぐにいっぱいになりますしね。
SIEMとはいわないかな・・・