無料&オープンソースで大規模なネットワークを常時グラフィカルに監視できる「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://
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
・関連記事
「ノーブランド」のNICは何者なのか、果たして使い物になるのか検証してみた - GIGAZINE
インターネットが開発されて50年の間に起きた5つの重大事件 - GIGAZINE
インターネット回線速度やPing値・パケットロスをまとめて一気に測定できるHTML5で作られた通信速度測定サイト「SourceForge Speed Test」 - GIGAZINE
ウィンドウサイズに合わせて表示される情報も変わるオープンソースのネットワーク監視ツール「bandwhich」を使ってみた - GIGAZINE
Windowsのパスワードを「chntpw」で強制リセットしてログインできなくなったPCを使えるようにする方法 - GIGAZINE
・関連コンテンツ
in レビュー, ソフトウェア, Posted by darkhorse_log
You can read the machine translated English article 'Moloch' that can constantly and graphic….