mcpField
D
dns-intelligence

dns-intelligence

ローカル
github.com/GuardBeeセキュリティ11 日前に更新

dns-intelligence について

dns-intelligenceは、DNSレコードやメール認証、サブドメインを監査する、セキュリティ・運用チーム向けのMCPサービスです。取得可能な放置サブドメインも調査し、評価と修正案を示します。

主な機能

  1. 01一般的なDNSレコードを列挙
  2. 02SPF、DMARC、DKIMを分析
  3. 03サブドメインを発見して乗っ取りリスクを確認
  4. 04DNSSEC、CAA、ネームサーバーを確認
  5. 05メールセキュリティの問題と修正案を集約

活用シーン

  1. 01ドメインのDNS設定を監査
  2. 02メール認証と配送の安全性を調査
  3. 03デプロイ前に取得可能なサブドメインを発見

MCP 対応

MCPクライアントにDNS検索、ドメイン監査、サブドメイン列挙、乗っ取り検出、メールセキュリティ確認のツールを公開します。CLIにも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"guardbee-dns-intelligence": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-dns-intelligence"
]
}
}
}
起動コマンドnpx -y @guardbee/mcp-dns-intelligence

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@guardbee/mcp-dns-intelligence0.9.2

ツール

4

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
domainstringはい列挙するドメイン(例:example.com)

詳細

@guardbee/mcp-dns-intelligence

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

npm version npm downloads License: MIT

DNS レコードを列挙し、SPF/DMARC/DKIM の設定ミスを検出して、乗っ取り可能なサブドメインを見つける MCP サーバーです。サブドメインは Certificate Transparency とワードリストを使って検出します。Node.js 組み込みの dns/promises を使用し、外部依存関係はありません。

テレメトリーはデフォルトでオフです。GUARDBEE_TELEMETRY=1 にすると、サーバー、ツール、成功状況、実行時間、ファイルパスなどの短いパラメーター値を送信します。長い文字列や、content、token、password などのフィールドはプレースホルダーに置き換えられます。詳しくは @guardbee/mcp-telemetry を参照してください。


機能

  • DNS の完全な列挙 — A、AAAA、MX、NS、TXT、CNAME、SOA レコード
  • SPF 分析 — +all、?all、重複レコード、および受信側と同じ方法でカウントする RFC 7208 の制限:ネストされた include/redirect による DNS ルックアップ(最大 10 回)、空振りのルックアップ(最大 2 回)、include のループと不足している include
  • DMARC 分析 — ポリシー(none/quarantine/reject)、pct、rua アドレスの欠落
  • DKIM チェック — よく使われる 9 種類のセレクター(default、google、selector1、mail など)を調査
  • サブドメイン検出 — Certificate Transparency のログ(crt.sh と Cert Spotter に並列で問い合わせ。送信されるのはドメイン名のみ)からの名前と、75 件の名前を含むワードリストを使用します。ワイルドカード DNS は除外されます。応答のある名前はすべて、サブドメイン乗っ取りの有無をチェックします
  • メールセキュリティの概要 — SPF、DMARC、DKIM をまとめて分析し、そのままコピーして使える修正案を提示
  • 23 件のユニットテスト — 純粋なロジックのテストで、ネットワーク接続は不要

クイックスタート

npm install -g @guardbee/mcp-dns-intelligence

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "guardbee-dns-intelligence": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-dns-intelligence"]
    }
  }
}

MCP ツール

ツール説明
enumerate_dnsA〜F の評価付きで DNS を完全にチェック:レコード、SPF/DMARC/DKIM、MTA-STS、DNSSEC、CAA、ネームサーバー
audit_domains最大 20 個のドメインを監査し、評価と主な検出事項を比較
enumerate_subdomains一般的なサブドメインを調査(ワイルドカードを考慮)し、サブドメイン乗っ取りを検出
check_takeover指定されたホスト名について、サブドメイン乗っ取りの有無をチェック
check_email_security修正案付きで SPF、DMARC、DKIM をまとめて監査
lookup_dns特定のレコードタイプ(A/MX/TXT など)を指定した DNS ルックアップ
使用例

Claude に次のように尋ねることができます:

「example.com の DNS 設定に問題はありますか?」

「example.com のメールセキュリティ(SPF、DMARC、DKIM)を監査してください」

「example.com のサブドメインを一覧表示し、参照先のないものがあれば指摘してください」

「example.com の MX レコードを教えてください」

出力例
Email Security Check: example.com
──────────────────────────────────────────────────

── SPF ─────────────────────────────────────────
✓ v=spf1 include:_spf.google.com -all

── DMARC ───────────────────────────────────────
✗ No DMARC record found at _dmarc.example.com
  Add:  v=DMARC1; p=quarantine; rua=mailto:[email protected]

── DKIM ────────────────────────────────────────
✓ Found DKIM selectors: google

SPF の検出結果

コード重大度説明
SPF_MISSING🟡 中SPF レコードが見つかりません
SPF_PERMISSIVE_ALL🔴 重大+all — すべてのサーバーを許可します
SPF_NEUTRAL_ALL🟠 高?all — 未承認の送信者を拒否しません
SPF_NO_ALL🟡 中all メカニズムがありません
SPF_TOO_MANY_LOOKUPS🟠 高DNS ルックアップが 10 回を超えています — SPF が失敗します
SPF_DUPLICATE🟠 高SPF レコードが複数あります
SPF_AT_LOOKUP_LIMIT🔵 低ルックアップがちょうど 10 回です — include がもう 1 つあると SPF が失敗します
SPF_TOO_MANY_VOID_LOOKUPS🟠 高2 件を超える include がレコードを返しません
SPF_INCLUDE_MISSING🟠 高include/redirect の参照先に SPF レコードがありません(permerror)
SPF_INCLUDE_DUPLICATE🟠 高include されたドメインが複数の SPF レコードを公開しています
SPF_INCLUDE_LOOP🟠 高include が評価中のレコードに戻るループを形成しています
SPF_PTR🔵 低非推奨の ptr メカニズムを使用しています

DMARC の検出結果

コード重大度説明
DMARC_MISSING🟠 高DMARC レコードがありません
DMARC_NO_POLICY🟠 高p= ポリシーがありません
DMARC_POLICY_NONE🟡 中p=none — 適用を行わない監視モードです
DMARC_PCT_LOW🔵 低pct が 100 未満です — 部分的な適用です
DMARC_NO_RUA🔵 低集計レポートの送信先(rua)がありません
DMARC_MULTIPLE🟠 高DMARC レコードが複数あります — 受信側はすべて無視します
DMARC_INVALID_POLICY🟠 高p= が none、quarantine、reject のいずれでもありません
DMARC_SUBDOMAINS_NONE🟡 中sp=none により、サブドメインがなりすまし可能な状態になります
DOMAIN_NOT_FOUND🟠 高ドメインが存在しません(NXDOMAIN)

独自の DMARC レコードを持たないサブドメインは、受信側と同様に親ドメインのポリシー(sp=)を継承します。サブドメインの列挙ではワイルドカード DNS を検出し、ワイルドカードのみで応答する名前は除外します。

DKIM、MX、トランスポートの検出結果

コード重大度説明
DKIM_NOT_FOUND🟡 中一般的な約 35 個のセレクターで DKIM キーが見つかりません(独自のセレクターは dkimSelectors で渡してください)
DKIM_KEY_WEAK🟠 高RSA キーが 1024 ビット未満です
DKIM_KEY_1024🟡 中1024 ビットの RSA キーです — 2048 ビットにローテーションしてください(RFC 8301)
DKIM_KEY_INVALID🟡 中公開されたキーを解析できません
DKIM_TESTING🔵 低t=y のテストモードです
MX_UNRESOLVABLE🟠 高MX ホストに A/AAAA レコードがありません
MTA_STS_MISSING🔵 低MTA-STS がありません:受信メールが平文にダウングレードされる可能性があります
MTA_STS_MX_MISMATCH🟠 高enforce ポリシーに稼働中の MX が含まれていません — 準拠する送信者は配信を拒否します
MTA_STS_POLICY_UNREACHABLE / _INVALID🟡 中ポリシーファイルがない、リダイレクトされている、または不正な形式です — 送信者は MTA-STS を無視します
MTA_STS_TESTING / _MODE_NONE / _MAX_AGE_SHORT🔵 低適用されていない、取り消されている、または max_age が 1 日未満です
TLSRPT_MISSING / _INVALID🔵 低MTA-STS と併用できる TLS-RPT がありません

SPF_MISSING は、ドメインに MX レコードがある場合(Google Workspace なら v=spf1 include:_spf.google.com ~all などの基本レコードを設定)🟠 高となり、それ以外の場合は 🟡 中となります(v=spf1 -all の設定を推奨)。

ネームサーバーの検出結果

ゾーンの各ネームサーバーに対し、DNS(UDP/TCP 53)経由で直接問い合わせます。再帰なしの SOA クエリ、AXFR リクエスト(最初のメッセージのみ読み込み、ゾーン全体はダウンロードしません)、およびホストしていない名前への再帰クエリを実行します。--no-ns-probe / nameserverProbe: false でスキップできます。

コード深刻度説明
NS_AXFR_ALLOWED🟠 高誰でもゾーン全体をダウンロードできます(ゾーン転送)
NS_LAME🟠 高リストにあるネームサーバーが権威ある応答を返しません(REFUSED、SERVFAIL、AA なし、または応答なし)
NS_UNRESOLVABLE🟠 高ネームサーバー自体の名前にアドレスがありません
NS_OPEN_RESOLVER🟡 中ネームサーバーが誰からの再帰クエリにも応答します(増幅攻撃、キャッシュポイズニング)
NS_SOA_SERIAL_MISMATCH🔵 低同じプライマリのサーバーが異なるシリアル番号を返します(マルチプロバイダー構成はプライマリごとに比較します)

DNSSEC と CAA の検出結果

コード深刻度説明
DNSSEC_BROKEN🔴 致命的検証に失敗します。検証を行うリゾルバー(Google、Cloudflare、ほとんどの ISP)はドメインを解決できません
DNSSEC_NO_DS🟡 中ゾーンには署名がありますが、親ゾーンに DS がないため、何も検証されません
DNSSEC_WEAK_ALGORITHM🟡 中非推奨の署名アルゴリズム(RSASHA1、RSAMD5、DSA、GOST。RFC 8624)
DNSSEC_DS_SHA1🔵 低DS ダイジェストが SHA-1 のみです
DNSSEC_DISABLED🔵 低ゾーンに署名がありません
CAA_BLOCKS_CURRENT_CA🟡 中CAA が、有効な証明書を発行した CA を許可していません。更新に失敗します
CAA_UNKNOWN_CRITICAL🟠 高CA が理解できない重大な CAA タグがあります。すべての CA が発行を拒否する必要があります
CAA_MISSING🔵 低ツリー内のどこにも CAA がありません。どの CA でも発行できます

DNSSEC は DNS-over-HTTPS(dns.google)経由で取得します。Node のリゾルバーでは DS/DNSKEY レコードや AD フラグを確認できないため、検証クエリと cd=1(検証無効)クエリを比較します。CAA は RFC 8659(最も近い祖先)に従い、:443 で提供される証明書の発行者と照合します。http: false で両方のチェックをスキップできます。

サブドメインの乗っ取り検出

CNAME を持つ稼働中の各サブドメインを、CNAME チェーン(最大 5 ホップ)をたどってチェックします。ワイルドカードレコードもチェックします。*.domain が宙ぶらりんになっていると、リストにないすべての名前を取得できる状態になります。

リスク条件プロバイダー
⚠️ 乗っ取りの可能性ありプロバイダーが誰にでも名前の取得を許可しているAWS S3(NoSuchBucket ページ)、Microsoft Azure および AWS Elastic Beanstalk(CNAME ターゲットが NXDOMAIN)、Surge.sh(project not found)、および未登録ドメインを指す CNAME
⚠️ 手動で確認リソースは消失していますが、プロバイダーがドメインの所有確認を求める場合がありますGitHub Pages、Heroku、Netlify、Vercel、Ghost、Pantheon、WordPress.com、Help Scout、Tumblr、ngrok
🧹 古いレコードターゲットは消失していますが、所有者だけが管理する登録済みドメイン配下にあります。レコードを削除してください。乗っ取りではなく、CI は失敗しませんその他のプロバイダー

各ページのフィンガープリントは、プロバイダー上のランダムな未取得名を使って確認しました。「見つからない」ページに安定した目印がなくなったプロバイダーは記載していません。HTTP チェックでは、サブドメインに GET / を 1 回送信します(HTTPS、次に HTTP)。--no-http / httpProbe: false で無効にできます。すでに把握しているホスト名には check_takeover / takeover <host…> を使用してください。


CLI — CI/CD 連携

MCP サーバーモードに加えて、CLI として直接使用することもできます。

# Full DNS + email security check
npx @guardbee/mcp-dns-intelligence check example.com

# Fail only on high and above
npx @guardbee/mcp-dns-intelligence check example.com --fail-on=high

# Subdomain scan — exits 1 if a dangling CNAME is found
npx @guardbee/mcp-dns-intelligence subdomains example.com

# Subdomain scan with higher concurrency
npx @guardbee/mcp-dns-intelligence subdomains example.com --concurrency=50

# JSON output
npx @guardbee/mcp-dns-intelligence check example.com --format=json

# Several domains with an A–F grade each and a summary table (or every domain in guardbee.yml when none is given)
npx @guardbee/mcp-dns-intelligence check example.com example.de example.co.uk
npx @guardbee/mcp-dns-intelligence check --format=sarif > dns.sarif

評価:検出結果ごとに点数が減点されます(致命的 40、高 20、中 8、低 2)。また、最も深刻な検出結果によって評価の上限が決まります。致命的な問題が 1 件でもあれば F、高の問題があれば最高でも C、中の問題があれば最高でも B です。

終了コード: 0 = 問題なし · 1 = しきい値を超える検出結果/宙ぶらりんのサブドメイン · 2 = エラー

guardbee.yml による設定

プロジェクトのルートに guardbee.yml を作成すると、CLI フラグを保存できます。CLI フラグは常にファイルの設定より優先されます。

dns-intelligence:
  fail-on: high          # critical | high | medium | low
  concurrency: 20        # parallel subdomain probes
  domains:               # used when no domain is given on the CLI
    - example.com
    - staging.example.com

サンプルファイルについては、guardbee.example.yml をご覧ください。

GitHub Actions — DNS セキュリティ監査
name: DNS Security Check
on:
  schedule:
    - cron: "0 6 * * *"  # Every day at 06:00
  workflow_dispatch:

jobs:
  dns-check:
    runs-on: ubuntu-latest
    steps:
      - name: Check DNS configuration
        run: npx @guardbee/mcp-dns-intelligence check ${{ vars.DOMAIN }} --fail-on=high

      - name: Scan for dangling subdomains
        run: npx @guardbee/mcp-dns-intelligence subdomains ${{ vars.DOMAIN }}
GitLab CI
dns-security:
  image: node:20
  script:
    - npx @guardbee/mcp-dns-intelligence check $DOMAIN --fail-on=high
    - npx @guardbee/mcp-dns-intelligence subdomains $DOMAIN
  only:
    - schedules
デプロイ前のメールセキュリティチェック
- name: Verify email security records
  run: |
    npx @guardbee/mcp-dns-intelligence check ${{ vars.DOMAIN }} \
      --fail-on=high \
      --format=json | tee dns-report.json

- name: Upload DNS report
  uses: actions/upload-artifact@v4
  with:
    name: dns-security-report
    path: dns-report.json

開発

npm install
npm test          # 23 unit tests
npm run build     # TypeScript compile

ライセンス

MIT — GuardBee

フィードバック

ご質問、ご提案、または誤検知がありましたら、GitHub Discussions でスレッドを立てるか、issue を作成してください。GuardBee が役立った場合は、リポジトリに ⭐ を付けていただけると、ほかの方にも見つけてもらいやすくなります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。