Linux環境におけるArkime(Moloch)入門:フルパケットキャプチャの収集・インデックス作成・解析ガイド

Security tutorial - IT technology blog
Security tutorial - IT technology blog

クイックスタート:5分で立ち上げるArkimeネットワーク監視環境

Ubuntu 22.04または24.04環境において最も手軽な方法は、Arkimeのビルド済みバイナリパッケージを導入し、同一ホスト上にシングルノードのOpenSearchクラスタを同居させる構成です。

ステップ1:メタデータ保存用バックエンドとしてOpenSearchを構築

Arkimeは各データフィールドのインデックス作成にOpenSearchを使用します。以下の手順で環境を準備し、インストールを進めます。

# 必要な依存ライブラリのインストール
sudo apt update && sudo apt install -y curl wget libpcap-dev libssl-dev

# OpenSearch 2.x公式リポジトリの追加
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor -o /usr/share/keyrings/opensearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring.gpg] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list
sudo apt update && sudo apt install -y opensearch

# ローカルテスト環境での自己署名SSL証明書トラブルを回避するため、内部セキュリティプラグインを無効化
echo "plugins.security.disabled: true" | sudo tee -a /etc/opensearch/opensearch.yml

# OpenSearchの起動と自動起動の有効化
sudo systemctl enable --now opensearch
curl -s -X GET "http://localhost:9200"

ステップ2:Arkimeのインストールとインターフェース設定

# Ubuntu 22.04用Arkime最新パッケージのダウンロード
wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-22.04/arkime_5.4.0-1.ubuntu2204_amd64.deb
sudo dpkg -i arkime_5.4.0-1.ubuntu2204_amd64.deb

# 自動構成ウィザードの実行
sudo /opt/arkime/bin/Configure

セットアップウィザード内で主に以下の3項目の入力を求められます。

  • Network interface to monitor: パケットをキャプチャする対象のネットワークインターフェース(例: eth0 や ens18)。
  • Elasticsearch server: デフォルトの http://localhost:9200 のままで進めます。
  • Password to encrypt SGMAC with: セッションCookieの暗号化に使用する任意の安全なパスワード文字列を入力します。

ステップ3:データベースの初期化、管理者ユーザーの作成、サービスの起動

# OpenSearch側のインデックススキーマを初期化
sudo /opt/arkime/db/db.pl http://localhost:9200 init

# Web UIの管理者アカウントを作成
sudo /opt/arkime/bin/arkime_add_user.sh admin "Admin User" P@ssw0rd123Secured --admin

# キャプチャデーモンとWebビューアを起動・有効化
sudo systemctl enable --now arkimecapture
sudo systemctl enable --now arkimeviewer

ブラウザから http://IP_SERVER:8005 にアクセスし、先ほど作成した admin アカウントでログインします。10〜30秒ほど待つと、Sessions タブに対象インターフェースを通過するすべてのパケットフローが表示され始めます。

Arkimeは現場のどんな課題を解決するのか?

ファイアウォールやIDSはいわば玄関に設置された防犯アラームです。何者かがピッキングを試みたりドアを叩いたりした瞬間に警報を鳴らすことはできますが、侵入者がどの部屋に入り、どんなデータを持ち出し、どんなトロイの木馬を仕掛けていったのかまでは追跡できません。

Arkime(旧称:Moloch)は、常時録画を行う高解像度防犯カメラシステムのように機能します。ネットワーク上を流れるすべての生データをバイト単位で取りこぼすことなく捕捉する——これがフルパケットキャプチャ(FPC)です。取得された生パケットデータは一切間引かれることなくディスクへ直接保存されます。

かつて運用保守を担当していた頃、深夜2時に管理サーバーが激しいSSH総当たり攻撃(ブルートフォース)を受けたことがありました。認証ログには海外IPからの膨大な失敗ログが残されているだけです。しかし、本当に知るべき決定的な疑問は「パスワードを1つでも突破されたのか?」「バックドアとなるスクリプトを持ち込まれた形跡はあるか?」という点でした。通常のテキストログではこの問いに答えられません。Arkimeがあれば、該当セッションを開くだけで攻撃者のキーストローク全体を完全に再現し、実行されたシェル画面を直接確認できます。

Arkimeを構成する3つのコアコンポーネント

  • Capture Engine(arkimecapture): C言語で書かれた高速エンジンで、無差別モード(Promiscuous Mode)に設定したNICに直接バインドします。パケットのデコード、メタデータ(IP、ポート、SSL証明書、DNSクエリ、HTTPヘッダーなど)の抽出を常時行い、生バイトデータを一連の .pcap ファイルとしてディスクに書き出します。
  • Database Index(OpenSearch / Elasticsearch): 解析されたすべてのメタデータが格納される場所です。分散インデックス機構により、数千万パケットの中からでも目的のセッションをわずか1秒未満で素早く絞り込めます。
  • Viewer(arkimeviewer): Node.jsで構築されたWebアプリケーションです。TCP/UDPストリームの完全な再構築(Session Reconstruction)、添付ファイルの復元、HTTP経由で転送された画像の抽出、さらには調査用 .pcap ファイルのエクスポート(Wiresharkでの詳細分析用)など多彩な機能を提供します。

実践的なインシデント調査でのArkime活用法

1. SPI構文を活用した超高速フィルタリング

Arkimeの強力なSPI(Search Protocol Index)検索バーを使えば、膨大な生ログを目視で追うことなく、目的のパケットへ瞬時に辿り着けます。

# 標準外ポート(80、443、8080以外)で動作しているHTTP通信を捕捉
protocols == "http" && port.dst != 80 && port.dst != 443 && port.dst != 8080

# ダイナミックDNSドメインや悪用されやすいコード共有サービスへのDNSクエリを検出
host.dns == "*pastebin*" || host.dns == "*ngrok*" || host.dns == "*.duckdns.org"

# 内部ネットワークから異常な頻度で発生しているSSHスキャン挙動を追跡
protocols == "ssh" && ip.src == 192.168.1.0/24 && packets > 100 && bytes < 5000

2. セッションの再現とバイナリファイルの抽出

各セッションの先頭にある + アイコンをクリックすると、断片化されたパケットが1本のストリームとして結合・再構築されます。クライアントから送信されたリクエストは赤色、サーバーからのレスポンスは緑色で色分け表示されます。

例えば、攻撃者が暗号化されていないHTTP経由で curl を用いて不正なシェルスクリプトをダウンロードしたとします。その場合、セッション内の Files タブを開くだけで実行ファイルをワンクリックで抽出・ダウンロードでき、パケットカービングの手間をかけずにサンドボックス環境でのリバースエンジニアリングへ引き渡せます。

3. ディスク枯渇を防ぐデータ保持ポリシー(Retention Policy)の設計

フルパケットデータは膨大なストレージを消費します。100 Mbpsの回線がフル稼働状態であれば、1日に1 TB以上のストレージが消費されることも珍しくありません。適切なローテーション設定を怠ると、ディスクフルの発生によりシステム全体が停止する恐れがあります。

/opt/arkime/etc/config.ini を開き、以下のパラメータを環境に合わせて調整します。

# 生PCAPファイルを保存するディレクトリ
pcapDir = /opt/arkime/raw

# パーティションの空き容量を常に15%以上確保(この閾値を下回ると古いPCAPから自動削除)
freeSpaceG = 15%

# I/O負荷とファイル肥大化を防ぐため、PCAPファイルが8 GBに達した時点で新規ファイルへローテーション
maxFileSizeG = 8

設定を保存したら、キャプチャプロセスを再起動して反映させます。

sudo systemctl restart arkimecapture

本番インフラでの実践運用ノウハウ

パケットドロップを防ぐネットワークカードの最適化

トラフィックが急増した際、NICのハードウェアキューが溢れ、Arkimeのアプリケーション層に届く前にカーネル/NICレベルでパケットが破棄(Packet Drop)されてしまうことがあります。ethtool を使用してリングバッファを拡張し、オフロード機能を無効化しておくことが推奨されます。

# RX/TXリングバッファをハードウェアの上限値(通常4096)まで引き上げ
sudo ethtool -G eth0 rx 4096 tx 4096

# 仮想的に結合されたフレームではなく実際のフレーム長で正確にキャプチャするため各種オフロードを無効化
sudo ethtool -K eth0 tso off gso off gro off lro off

ストレージ容量のサイジング見積もり

PCAPデータを1年間すべて保持しようとするのは現実的ではありません。インシデントレスポンスの実務において最も追跡価値が高い期間は、直近の7日〜14日間です。

平均トラフィックが50 Mbps程度のオフィスやサーバー環境の場合、目安は以下のようになります。

  • 50 Mbpsの帯域はおよそ毎秒6.25 MBのデータ量に相当します。
  • 24時間連続で収集し続けた場合、1日で約500 GB〜540 GBの生PCAPファイルが生成されます。
  • 直近7日分のデータを余裕を持って保持するには、実効容量で最低4 TB以上のRAIDアレイが必要です。高速なクエリ応答が求められるOpenSearchにはNVMe SSDを割り当て、大容量の生PCAP保存用には高耐久なエンタープライズ向けHDDを用意して階層化するのが理想的な構成です。

NginxリバースプロキシによるWebビューアの保護

デフォルト状態のArkime Viewerは、8005番ポートにて平文HTTPで稼働しています。このポートをそのまま外部インターネットに公開するのは、社内の通信データを全世界に晒すようなものであり、重大なセキュリティリスクとなります。

ファイアウォールで8005番ポートへの直接アクセスを遮断し、Nginx経由でSSL/TLS暗号化を施した上で、管理者やSOCチームのIPアドレスのみにアクセスを制限します。

server {
    listen 443 ssl http2;
    server_name arkime.internal.lan;

    ssl_certificate /etc/ssl/certs/arkime.crt;
    ssl_certificate_key /etc/ssl/private/arkime.key;

    # エンジニアリング部門 / SOC拠点からの接続のみ許可
    allow 192.168.10.0/24;
    deny all;

    # 手動でのPCAPインポートに対応するためアップロード上限を拡張
    client_max_body_size 500M;

    location / {
        proxy_pass http://127.0.0.1:8005;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 300s;
    }
}

インシデント発生時、攻撃者によってログファイルやアラート通知の痕跡が消去されてしまうケースは少なくありません。しかし、ディスクに記録された生パケットデータそのものを改ざん・隠蔽することは困難です。Arkimeを適切に配備しておくことで、マルウェアがどの経路を通り、何を持ち出そうとしたのかを証明する最も確実なデジタル証拠を掌握できます。

Share: