レビュー

無料&オープンソースで大規模なネットワークを常時グラフィカルに監視できる「Moloch」


コンピューターの通信をキャプチャするソフトウェアとしては「Wireshark」が有名ですが、Wiresharkは大規模なネットワークの通信を常時キャプチャして表示するのは得意ではありません。無料でオープンソースの「Moloch」は、大規模なネットワークで通信を常時監視し、わかりやすく表示するのに適したソフトウェアです。

Moloch
https://molo.ch/

記事作成時点ではCentOS 6/7/8、Ubuntu 16.04/18.04向けにコンパイル済みのパッケージが提供されているので、今回はUbuntu 18.04にMolochをインストールしてみます。


Molochは検索エンジンのElasticsearchを使用するため、Elasticsearchも準備しておく必要があります。今回はMolochが動作するサーバー上にDockerコンテナとしてElasticsearchを構築しました。

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2


まずはMolochのコンパイル済みパッケージをダウンロード。


wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-18.04/moloch_2.2.3-1_amd64.deb


ダウンロードしたパッケージをインストールします。

sudo dpkg -i moloch_2.2.3-1_amd64.deb


依存パッケージが存在せずインストールに失敗してしまった場合は、依存関係を解決して再度インストールします。

sudo apt --fix-broken install
sudo dpkg -i moloch_2.2.3-1_amd64.deb


インストールが完了したら、設定用のスクリプトを起動。

sudo /data/moloch/bin/Configure


監視対象のインターフェースやElasticsearchのURLなどを設定します。

Found interfaces: docker0;enp5s0;lo;veth5d2f091
Semicolon ';' seperated list of interfaces to monitor [eth1] enp5s0 # 監視するインターフェースを指定
Install Elasticsearch server locally for demo, must have at least 3G of memory, NOT recommended for production use (yes or no) [no] 
Elasticsearch server URL [http://localhost:9200] # ElasticsearchのURLを指定
Password to encrypt S2S and other things [no-default] no-default
Moloch - Creating configuration files
Not overwriting /data/moloch/etc/config.ini, delete and run again if update required (usually not), or edit by hand
Installing systemd start files, use systemctl
Download GEO files? (yes or no) [yes] 
Moloch - Downloading GEO files
2020-04-29 16:43:04 URL:https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.csv [23322/23322] -> "ipv4-address-space.csv" [1]
2020-04-29 16:43:14 URL:https://raw.githubusercontent.com/wireshark/wireshark/master/manuf [1700105/1700105] -> "oui.txt" [1]

Moloch - Configured - Now continue with step 4 in /data/moloch/README.txt


続いてElasticsearchにデータベースを作成します。

/data/moloch/db/db.pl http://localhost:9200 init


Molochの管理用ユーザーとパスワードを設定。

/data/moloch/bin/moloch_add_user.sh admin "Admin User" パスワード --admin


Molochのサービスを起動します。

sudo systemctl start molochcapture
sudo systemctl start molochviewer


「http://:8005」にブラウザからアクセスすると認証を求められるので、先ほど設定した管理用ユーザーのユーザー名とパスワードを入力して「OK」をクリック。


Molochの画面が表示されました。「Session」ではパケットのプロトコル名や宛先IPアドレスなどの情報をグラフとともに確認できます。


グラフではセッション数や転送量を確認できます。転送量は青色が下り、赤色が上りの通信を表しています。


「SPIView」では、プロトコルの種類やIPアドレスといった通信の内容ごとにセッションを検索することが可能。


例えばどのNTPサーバーと通信しているか知りたい場合は「ntp」をクリックして「and ntp」をクリック。


すると上部の検索画面に検索条件が自動で入力されるので、「Search」をクリック。


ntpの通信を検索することができました。ちなみに宛先IPアドレスの「91.189.89.199」はUbuntuを開発しているCanonicalのIPアドレスだったので、CanonicalのNTPサーバーと通信していることがわかりました。


「SPIGraph」ではノードごとのグラフを表示することが可能。Molochを別のサーバーにインストールし、Elasticsearchにメトリクスを送信すれば、複数のサーバーの通信状況を確認することもできます。


「Connection」では、宛先IPアドレスと送信元IPアドレスの関係をグラフで表示することができます。


「Files」では、パケットのキャプチャ情報が書き込まれているデータファイルの一覧を確認することが可能。


「Stats」では、キャプチャを行っているサーバーの稼働状況や、Elasticsearchの情報を確認することができます。


「History」では通信の検索履歴など、Molochで誰が何を行ったかを確認することができます。


タイムゾーンや見た目の設定などは「Settings」から可能。


ユーザーの追加や削除といった操作は「Users」から行うことができます。


MolochはGitHub上でソースコードが公開されています。

GitHub - aol/moloch: Moloch is an open source, large scale, full packet capturing, indexing, and database system.
https://github.com/aol/moloch

この記事のタイトルとURLをコピーする

・関連記事
「ノーブランド」のNICは何者なのか、果たして使い物になるのか検証してみた - GIGAZINE

インターネットが開発されて50年の間に起きた5つの重大事件 - GIGAZINE

インターネット回線速度やPing値・パケットロスをまとめて一気に測定できるHTML5で作られた通信速度測定サイト「SourceForge Speed Test」 - GIGAZINE

ウィンドウサイズに合わせて表示される情報も変わるオープンソースのネットワーク監視ツール「bandwhich」を使ってみた - GIGAZINE

Windowsのパスワードを「chntpw」で強制リセットしてログインできなくなったPCを使えるようにする方法 - GIGAZINE

in レビュー,   ソフトウェア, Posted by log1n_yi

You can read the machine translated English article here.