ACCESSSCOPE 0.3.7 ・ 最終更新: 2026-10-17

AccessScope 操作マニュアル

サーバのアクセスログから、攻撃の試みを根拠のログ行つきで見つける診断ツールの使い方です。画面で診断する手順を先に説明して、コマンドでの使い方は 8 章にまとめています。

1. AccessScope について

AccessScope は、Web サーバや SSH サーバがすでに残しているログを読んで、攻撃の試みを探す診断ツールです。見つけたものには、根拠になったログの行を付けて示します。自分でサーバを運用していて、ログに怪しいアクセスが残っていないかを確かめたい方に向いています。

ログは読むだけです。ログの変更も削除もせず、通信を遮断することも、権限を上げることもありません。診断そのものは、LLM もネットワークも使いません。

環境使えるもの
Mac(macOS 12 以降)画面のアプリとコマンド
Linux のクライアント版画面のアプリとコマンド
Linux の Server Edition のパッケージコマンドだけ

Mac は RoamSwitch の DMG に、Linux は RoamSwitch の deb / rpm / tarball に入っています。RoamSwitch とは別の道具で、ライセンスは Apache License 2.0 です。起動するときは、Mac ではアプリのアイコンを、Linux ではアプリの一覧の「AccessScope」を選びます。

保存されるファイル

AccessScope が自動で保存するのは、設定、見つけたログの一覧、除外ルール、前回との比較の記録です。どれも ~/.config/accessscope/ の下に、自分だけが読み書きできる権限で置かれます。

アップデート

Mac は、設定の「アップデート」で「アップデートを確認」を押したときだけ lafine.net に接続します。この端末やログの情報は送らず、ダウンロードしたファイルは署名を確かめてからインストールします。Linux にはアプリ内のアップデートがなく、パッケージの更新で更新します。

2. はじめての診断

  1. ログを選びます。いちばん手軽なのは「この端末のログを探す」です。nginx や Apache、SSH などのログを自動で探して、「この端末で見つかったログ」に並べます。場所が分かっているときは、「ファイルを選ぶ」か「フォルダを選ぶ」で選ぶか、ウィンドウの上にファイルやフォルダをドロップします。
  2. 「期間」を選びます。初期値は「直近 7 日」で、「直近 24 時間」「直近 30 日」「すべて」にも変えられます。期間は今から数えるので、古いログを診断したいときは「すべて」にします。
  3. 「診断する」を押します。「ログを読んでいます」「解析しています」と進み具合が出て、終わると結果が開きます。
読み取り専用です
ログのファイルは変更されません。権限が足りなくて読めないログは、権限を上げて読むことはせず、読めなかったと表示します。

3. 読めるログと、探す場所

ログの種類は、中身を見て自動で判別します。gzip で圧縮された回転済みのログも、そのまま読めます。フォルダを選ぶと、中にあるログらしいファイルをまとめて読みます。

種類読めるもの
Web サーバApache、nginx、Caddy、Traefik、HAProxy、AWS ALB と CloudFront(ログをダウンロードして、「ファイルを選ぶ」で選びます)
SSH と認証sshd、sudo、su、PAM。Linux は auth.log や secure のほか journald も、Mac は macOS の統合ログも読めます
そのほかfail2ban、メール(Postfix、Dovecot)、データベース(MySQL、MariaDB、PostgreSQL)、Docker のコンテナのログ

「この端末のログを探す」は、標準の場所と、Web サーバの設定ファイルが指しているログの場所を調べます。並ぶのは、ログとして読めると確かめられたものだけです。

Docker のコンテナ

「Docker のコンテナも調べる」にチェックを入れると、この端末の Docker のログも対象にできます。診断の前に、実行するコマンドと対象のコンテナが確認画面に出て、「同意して診断」を押したときだけ読みます。読み取りだけで、権限は上げません。

LLM でログを探す(任意)

見つからないときは、「LLM でも探す」で、LLM に場所を探させることもできます。渡すのは、動いているサーバの名前や、/var/log などにあるファイルの名前といった環境の事実だけで、ファイルの中身は渡しません。提案は、読めることを確かめてから、チェックが外れた状態で出ます。設定は 7 章を見てください。

4. 結果の読み方

診断が終わると、4 つのタブで結果を確かめられます。

タブ見えるもの
ダッシュボード総合リスク(なし・低・中・高)、深刻度別と分類ごとの検知の数、時間ごとの推移、リクエストの多い IP やパス
検知見つかった検知の一覧です。深刻度での絞り込みと、題名での検索ができます
入力ログどのログを何行読めたか。読めなかったログと、その理由
LLM で分析LLM に報告書の文章を書かせます(7 章)

検知の見方

検知は「SQL インジェクションの試み」のように名前で表示されて、深刻度(高・中・低)と確度が付きます。確度は、ログだけでどこまで言えるかを表します。

「根拠のログ行」を開くと、その検知の元になったログの行を、そのまま見られます。普段は閉じてあるので、まず名前と理由を読んで、気になったものだけ開いてください。

HTTP の 200 は、攻撃が成功した印ではありません
インターネットに公開したサーバは一日中スキャンされていて、静的なサイトは攻撃に見えるリクエストにも 200 を返します。AccessScope は、攻撃に見えるリクエストへの 2xx の応答の大きさを、同じパスの通常の応答と比べます。同じ大きさなら「ペイロードは無視されたと見られる」と表示して、深刻度を上げません。通常と違う応答だけを「効果が疑われる」として扱い、それでも確度は「仮説」にとどめます。

総合リスク(0 から 100)は、深刻度と確度で重みを付けた目安です。件数が多いだけでは膨らまず、深刻度が高の検知が 1 件もなければ「高」にはなりません。確率ではないので、目安として見てください。

5. 見る件数を減らす

除外ルール

自社の事務所の IP、死活監視、自社の脆弱性診断など、出ると分かっている検知は、報告から外せます。外した検知は捨てずに、理由つきで件数を残します。

  1. 「検知」タブで、検知の IP の横にある「この IP を除外する…」を押します。
  2. 理由を入れて「除外ルールに追加」を押します。理由は報告に残ります。
  3. 確認のダイアログで内容を確かめて、承認します。次の診断から効きます。

設定の「除外ルール」には、いま有効なルールが一覧で出ます。表示だけで、ここでは編集できません。細かい条件のルールは、設定のフォルダに置くファイル(suppress.toml)に書きます。書き方は 8 章にあります。深刻度が「高」の検知は、除外しても外れず、報告に残ります。

前回との比較

同じログの組み合わせを続けて診断すると、前回の記録と比べて、新しく現れた検知に「新規」の印が付きます。「検知」タブの「新規のみ」にチェックを入れると、新規だけに絞れます。初回は、すべて新規として扱います。記録に入るのは検知の指紋(ハッシュ)、種別、深刻度、件数、時刻だけで、ログの文字列は入りません。

6. 結果の書き出し

結果画面の上にあるボタンで、結果を持ち出せます。

ボタンできること
報告書を保存(Markdown)診断の報告書を、Markdown のファイルで保存します
要約をコピー要約をクリップボードにコピーします
エクスポート…ブロックリスト(IP の一覧)や、検知の一覧を書き出します

「エクスポート…」では、ブロックリストの形式として fail2ban-ip、nftables、ipset、nginx-deny、apache-require、csv を選べます。検知の一覧は CSV、SARIF、JSON で書き出せます。

ブロックリストは、「含める条件」を「既定」「厳しめ」「広め」から選べて、書き出す IP の数は保存の前に表示されます。公式のクローラの IP と除外ルールの対象の IP は、常に入りません。

書き出すだけで、何も適用しません
AccessScope は、ファイルを書き出すだけです。ファイアウォールの設定は変えず、通信も遮断しません。IP の一覧は、ログだけを根拠にしています。NAT や CDN の背後では 1 つの IP を多くの人が共有していて、IP は偽装されることもあります。適用する前に、必ず内容を確認してください。

7. LLM による分析(任意)

診断の結果を、LLM に文章にまとめさせる機能です。初期状態ではオフです。使うには、設定の「LLM 連携」で「LLM による分析を有効にする」にチェックを入れて、「使う LLM」を選び、「保存」を押します。選べるのは claude、opencode、codex、agy のうち、その端末にコマンドが入っているものです。

送る内容

「LLM で分析」タブの「送る内容を確認」を押すと、送る全文を見られます。この操作では何も送りません。「LLM で分析する」を押したときに、初めて送ります。

「Zero Telemetry」の対象外です
有効にして分析を実行すると、要約と根拠のログ行は、選んだ LLM のコマンドを通じて外部のサービスに送られます。送り先は、そのコマンド自身の設定で決まります。RoamSwitch の「Zero Telemetry」の説明に、この機能は含まれません。オフのままなら、診断で読んだログの内容が端末の外へ出ることはありません。

8. コマンドで使う

Server Edition のようにコマンドだけの環境や、cron で定期的に回したいときは、accessscope コマンドを使います。画面と同じエンジンなので、見つかる検知は同じです。

accessscope discover
accessscope scan --auto --since 7d --report report.md
accessscope scan /var/log/nginx/access.log /var/log/auth.log
オプション働き
--auto標準の場所などからログを探して診断します。--since 7d で期間を絞れます
--report FILEMarkdown の報告書を書きます
--format json|csv|sarif標準出力の形式を変えます
--export-blocklist FORMAT[:FILE]ブロックリストを書き出します
--fail-on high|medium|lowその深刻度以上の検知があれば、終了コード 3 で終わります
--since-last、--new-only前回と比べて、新規の検知だけを表示します
--llm NAME、--show-promptLLM に分析させます。--show-prompt は、送る全文を表示して終わります(何も送りません)

cron で毎日回す

accessscope scan --auto --since 24h --since-last --new-only --fail-on medium

前回の実行になかった検知だけを表示して、新規の検知が中以上のときだけ、終了コード 3 になります。--llm なしの診断は、root でも動きます。

suppress.toml の書き方

除外ルールは ~/.config/accessscope/suppress.toml に書きます。このファイルがあれば、自動で読みます。

[[rule]]
reason  = "office"
ip      = ["203.0.113.0/28"]
expires = 2027-03-31

[[rule]]
reason      = "uptime monitor"
ua_prefix   = ["Mozilla/5.0 (compatible; UptimeRobot"]
path_prefix = ["/healthz"]

9. できないこと

精度の数字について
自前の試験データでの実測では、攻撃の検知率は約 99%、正常な通信で中以上の検知が出たのは約 2% でした。試験データは実際のサーバの通信の標本ではないので、実際のサーバでの精度を保証する数字ではありません。

10. 困ったとき

「いまは読めないログ」に出てくる

権限が足りないときの表示です。AccessScope は、権限を上げて読むことをしません。次のどれかで対処してください。

「診断できるログが見つかりませんでした」と出る

理由が文で表示されます。たとえば「Web サーバ(Apache・nginx など)のログがありません」のように出ます。Mac では、SSH の記録がないときに「リモートログイン(SSH)が切れている可能性があります」と出ます。表示される「ファイルを選ぶ」「LLM で探す」「ほかの場所を指定する」で、次の手を試せます。どこを調べたかは、閉じてある「くわしい探索結果」を開くと分かります。

「Docker のログは読めませんでした」と出る

Docker が動いていない、Docker が見つからない、権限がない、Docker がエラーを返した、のどれかです。権限がないときは、Docker を使えるユーザーで AccessScope を起動してください。AccessScope は、権限を上げて読み直すことも、docker グループへの参加を求めることも勧めることもしません。docker グループの権限は、ホストの root と同等だからです。

「ログとして読めませんでした」と出る

選んだファイルから、1 行も解析できなかったときの表示です。そのファイルは診断の対象にならず、どこにも送られません。対応しているログの種類かどうかを確かめて、選び直してください。

「LLM で分析する」が押せない

ボタンの近くに理由が出ます。「LLM 連携はオフです」と出たら、設定で有効にします。「使う LLM が選ばれていません」と出たら、設定で選びます。root で起動しているときや、使う LLM のコマンドが端末に入っていないときも、使えません。

アクセス元がプロキシの IP ばかりになる

リバースプロキシや CDN の背後にあるログでは、アクセス元がプロキシの IP になることがあります。初期値の「自動」では、記録された接続元が内部のアドレス(リバースプロキシや Docker のゲートウェイなど)の行に限って、X-Forwarded-For からクライアントの IP を決めます。外部から直接来た行は、記録された接続元のままです。ヘッダの値は偽装できるので、この方法で決めた IP は、確認済みのクローラとしては扱いません。止めたいときは、設定の「解析」で「使わない」を選びます。ほかに、右から数えて信頼できる中継でない最初のアドレスを使う方法と、いちばん左のアドレスを使う方法も選べますが、この値はクライアントが書き換えられるので、自分で管理している信頼できる中継の背後でだけ使ってください。次の診断から有効になります。

← AccessScope 製品ページ RoamSwitch Mac版 操作マニュアルへ →