Web-Checkは、対象のウェブサイトを指定すると、IP情報・SSLチェーン・DNSレコード・ヘッダー・技術スタックなど多数の項目を一括で調べるOSINT(オープンソースインテリジェンス)ツールです。フロントエンドはAstro+React、バックエンドはExpressベースのAPIサーバーで構成されています。Netlify・Vercel・Docker・Render・ソースからの実行など複数のデプロイ方法に対応しています。
仕組みはシンプルです。`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コマンドも実行できる構成になっています。
- STEP 01
`yarn install`後に`yarn dev`を実行すると、`concurrently`がバックエンド(`dev:api`、ポート3001)とフロントエンド(`dev:astro`)を同時に立ち上げる様子が見られます。
- STEP 02
ブラウザで`/check`にアクセスしてドメインを入力すると、Resultsページが`/api/dns``/api/ssl`など多数のエンドポイントに向けて並行してリクエストを飛ばすのがネットワークタブで確認できます。
- STEP 03
一部の機能(Shodan、SecurityTrails、Tranco、Google Cloud、WhoAPIなど)は`.env`にAPIキーを設定しないと動作せず、未設定のタイルはエラーやデータなしの表示になります。
- STEP 04
Dockerで動かす場合は`docker-compose up`だけで`localhost:3000`に立ち上がりますが、内部でChromiumとtracerouteコマンドをインストール済みのイメージのため、スクリーンショット機能やtrace-route機能もそのまま動きます。
- STEP 05
`API_DISABLED_CHECKS`や`API_BLOCKED_HOSTS`などの環境変数を設定すると、特定のチェックを無効化したり、社内LANなど特定ホストへのスキャンを禁止したりする挙動が確かめられます。
- STEP 06
`/healthz`にアクセスすると、登録済みAPIハンドラーの準備状況やバージョン、稼働時間を返すJSONが確認できます。
実行すると、対象ドメインについてIP・DNS・SSL証明書チェーン・HTTPヘッダー・Cookie・robots.txt・サイトマップ・オープンポート・tracerouteパス・DNSSEC・カーボンフットプリント・技術スタックなど、30種類近い項目が1画面のダッシュボードにタイル形式でまとめて表示されます。各タイルには`analysis/rules`による良し悪しの簡易判定も付き、生データを見るだけでなくセキュリティ設定上の弱点に気づける状態になります。
Shodan・SecurityTrails・Tranco・Google Cloud・WhoAPIなど一部の重要な機能は外部APIキーがないと動作しないため、フル機能を試すには複数のサービス登録が必要です。
Puppeteerでスクリーンショットを取得したりtracerouteを実行したりする都合上、Dockerイメージにはシステム版Chromiumとtracerouteコマンドが同梱されており、動作環境がやや重くなります。
公開ホスト版はレート制限(10分で100件など)がかかる設計であり、大量スキャンには自前ホスティングが前提になっています。
スキャン対象を外部が自由に入力できる性質上、`API_BLOCKED_HOSTS`のような設定を自分で見直さないと、意図せず社内ネットワークなどへのスキャンリクエストの踏み台にされるリスクが残ります。
自分のサイトやクライアントのサイトの外部から見える設定(ヘッダー・SSL・DNS・robots.txtなど)をまとめて棚卸ししたいシステム管理者やセキュリティ担当者に向いています。ソースコードでは`api/`配下の機能ごとのファイル構成、`server.js`での自動ルーティング、`analysis/rules`による判定ロジック、Dockerfileでのマルチステージビルドとヘルスチェック実装が確認でき、README記載の機能一覧と実装が対応しています。ただしフル機能を使うには複数の外部APIキー登録が前提になる点は、実際に導入する前に把握しておくべきです。