今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
いま読んでいる一膳lissy93/web-checkウェブサイトのセキュリティ・技術スタック・インフラを包括的に調査するオープンソースOSINTダッシュボードです。信頼度 1.10ほかの一膳GyulyVGC/sniffnetネットワークトラフィックを快適に監視するクロスプラットフォームGUIアプリケーションです。信頼度 1.10ほかの一膳wasabeef/awesome-android-uiAndroidの高性能なUI/UXライブラリをまとめたキュレーションリスト信頼度 1.10
今日の優良食堂 · ギット飯が代わりに導入・分析

lissy93/web-check

ウェブサイトのセキュリティ・技術スタック・インフラを包括的に調査するオープンソースOSINTダッシュボードです。

調べたいドメインを1つ入力するだけで、IP・DNS・SSL証明書・クッキー・レスポンスヘッダーが自動で並び、サーバーの設置場所まで地図上に表示されます。侵入テストの事前調査や競合のインフラ調査で「まず何を確認すべきか」に悩む時間が減り、Shodanなどとの連携で深い情報まで一画面で追えます。Express/Astro製のフルスタックで、クラウド・Docker・ソースのどれでも自分のサーバーに立てて、手元のデータとして扱える点も試す価値があります。

01 / 概要
何をするものか一文で言うと
ひとことでウェブサイトのセキュリティ・技術スタック・インフラを包括的に調査するオープンソースOSINTダッシュボードです。

Web-Checkは、対象のウェブサイトを指定すると、IP情報・SSLチェーン・DNSレコード・ヘッダー・技術スタックなど多数の項目を一括で調べるOSINT(オープンソースインテリジェンス)ツールです。フロントエンドはAstro+React、バックエンドはExpressベースのAPIサーバーで構成されています。Netlify・Vercel・Docker・Render・ソースからの実行など複数のデプロイ方法に対応しています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

仕組みはシンプルです。`api/`ディレクトリに`dns.js``ssl.js``headers.js``ports.js`など機能ごとのファイルが1つずつ置かれ、`server.js`がこのディレクトリを読み込んで各ファイル名から`/api/xxx`というExpressルートを自動生成します。フロントエンドの`Results`ビューがURLを受け取ると各`/api/*`エンドポイントを並行して呼び出し、返ってきたJSONを`src/client/components/Results/`配下のタイル(Cookies・Headers・DnsRecordsなど)に描画します。さらに`src/client/analysis/rules/`にはヘッダーやSSL、HSTSなどの結果を評価するルールファイルがあり、取得した生データに対して良し悪しの判定ロジックを加えています。サーバー側にはレート制限(`express-rate-limit`)や`API_DISABLED_CHECKS`などのチェック単位のオン・オフ設定、`API_BLOCKED_HOSTS`によるスキャン対象の制限機構も実装されています。DockerfileではPuppeteer用にChromiumをシステムにインストールし、スクリーンショット取得やtracerouteコマンドも実行できる構成になっています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    `yarn install`後に`yarn dev`を実行すると、`concurrently`がバックエンド(`dev:api`、ポート3001)とフロントエンド(`dev:astro`)を同時に立ち上げる様子が見られます。

  2. STEP 02

    ブラウザで`/check`にアクセスしてドメインを入力すると、Resultsページが`/api/dns``/api/ssl`など多数のエンドポイントに向けて並行してリクエストを飛ばすのがネットワークタブで確認できます。

  3. STEP 03

    一部の機能(Shodan、SecurityTrails、Tranco、Google Cloud、WhoAPIなど)は`.env`にAPIキーを設定しないと動作せず、未設定のタイルはエラーやデータなしの表示になります。

  4. STEP 04

    Dockerで動かす場合は`docker-compose up`だけで`localhost:3000`に立ち上がりますが、内部でChromiumとtracerouteコマンドをインストール済みのイメージのため、スクリーンショット機能やtrace-route機能もそのまま動きます。

  5. STEP 05

    `API_DISABLED_CHECKS`や`API_BLOCKED_HOSTS`などの環境変数を設定すると、特定のチェックを無効化したり、社内LANなど特定ホストへのスキャンを禁止したりする挙動が確かめられます。

  6. STEP 06

    `/healthz`にアクセスすると、登録済みAPIハンドラーの準備状況やバージョン、稼働時間を返すJSONが確認できます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実行すると、対象ドメインについてIP・DNS・SSL証明書チェーン・HTTPヘッダー・Cookie・robots.txt・サイトマップ・オープンポート・tracerouteパス・DNSSEC・カーボンフットプリント・技術スタックなど、30種類近い項目が1画面のダッシュボードにタイル形式でまとめて表示されます。各タイルには`analysis/rules`による良し悪しの簡易判定も付き、生データを見るだけでなくセキュリティ設定上の弱点に気づける状態になります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

Shodan・SecurityTrails・Tranco・Google Cloud・WhoAPIなど一部の重要な機能は外部APIキーがないと動作しないため、フル機能を試すには複数のサービス登録が必要です。

02

Puppeteerでスクリーンショットを取得したりtracerouteを実行したりする都合上、Dockerイメージにはシステム版Chromiumとtracerouteコマンドが同梱されており、動作環境がやや重くなります。

03

公開ホスト版はレート制限(10分で100件など)がかかる設計であり、大量スキャンには自前ホスティングが前提になっています。

04

スキャン対象を外部が自由に入力できる性質上、`API_BLOCKED_HOSTS`のような設定を自分で見直さないと、意図せず社内ネットワークなどへのスキャンリクエストの踏み台にされるリスクが残ります。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

自分のサイトやクライアントのサイトの外部から見える設定(ヘッダー・SSL・DNS・robots.txtなど)をまとめて棚卸ししたいシステム管理者やセキュリティ担当者に向いています。ソースコードでは`api/`配下の機能ごとのファイル構成、`server.js`での自動ルーティング、`analysis/rules`による判定ロジック、Dockerfileでのマルチステージビルドとヘルスチェック実装が確認でき、README記載の機能一覧と実装が対応しています。ただしフル機能を使うには複数の外部APIキー登録が前提になる点は、実際に導入する前に把握しておくべきです。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する