ガイド › TrapWatch

他の言語 English · 日本語 · 한국어 · 简体中文

TrapWatch

SNMP トラップ受信と、端末内で動く異常検知 — 0.1.5

この版での変更

リリースノート全文

1. インストール

インストールする機械に合うものを選びます。以下はすべて最新版です。以前の版はリリースノートにあります。

ダウンロードしたものを確認してください。公開しているチェックサムはこちらです: TrapWatch-SHA256SUMS.txt

macOS と Linux:

shasum -a 256 TrapWatch-0.1.5-x64.exe

Windows:

Get-FileHash -Algorithm SHA256 TrapWatch-0.1.5-amd64.deb

macOS 版は Apple の公証を受けているので警告なしに開きます。Windows 版のインストーラーには Authenticode 署名とタイムスタンプが付いています。証明書が新しいため、評価が蓄積されるまで SmartScreen が警告を出すことがあります。その場合は詳細情報 → 実行を選んでください。

2. 初回起動

  1. TrapWatch は既定で UDP ポート 1162 を待ち受けます。標準のトラップポートは 162 ですが 1024 未満なので管理者権限が要ります。1162 なら一般ユーザーのまま起動できます。
  2. トラップを送る機器 — スイッチ、ルーター、ファイアウォール、UPS — の SNMP トラップ送信先に、この計算機の IP とポート 1162 を設定します。ポートを変えられない機器がある場合は、Settings → Receiving で 162 に変え、権限のほうを与えてください。
  3. トラップは届いた順に表示されます。先に機器一覧を作る必要はありません — ポートに届いたものはすべて受け取るので、把握していなかった機器も声を上げた瞬間に現れます。
  4. 何も届かない場合、たいていはファイアウォールです(下の章)。実際に待ち受けているポートは画面上部に常に出ており、待ち受けに失敗していれば赤で理由を表示します。

どのインストールも有料版の 30 日体験から始まります。事前に求めるものはありません — カードも、アカウントも、メールアドレスも。

3. 運用

コミュニティ名

Settings → Receiving で空のままなら、コミュニティ名を確認せず、ポートに届いたトラップをすべて受け取ります。入力すると、一致しないトラップは黙って捨てるのではなく拒否として数えます — 「何も届いていない」のか「すべて拒否している」のかを画面で区別できます。SNMP v1・v2c ではコミュニティ名は平文で流れます。安全のための仕組みではなく、絞り込みの手段だと考えてください。

SNMP の版

v1 と v2c です。v3 のトラップは受け付けません — v3 は機器ごとのエンジン ID と資格情報を要求し、それはこの製品があえて持たない「機器一覧」そのものだからです。

異常検知

アプリの中、この計算機の上で動きます。何も送信せず、モデルの取得もしません。知らせるのは三つです。上下を繰り返すリンク(トラップの数ではなく向きの変化を数えます)、その機器自身の履歴に照らして明らかに多すぎるトラップ、そして初めて見る機器やトラップ OID。基準ができるまでは何も言いません — およそ 30 分です。初回はすべてが新しく、何にでも反応する警報は無視することを覚えさせるだけだからです。

通知ルール

ルールは「探すと分かっているもの」を、検知は「分からないもの」を受け持ちます。ルールは送信元アドレス、トラップ名または OID、最低の重要度で照合します。繰り返し抑制はルールと機器の組み合わせで効くので、うるさい機器が一台あっても、別の機器の同じ事象が埋もれることはありません。

知らないトラップ

メーカー独自のトラップは受信したままの OID で表示します。知らないトラップに説明を作って付けることはしません — もっともらしい推測は、人を間違った場所に向かわせます。

保存期間

トラップはこの計算機に 1 日 1 ファイルで書かれ、契約を守らせるために削除されることはありません。Settings → Retention はご自身で決めるものです。0 はすべて残す意味です。CSV に書き出せます。

言語

Settings → Interface language。英語・日本語・韓国語・簡体中国語を、動かしたまま切り替えられます。機器が送ったもの — アドレス、トラップ OID、インターフェース名 — は決して訳しません。

データの置き場所

TrapWatch が記録するものはすべて、動いている計算機の中に留まります。当社にも、解析事業者にも、広告網にも送られません。

ライセンスキー

キーは決済後にメールで届きます。お手元の計算機だけで検証されるため、TrapWatch はライセンスサーバーに接続しません — 外部と通信できない網でも有効化できます。30 日の体験が終わっても、受信済みのトラップは読めます。新しいトラップの受信だけが止まります。止まっている間は通知も Central への報告も送られません。キーを入力するとすぐに受信を再開します。

4. ファイアウォール

5. デスクトップのないサーバーで動かす(ヘッドレス)

デスクトップアプリにはグラフィカルセッションが必要です。それがない Linux サーバーでは起動せず、Missing X server or $DISPLAY と表示します。その場合のために、Linux の .deb にはヘッドレスモードも入っています。トラップを同じように受信・解読・保存・通知し、同じ画面をウィンドウの代わりにブラウザーに表示します。AppImage には入っていません。

まず前面で動かしてみる

.deb をインストールし(必要なライブラリーは apt が一緒に入れます)、アプリの隣に入るラッパーを起動します:

sudo apt install ./TrapWatch-*-amd64.deb
/opt/TrapWatch/trapwatch-headless

Web 画面のアドレスが一回限りのトークン付きで表示されます — http://127.0.0.1:8162/?token=…。一度開けば Cookie が覚えるので、以後は http://127.0.0.1:8162/ で足ります。なくしたら trapwatch-headless --show-url がもう一度表示します。同じ機械からテストトラップを送ってみてください(snmptrap は net-snmp のツールに含まれます: apt-get install snmp または dnf install net-snmp-utils):

snmptrap -v 2c -c public 127.0.0.1:1162 '' 1.3.6.1.6.3.1.1.5.3 \
    1.3.6.1.2.1.2.2.1.1.1 i 1 1.3.6.1.2.1.2.2.1.2.1 s "eth0"

インターフェース 1 の linkDown で、eth0 の「Link down」として表示されます。

手元のコンピューターから画面を開く

Web 画面は 127.0.0.1 だけで待ち受けます。SSH トンネルを張り、トークン付きのアドレスを手元のブラウザーで開きます:

ssh -L 8162:127.0.0.1:8162 user@server

または HTTPS のリバースプロキシ(nginx、Caddy)を前に置きます。平文 HTTP のポートを信頼できないネットワークに公開しないでください: トラップの内容、コミュニティ文字列、Central のトークンがそこを通ります。

サービスとして動かす

ラッパーの隣に systemd ユニットが入っています。サービス用のユーザーを作り、ユニットをコピーして起動します:

sudo useradd --system --home /var/lib/trapwatch --create-home --shell /usr/sbin/nologin trapwatch
sudo cp /opt/TrapWatch/trapwatch-headless.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now trapwatch-headless

トークン付きの Web 画面アドレスはジャーナルに出ます: sudo journalctl -u trapwatch-headless。

ポート 162

TrapWatch は既定で UDP 1162 を待ち受けます。このポートはどのユーザーでも開けます。162 にしか送れない機器がある場合は、Settings でポートを 162 に変え、/etc/systemd/system/trapwatch-headless.service の AmbientCapabilities=CAP_NET_BIND_SERVICE 行のコメントを外してから、サービスを再起動します:

sudo systemctl daemon-reload
sudo systemctl restart trapwatch-headless

ポートを開けなかった場合、その理由はジャーナルと画面の上部の両方に表示されます。

データの場所

サービスでは /var/lib/trapwatch/TrapWatch にトラップ・設定・ライセンス・画面のトークンが置かれます。手で起動した場合は、そのユーザーのデスクトップアプリと同じフォルダー(~/.config/TrapWatch)を使うので、どちらかで有効にしたライセンスはもう一方でも有効です。サービスは専用のユーザーで動くため、ライセンスキーはその Web 画面で一度入力します。

サーバーにはキーリングがないため、ライセンスキー・通知ルール・Central トークンはサービスユーザーだけが読めるファイル(モード 0600)として保存され、コミュニティ文字列を含む settings.json も 0600 で書かれます。通知するデスクトップもないので、デスクトップ通知を出すはずのルールは代わりにジャーナルに 1 行を書きます。MeshWatch Central はデスクトップと同じように動き、サーバーではこれが通知の経路になります。

詳しくはラッパーの隣の README-headless.txt を、オプションは trapwatch-headless --help を見てください。

6. MeshWatch Central に接続する

任意です。Central は複数の製品の通知をひとつの受信箱にまとめ、機器ごとに関連付けます。 Central に送るのは重大度・送信元アドレス・一行の要約だけです。varbind は送りません — 機器は そこに何でも入れられます — コミュニティ名も送りません。実質的に合言葉だからです。

Central 1.3.4 以降が必要です。それより古い Central の Agents には TrapWatch がなく、トークンを発行できません。

  1. Central の Agents を開き、TrapWatch を選び、ラベルを入力して Issue token を押します。ラベルはどこかから取ってくる値ではなく、設置場所を区別するために自分で決める名前です。トークンは一度しか表示されません。
  2. TrapWatch の MeshWatch Central 設定を開き、Central のアドレスを http://<central-server>:8443 の形で、トークンとともに入力します。Central が同じ機械で動いている場合を除き、localhost ではなくサーバーのアドレスを使います。
  3. 通知を Central に送るチェックを入れて保存し、Test connection を押します。成功と表示されるはずです。

以後に発生した通知が Central に表示されます。過去の通知はさかのぼりません。詳しい手順は MeshWatch Central ガイド.

7. うまくいかないとき

何も届かない

たいていはファイアウォールです(4 章)。それでも届かない場合は、機器がこの計算機の現在のローカル IP を指しているか確認してください。DHCP のリースで変わることがあります。

Central への Test connection が失敗する

bad-token はトークンが違うか失効しています — 新しく発行してください。unreachable はアドレスが違うかファイアウォールに阻まれています。Central 側でポート 8443 が開いている必要があります。リバースプロキシを置いていない限り https:// ではなく http:// です。現在の版では、これらの結果は文章で表示されます — Central が拒否したトークンは、失効したか別の Central が発行した可能性があると説明します。コードそのものはメッセージにマウスを重ねると表示されます。

Linux サーバーで Missing X server or $DISPLAY と表示される

デスクトップアプリが画面を探しているだけで、インストールの問題ではありません。デスクトップのセッションで起動するか、デスクトップのないサーバーではヘッドレスモードを使ってください — 5 章。

どの製品にも共通する問題

更新後に画面が真っ白、Ubuntu 24.04 で起動しない、キーリングのない Linux でパスワードが平文で保存される、通知メールが届かない — これらは製品を問わず同じで、サポートページにまとめてあります。

それでも解決しない

版番号と、何が起きると思っていたかを添えて support@meshwatch.app までご連絡ください。平日 2 営業日以内に最初の返信をします。