導入と設定

通知と転送の設定

検知を syslog、ファイル、Webhook へ転送し、本物の検知で届くこと、署名、再送キューを確かめます。通知の履歴も読みます。

  • レベル: 基礎
  • 約30分
  • 2026-11-12

#届け先は3つあります

検知の結果は、3つの経路で外に出せます。目的が違うので、分けて設定します。

経路何のためか設定
緊急通知(Telegram・LINE・Webhook)人のスマートフォンやチャットに、すぐ知らせるwebhook_url など。Linux Server の導入と、最初の設定 で扱いました
イベントの転送(SIEM・syslog・Webhook)SIEM やログ基盤に、機械が読める形で残すforward_ で始まるキー
通知の履歴このマシンの中で、出した通知を振り返る設定は要りません

この講座は、イベント転送と通知の履歴を扱います。イベント転送は、オプトインで、既定はオフです。設定ファイルの注記によると、forward_enabled=true で、かつ宛先が1つ以上あるときだけ、何かを送ります。

sudo roamswitch forward status
入れた直後
イベント転送 (SIEM/syslog/webhook) — オプトイン、既定はオフ
  有効: いいえ
  デーモンは転送を実行していません (無効、または未設定)

#3つの宛先を設定して、試験の1件を送る

転送の宛先は、syslog、JSON Lines のファイル、Webhook の3種類です。練習では、同じマシンの中に受け取り側を立てて、3つを同時に試します。

受け取り側を立てて、転送を有効にする

設定ファイルを書き換えて、サービスを再起動します(変更を伴う操作です)。練習用の環境で試してください。元に戻す手順は、後の章にあります。

受け取り側を2つ立てます。Webhook は 8099 番(TCP)で、署名のヘッダーと本文を記録します。syslog は 5514 番(UDP)です。

cat > /tmp/recv.py <<'PY'
import http.server
class H(http.server.BaseHTTPRequestHandler):
    def do_POST(self):
        n = int(self.headers.get('content-length', 0))
        body = self.rfile.read(n)
        sig = self.headers.get('X-RoamSwitch-Signature', '')
        with open('/tmp/fwd.log', 'a') as f:
            f.write(sig + '\n' + body.decode() + '\n')
        open('/tmp/fwd.body', 'wb').write(body)
        open('/tmp/fwd.sig', 'w').write(sig)
        self.send_response(200); self.end_headers()
    def log_message(self, *a): pass
http.server.HTTPServer(('127.0.0.1', 8099), H).serve_forever()
PY
cat > /tmp/syslog.py <<'PY'
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('127.0.0.1', 5514))
while True:
    data, _ = s.recvfrom(65535)
    with open('/tmp/syslog.log', 'a') as f:
        f.write(data.decode(errors='replace') + '\n')
PY
nohup python3 /tmp/recv.py >/dev/null 2>&1 &
nohup python3 /tmp/syslog.py >/dev/null 2>&1 &

Webhook の署名に使う秘密を、root だけが読めるファイルに置きます。labsecret123 は練習用のダミーです。受け取り側は同じマシン(127.0.0.1)にあります。内部のアドレスへの送信は既定で断るので、forward_webhook_allow_addresses に 127.0.0.1/32 を書いて許します。前の版から更新したサーバーでも、この手順のままで動きます(旧版の既定値 false の移行は、判断の節にあります)。宛先を設定して、再起動し、試験の1件を送ります。

sudo sh -c 'umask 077; echo labsecret123 > /etc/roamswitch/fwd.secret'
sudo roamswitch server config set forward_webhook_url http://127.0.0.1:8099/events
sudo roamswitch server config set forward_webhook_secret_file /etc/roamswitch/fwd.secret
sudo roamswitch server config set forward_syslog_url udp://127.0.0.1:5514
sudo roamswitch server config set forward_file_path /var/log/roamswitch/events.jsonl
sudo roamswitch server config set forward_webhook_allow_addresses 127.0.0.1/32
sudo roamswitch server config set forward_enabled true
sudo roamswitch server restart
sleep 5
sudo roamswitch forward status
sudo roamswitch forward test
出力の抜粋
イベント転送 (SIEM/syslog/webhook) — オプトイン、既定はオフ
  有効: はい
  稼働中: 送信要求=0 破棄(最古)=0 再送キュー=0 件 / 0 bytes
  - syslog_udp: 成功=0 失敗=0 直近エラー=-
  - file: 成功=0 失敗=0 直近エラー=-
  - webhook: 成功=0 失敗=0 直近エラー=-
  成功 syslog_udp
  成功 file
  成功 webhook

forward_ のキーは、再起動するまで反映されません。forward status に宛先が3つ並べば、デーモンが読み込んでいます。試験の1件は、宛先ごとに成功か失敗かが出ます。

再起動の直後は、forward status に「デーモンは、まだ転送を始めていません」と出ることがあります。この確認では、2回とも再起動の直後から「稼働中」でした。sleep 5 は、念のための待ち時間です。

3か所に届いたものを見ます。

cat /tmp/syslog.log
sudo cat /var/log/roamswitch/events.jsonl
cat /tmp/fwd.log
出力の抜粋(Webhook は該当の1件)
<38>1 2026-11-12T01:51:02.907Z ubuntu roamswitch 1427 forward_test [roamswitch@32473 event_id="1a1cd7386fb-593-0" rule="FWD-TEST" action="none" severity="info"] RoamSwitch event-forwarding test message
{"host":"ubuntu","event_id":"1a1cd7386fb-593-0","ts":"2026-11-12T01:51:02.907Z","source":"forward_test","severity":"info","rule":"FWD-TEST","action":"none","pid":null,"proc":null,"summary":"RoamSwitch event-forwarding test message"}
sha256=a7e53113a1e79e7a072b5c6832a60db07a1cbdb8acc6a3c990491a4b17da5963
{"host":"ubuntu","event_id":"1a1cd7386fb-593-0","ts":"2026-11-12T01:51:02.907Z","source":"forward_test","severity":"info","rule":"FWD-TEST","action":"none","pid":null,"proc":null,"summary":"RoamSwitch event-forwarding test message"}

同じ event_id の1件が、3か所に届きました。読み方は次のとおりです。

  • syslog は RFC 5424 の形です。先頭の <38> は、facility 4 (auth) × 8 + 重大度 6 (info) です
  • ファイルと Webhook の本文は、同じ JSON です。項目は、ホスト、ID、時刻、発生元、重大度、規則、対応、PID、プロセス名、要約です
  • ts は UTC です(末尾の Z)。01:51:02Z は、日本時間の 11 月 12 日 10:51:02 です
  • ファイル /var/log/roamswitch/events.jsonl は -rw------- で、root だけが読めます。root ではない SIEM のエージェントに読ませるなら、forward_file_group にグループを書きます
署名を確かめる

Webhook の受け取り側は、本文が RoamSwitch から来たことを、署名で確かめられます。ヘッダー X-RoamSwitch-Signature は、本文の HMAC-SHA256 を sha256= に続けたものです。

cat > /tmp/verify.py <<'PY'
import hmac, hashlib
key = open('/etc/roamswitch/fwd.secret', 'rb').read().strip()
body = open('/tmp/fwd.body', 'rb').read()
got = open('/tmp/fwd.sig').read().strip()
want = 'sha256=' + hmac.new(key, body, hashlib.sha256).hexdigest()
print('match' if hmac.compare_digest(got, want) else 'MISMATCH')
PY
sudo python3 /tmp/verify.py
python3 -c "import hmac,hashlib;print(hmac.compare_digest(open('/tmp/fwd.sig').read().strip(),'sha256='+hmac.new(b'wrongsecret',open('/tmp/fwd.body','rb').read(),hashlib.sha256).hexdigest()))"
実行結果
match
False

正しい秘密では一致し、違う秘密では一致しません。受け取り側では、届いた本文のバイト列そのもので計算します。JSON を読み込んで書き直すと、空白や順序が変わり、一致しなくなります。比べるときは、hmac.compare_digest のような、時間が一定の比較を使います。

秘密と宛先の書き方
  • 秘密は、forward_webhook_secret に直接書くより、forward_webhook_secret_file(0600 のファイル)か、環境変数 ROAMSWITCH_FORWARD_SECRET を使います(設定ファイルの注記)
  • 練習では http:// を使いました。実機の宛先は、https:// にします。本文には、プロセス名や要約が入ります

#本物の検知を転送する

試験の1件が届いても、本物の検知が届くとは限りません。無害な変更で、本物の検知を起こします。

FIM の検知を、転送で受け取る

/root/.ssh/authorized_keys に、コメントの行を1行足します(変更を伴う操作です)。コメントの行は、ログインの鍵として働きません。この講座の中で、元に戻します。

: > /tmp/syslog.log
sudo sh -c 'echo "# lab comment" >> /root/.ssh/authorized_keys'
sleep 10
cat /tmp/syslog.log
実行結果
<36>1 2026-11-12T01:51:04.238Z ubuntu roamswitch 1193 timeline.fim [roamswitch@32473 event_id="18e729305c5ec506-1193" rule="" action="notified" severity="medium" pid="1446" proc="dash"] /root/.ssh/authorized_keys: modified (no SSH login found: service tart-guest-agent.service)
<37>1 2026-11-12T01:51:04.292Z ubuntu roamswitch 1193 notification [roamswitch@32473 event_id="1a1cd738c64-4a9-1" rule="" action="notify" severity="low"] クリティカルパス改ざん検知 (FIM) (1 件の改ざん): ホスト: ubuntu (IP: 192.168.64.23) / ハッシュが一致しない重要システムファイル: / /root/.ssh/authorized_keys: 内容の変更 / プロセス: root / /usr/bin/dash / コマンド: sh -c echo "# lab comment" >> /root/.ssh/authorized_keys (pid 1446) / SSH のログインは見つかりませんでした(systemd サービス tart-guest-agent.service のプロセスです) / 推奨対応: `sudo roamswitch fim verify` で改ざん箇所を特定し復旧してください。 / 時刻: 2026-11-12 01:51:04

1つの変更から、2件が届きました。

  • timeline.fim: 検知そのものです。重大度は medium で、書き込んだプロセス(dash、PID 1446)が入っています。要約は英語の固定の文です
  • notification: 出した通知の写しです。通知には重大度がないため、いつも low で送られます(コードの注記)。要約は通知の本文全体で、行の区切りが / になります。言語は、サーバーの設定 language のものです

元に戻します。ファイルの中身を書き戻すだけで、置き換えはしません。基準と同じ中身に戻るので、新しい検知は出ません。戻したあとに同じ行をもう一度足すと、再起動しなくても、検知と通知の写しがまた届きました。

sudo sh -c 'grep -v "^# lab comment$" /root/.ssh/authorized_keys > /tmp/ak; cat /tmp/ak > /root/.ssh/authorized_keys'

次に、送る重大度の下限 forward_min_severity(既定は low)を medium に上げて、同じ変更をします。

sudo roamswitch server config set forward_min_severity medium
sudo roamswitch server restart
sleep 5
: > /tmp/syslog.log
sudo sh -c 'echo "# lab comment" >> /root/.ssh/authorized_keys'
sleep 10
cat /tmp/syslog.log
sudo roamswitch forward status
実行結果
<36>1 2026-11-12T01:51:40.929Z ubuntu roamswitch 1618 timeline.fim [roamswitch@32473 event_id="18e72938e77de549-1618" rule="" action="notified" severity="medium" pid="1843" proc="dash"] /root/.ssh/authorized_keys: modified (no SSH login found: service tart-guest-agent.service)
イベント転送 (SIEM/syslog/webhook) — オプトイン、既定はオフ
  有効: はい
  稼働中: 送信要求=1 破棄(最古)=0 再送キュー=0 件 / 0 bytes
  - syslog_udp: 成功=1 失敗=0 直近エラー=-
  - file: 成功=1 失敗=0 直近エラー=-
  - webhook: 成功=1 失敗=0 直近エラー=-

届いたのは timeline.fim の1件だけです。low の通知の写しは、送られませんでした。送信要求 も 1 で、下限より低いものは数に入りません。転送しなかった通知も、通知の履歴には残りました。終わったら、上と同じコマンドで、ファイルを元に戻します。

forward_min_severity をどこにするか

重大度は5段階です。syslog と CEF の値は、次のように対応します(コードの対応表)。

重大度syslogCEF
critical2 (crit)10
high3 (err)8
medium4 (warning)5
low5 (notice)3
info6 (info)1
  • 既定の low: 検知と、通知の写しの両方が届きます。SIEM 側で「通知が出たか」まで追えます
  • medium 以上: 通知の写しは届きません。SIEM の取り込み量を抑えたいときに使います
  • forward test の試験の1件は info ですが、下限が low のときも届きました。試験は、宛先に届くかを見るためのものです

#届かないときと、再送キュー

宛先が止まっていても、検知は失われにくくなっています。TCP、TLS、Webhook の宛先に送れなかった分は、ディスクの再送キューに入ります。

受け取り側を止めて、再送を見る

下限を low に戻してから、Webhook の受け取り側を止めます。待ち受けは、ss で PID を調べて止めます。

sudo roamswitch server config set forward_min_severity low
sudo roamswitch server restart
sleep 5
P=$(sudo ss -ltnpH 'sport = :8099' | sed -n 's/.*pid=\([0-9]*\).*/\1/p'); kill $P
sudo roamswitch forward test; echo "exit=$?"
sudo roamswitch forward queue
実行結果
  成功 syslog_udp
  成功 file
  失敗 webhook: HTTP 0
exit=2
再送キュー: 0 (0 bytes) /var/lib/roamswitch/forward_queue.jsonl

HTTP 0 は、応答が返らなかったという意味です。宛先に1つでも失敗があると、forward test は終了コード 2 で終わります(宛先が1つもないときは 1)。試験の1件は、再送キューに入りません。 再送キューは、本物のイベントのためのものです。そこで、本物の検知を起こします。

sudo sh -c 'echo "# lab comment" >> /root/.ssh/authorized_keys'
sleep 10
sudo roamswitch forward status
sudo roamswitch forward queue
実行結果
イベント転送 (SIEM/syslog/webhook) — オプトイン、既定はオフ
  有効: はい
  稼働中: 送信要求=2 破棄(最古)=0 再送キュー=2 件 / 1150 bytes
  - syslog_udp: 成功=2 失敗=0 直近エラー=-
  - file: 成功=2 失敗=0 直近エラー=-
  - webhook: 成功=0 失敗=4 直近エラー=HTTP 0
再送キュー: 2 (1150 bytes) /var/lib/roamswitch/forward_queue.jsonl
  2026-11-12T01:52:02.926Z webhook  /root/.ssh/authorized_keys: modified (no SSH login found: service tart-guest-agent.service)
  2026-11-12T01:52:02.977Z webhook  クリティカルパス改ざん検知 (FIM) (1 件の改ざん): ホスト: ubuntu (IP: 192.168.64.23) / ハッシュが一致しない重要システムファイル: / /root/.ssh/authorized_keys: 内容の変更 / プロセス: root / /usr/bin/dash / コマンド: sh -c echo "# lab comment" >> /root/.ssh/authorized_keys (pid 2180) / SSH のログインは見つかりませんでした(systemd サービス tart-guest-agent.service のプロセスです) / 推奨対応: `sudo roamswitch fim verify` で改ざん箇所を特定し復旧してください。 / 時刻: 2026-11-12 01:52:02

syslog とファイルには届き、Webhook の2件だけがキューに残りました。受け取り側を、もう一度立てます。

: > /tmp/fwd.log
nohup python3 /tmp/recv.py >/dev/null 2>&1 &
sleep 20
sudo roamswitch forward queue
sudo roamswitch forward status
出力の抜粋
再送キュー: 0 (0 bytes) /var/lib/roamswitch/forward_queue.jsonl
イベント転送 (SIEM/syslog/webhook) — オプトイン、既定はオフ
  有効: はい
  稼働中: 送信要求=2 破棄(最古)=0 再送キュー=0 件 / 0 bytes
  - syslog_udp: 成功=2 失敗=0 直近エラー=-
  - file: 成功=2 失敗=0 直近エラー=-
  - webhook: 成功=2 失敗=4 直近エラー=-

20 秒ほどで、キューは空になりました。/tmp/fwd.log には、止まっていた間の2件が、元の ts のまま届いています。再送が成功すると、直近エラー は - に戻りました。失敗 の数は、止まっていた間の分が残ります。終わったら、ファイルを元に戻します。

キューの大きさには上限があります。設定ファイルの注記では、forward_queue_max_mb(既定 20 MiB)と forward_queue_max_age_hours(既定 72 時間)を超えた分は残りません。3日を超えて止まる宛先なら、そのあいだのイベントは、ファイルの宛先から取り戻します。

内部のアドレスへの送信を、どこまで許すか

forward_webhook_block_private_addresses は、既定で true です。ループバック、プライベート、リンクローカル(クラウドのメタデータ)などのアドレスへの送信を、Webhook と syslog の両方で断ります。設定を誤って、内部のサービスに送ってしまうのを防げます。この講座では、同じマシンの受け取り側に送るので、最初に forward_webhook_allow_addresses に 127.0.0.1/32 を書きました。

社内の SIEM や syslog サーバーのように、内部に送る宛先があるなら、forward_webhook_allow_addresses に、その CIDR だけを書きます。許可リストにない内部のアドレスは送らず、forward status と forward test に宛先ごとの理由が出ます。理由は、画面の言語で出ます。断られた宛先のイベントは、ほかの宛先には届きます。

false にすると、内部のアドレスへの送信も断りません。宛先を許可リストに足せるときは、true のまま使います。

前の版から更新したサーバーで、server.conf に旧版の既定値の forward_webhook_block_private_addresses=false が残っているときは、更新後の最初の起動で 1 回だけ移行します。いまの送り先が使う内部のアドレスを forward_webhook_allow_addresses に足してから true にし、そのことを通知の履歴に 1 回出します。送り先の名前を引けないときは false のまま残して 1 回知らせ、次の起動でもう一度試します。転送がオフでも、アドレスで書いた送り先は移行します。移行のあとの false と、server config set で設定したスイッチは、そのまま残ります。server.json を使うホストは移行しません。

転送の状態を確かめるときに避ける2つのこと
  • sudo を付けずに forward status を見る: 一般ユーザーは、設定ファイル(-rw-------)を読めません。状態は出ず、「/etc/roamswitch/server.conf を読めないため、転送の設定と状態を確かめられません(root だけが読めるファイルです)。sudo roamswitch forward status で実行してください」と出て、終了コード 1 で終わります。forward test も同じ文を出し、終了コード 1 で終わります。スクリプトで確かめるときも、0 にならないので失敗とわかります。状態は、sudo を付けて見ます
  • ファイルの宛先を /tmp などに置く: サービスは ProtectSystem=strict で動き、書ける場所が限られます。置けるのは /var/log/roamswitch/ か /var/lib/roamswitch/ の下です
sudo roamswitch server config set forward_file_path /tmp/events.jsonl
sudo roamswitch server restart
sleep 5
sudo roamswitch forward status
出力の抜粋
  ! forward_file_path の /tmp/events.jsonl は、サービスの保護設定(ProtectSystem=strict)で書き込めない場所のため、使われません。/var/log/roamswitch/ か /var/lib/roamswitch/ の下に置くか、ドロップイン(systemctl edit roamswitch-server)で ReadWritePaths=<ディレクトリ> を足してください
  稼働中: 送信要求=0 破棄(最古)=0 再送キュー=0 件 / 0 bytes
  - syslog_udp: 成功=0 失敗=0 直近エラー=-
  - webhook: 成功=0 失敗=0 直近エラー=-

宛先の一覧から file が消えました。このとき forward test を実行すると、失敗 file: の行に同じ理由が出ました。設定を変えたら、forward status の ! の行も読みます。試し終えたら、forward_file_path を /var/log/roamswitch/events.jsonl に戻して、再起動します。

#通知の履歴を読む

通知の履歴 は、RoamSwitch が出した通知の記録です。過去1週間の分を、roamswitch notifications で見ます。設定は要りません。

履歴を見て、書き出す
sudo roamswitch notifications
出力の抜粋(上の演習のあと。4件のうちの1件)
=====================================================
  🔔 通知履歴(過去1週間)
=====================================================

  2026-11-12T01:52:02.978097915+00:00
  クリティカルパス改ざん検知 (FIM) (1 件の改ざん)
    ホスト: ubuntu (IP: 192.168.64.23)
    ハッシュが一致しない重要システムファイル:
    /root/.ssh/authorized_keys: 内容の変更
      プロセス: root / /usr/bin/dash / コマンド: sh -c echo "# lab comment" >> /root/.ssh/authorized_keys (pid 2180)
      SSH のログインは見つかりませんでした(systemd サービス tart-guest-agent.service のプロセスです)
    推奨対応: `sudo roamswitch fim verify` で改ざん箇所を特定し復旧してください。
    時刻: 2026-11-12 01:52:02

  合計: 4件
  これは RoamSwitch が出した通知の記録です。届いたかどうかは示しません(通知先が未設定でも記録されます)。届くことの確認: sudo roamswitch server test-notify

読み方は次のとおりです。

  • 先頭の時刻は UTC(+00:00)です。日本時間は 9 時間足して、11 月 12 日 10:52 です
  • 書き込んだプロセス、コマンド、SSH のログインの有無が入っています。プロセスがすでに終わっていたときは、実行の記録から補ったことを一文で添えます
  • 最後の2行のとおり、届いたかどうかは示しません。通知先がなくても記録されます。届くことは、test-notify で確かめます

本文は、読む人の言語で出ます。この確認では、language を en にしたマシンの通知も、LANG=ja_JP.UTF-8 で読むと日本語で出ました(「内容の変更」など)。アドレス、パス、コマンドの行は、記録したままです。転送の写しと通知先に送る文は、送ったときの language の言語です。

ほかのツールに渡すときは、JSON か JSON Lines で取り出します。

sudo roamswitch notifications --json | python3 -c 'import json,sys; print(sorted(json.load(sys.stdin)[0]))'
sudo roamswitch notifications --export /tmp/notif.jsonl
ls -l /tmp/notif.jsonl
実行結果
['body', 'text', 'timestamp', 'title']
4件を /tmp/notif.jsonl にJSON Lines形式で書き出しました。
-rw------- 1 admin admin 6272 Nov 12 01:53 /tmp/notif.jsonl

1件の項目は、timestamp、title、body、text の4つです。title と body は読む人の言語の文で、text は言語によらない形(文の鍵と値)の記録です。重大度の項目はありません。書き出したファイルは -rw------- で、sudo を実行した利用者(ここでは admin)の持ち物になります。本文にはコマンドの行が入るので、ほかの人に渡すときは中身を確かめます。

#元に戻す

この講座で変えたものを、元に戻します(変更を伴う操作です)。authorized_keys は、演習のたびに元に戻してあることが前提です。

sudo roamswitch server config set forward_enabled false
for k in forward_webhook_url forward_webhook_secret_file forward_syslog_url forward_file_path forward_webhook_allow_addresses; do
  sudo roamswitch server config set $k ""
done
sudo roamswitch server config set forward_min_severity low
sudo rm -f /etc/roamswitch/fwd.secret
sudo roamswitch server restart
sleep 5
sudo grep -E '^forward_(enabled|webhook_url|syslog_url|file_path)=' /etc/roamswitch/server.conf
sudo roamswitch fim verify
sudo roamswitch forward status
出力の抜粋
forward_enabled=false
forward_syslog_url=
forward_file_path=
forward_webhook_url=
  ✓ 改ざんは検知されませんでした。すべて正常です。 (91 ファイルを監視中)
  ✓ SUID / SGID ファイルに、追加や変更はありません。 (20 件を確認)
イベント転送 (SIEM/syslog/webhook) — オプトイン、既定はオフ
  有効: いいえ
  デーモンは転送を実行していません (無効、または未設定)

forward status は、転送を止めて再起動すると「デーモンは転送を実行していません」に戻ります。受け取り側の2つは、ss で PID を調べて止めます(8099 番は TCP、5514 番は UDP)。

#見えない部分

確かめたこと・確かめていないこと

実機(使い捨ての Ubuntu 24.04 の VM)で確かめた範囲では、次のようになります。

  • 試験の1件が届いても、本物のイベントが届く証明にはなりません。この講座では、FIM の検知を起こして確かめました。宛先の取り込み規則は、本物のイベントで確かめます
  • UDP の syslog は、再送しません。コードでは、再送キューに入るのは TCP、TLS、Webhook の宛先だけです。取りこぼしたくないなら、tcp:// か tls:// を使います
  • syslog は CEF の形でも送れます(forward_syslog_format=cef)。この確認では、CEF:0|Lafine|RoamSwitch|… で始まる行を受け取れました。server config set forward_syslog_format "" で、既定の rfc5424 に戻ります。ファイルは、forward_file_max_mb(既定 50 MiB)の大きさに達すると切り替わり、古いファイルを forward_file_keep(既定 5)個まで残します(コードで確認)
確認問題

forward test で、3つの宛先がすべて「成功」でした。この結果から言えることはどれですか

解説を見る

試験の1件は、宛先に届くかだけを見ます。重大度は info で、下限の low より低くても送られ、再送キューにも入りません。本物のイベントは、重大度で絞られ、送れなければキューに入ります。届き方を確かめるには、無害な変更で本物の検知を起こします。

#次に学ぶこと

扱う機能
確認した内容

2026-11-12に確認しました。対象は Linux 1.17.39 です。公開の apt の 1.17.39 を入れた使い捨ての Ubuntu 24.04 の VM で、同じマシンに Webhook と UDP syslog の受け取り側を立て、全演習(forward test と終了コード、sudo なしの status、FIM の本物の検知、forward_min_severity、再送キュー、宛先の制限、CEF と既定への戻し、通知の履歴の表示と書き出し)を、日本語の VM と language=en の VM で実行しました。2026-11-12 の追記: 内部のアドレスへの送信の拒否が既定でオンになり、syslog にも効くようになったことを、roamswitch-linux の main(885c3cee)の webhook_guard.rs・event_forward.rs・server_config.rs で確かめ、演習に forward_webhook_allow_addresses 127.0.0.1/32 を足し、判断の節と後片付けを直しました。この追記の部分は VM では動かしていません。同日 2 回目の追記: 旧版の既定値 false の移行を、roamswitch-linux の main(5073d7a3・fb00c636)の egress_guard_migration.rs で確かめて判断の節に書き足しました。この追記の部分も VM では動かしていません。

コマンドの出力は、製品の版や環境によって変わります。違いが出たら、まず製品の版を確かめてください。