Projects / Network Check

Network Check

DNS、TLS、HTTP、メール関連など、公開されているネットワーク情報を外部からread-onlyで確認するツールです。UIとcheck logicを分離し、同じcoreを公開先ごとのpresentationから再利用できる構成にしています。

Active project Read-only Live
Domain Multi Checkの実行結果画面。example.comを入力し、Domain、DNS Timing、CAA、MX、SPF、DMARC、TLS、HTTP/2などの結果がGood / Warningの状態別にカード表示されている。
選択した複数のdomain checkを1回の入力から実行し、checkごとの結果を分離して表示する。

なぜ作ったか

Network Checkは、自分で使うネットワーク確認ツールとして作り始めました。実装だけでなく、AIを補助に使った開発、設計の整理、技術文書化までを一つのプロジェクトとして試しています。

公開情報を、目的ごとに確認する

DNS / Domain

Domain、DNS Timing、PTR、CAA、IPv4 / IPv6 Preference

Web

TLS、HTTP/2、Security Headers

Mail-related DNS

MX、SPF、DMARC

Batch

Domain Multi Check:domainを入力にする9項目(Domain、DNS Timing、CAA、MX、SPF、DMARC、TLS、HTTP/2、IPv4 / IPv6 Preference)を選択してまとめて実行します。PTRはIP入力、Security HeadersはURL入力のためbatch対象外です。

Supported Checks選択画面。DNS、MAIL、WEB、IPの4カテゴリに分類された9項目のチェックボックスが並んでいる。
Domain Multi Checkでは、DNS、メール関連、Web、IP関連の9項目から対象checkを選択できる。

UIを分離し、同じcoreを再利用する

check logicをsiteごとに複製せず、共有のChecks / Coreとして扱う構成です。Application層は、Domain Multi Checkのように複数のcheckをまとめて扱う処理で使用しており、個別checkはWeb層から共有Checks / Coreを直接利用します。presentation差分はcomposition層で組み立て、coreを別HTTP serviceやmicroserviceとして切り出す設計ではありません。

Site-specific UIとCompositionの先で経路が分かれ、個別checkはWeb層から共有Checks / Coreを直接呼び、Domain Multi CheckはApplication層を経由してから同じChecks / Coreへ合流する図。破線の枠がshared core側を表す。
Shared modules, not a distributed core service.
Architectureの詳細を見る OSIIX統合時の変更境界設計をLibraryで読む

安全性を「境界」として設計する

Application boundary

  • 接続前に解決結果を検証し、検証済みの接続先を使用する
  • loopback / private / link-local / multicast / reservedなどnon-public destinationを拒否・回避する
  • 検証済みの接続先境界が変わりうる処理ではredirect追跡を制限する

この確認が行わないこと

  • port scanning
  • 脆弱性診断・侵入試験
  • 認証情報の試行
  • 大規模なcrawl
  • 対象システムの変更

公開環境側の不正利用対策

endpoint固有のrate limitingは、公開環境側で行っているAPI abuse対策です。具体的なしきい値は内部運用情報として非公開です。

Security Headers確認結果画面。https://example.com/ を対象に、選択したresponse headerの有無と、解決されたpublic addressesが表示されている。
Public URLに対して選択したresponse headersと、確認時に解決されたpublic addressesを表示する個別check。

実装と判断を公開資料から確認できる

公開実装と運用環境の境界

公開Repositoryは、公開用に選別したソースと資料を提供するためのものです。運用環境を含むprivate source全体の複製ではありません。

Public repository

  • 選別したapplication source
  • public-safeなtemplates / assets
  • documentation
  • selected tests

実行環境固有(非公開)

  • deployment configuration
  • server paths
  • service configuration
  • logs / DB / credentials / operational detail
Public Repository Policyを見る
Projectsへ戻る