SMB Signing not requiredがメンバーサーバーで検出される理由とGPOでSMB署名を必須化する手順(Windows Server/Active Directory)

脆弱性診断で「SMB Signing not required(SMB 署名が必須ではない)」がドメイン参加サーバーだけに出て、ドメインコントローラー(AD DS)には出ない——この差は、SMB 署名の既定値とGPO適用範囲の違いが原因であることがほとんどです。本記事では“誰が設定を決めているのか”まで含めて、確認方法と安全な是正手順を整理します。

目次

現象の整理:「SMB Signing not required」が出る・出ないの違い

脆弱性診断ツールのレポートで「SMB Signing not required(SMB 署名が必須ではない)」が検出されると、多くの場合は「そのサーバーが“署名なしのSMB通信”を受け入れてしまう(=署名を要求していない)」状態を意味します。ところが、同じドメイン内でもドメイン参加(メンバー)サーバーには指摘が出るのに、AD DS(ドメインコントローラー/DC)には出ないケースがあります。

この差は「診断ツールの気まぐれ」ではなく、Windowsの設計として役割(DCか、メンバーか)によってSMB署名の既定値・適用ポリシーが違うことが主因です。まずはSMB署名が何を守る仕組みなのかを押さえたうえで、設定の決定者(ローカル設定/GPO/セキュリティベースライン)を切り分けていきましょう。

SMB署名(SMB Signing)とは:何が「必須ではない」と問題なのか

SMB(Server Message Block)は、Windowsのファイル共有(\\server\\share)や管理用途で広く使われるプロトコルです。SMB署名(Signing)は、通信の各メッセージに改ざん検出用の署名を付け、途中でデータが書き換えられていないことを確認する仕組みです。

  • 署名が「有効(Enabled)」:相手が署名できるなら署名する(ただし、相手が署名しない場合は“署名なし”でも成立し得る)
  • 署名が「必須(Required / Always)」:署名のないSMB通信は拒否する(“署名なし”では成立しない)

診断ツールが問題視するのは後者の観点で、「署名が有効でも、必須でなければ中間者攻撃やリレー攻撃の余地が残る」と評価されるためです。特にドメイン環境では、認証(NTLM/Kerberos)と組み合わさって横展開の踏み台になり得るため、ベストプラクティスとして「署名を必須」に寄せる運用が一般的です。

結論:DCとメンバーサーバーで“既定値”が違う

質問の核心はここです。ドメインコントローラーは既定でSMB署名を“必須”寄りにしている一方、メンバーサーバーは互換性を優先し、既定では“必須ではない(署名は状況次第)”になりやすい、という差があります。

役割サーバー側:常に署名(Always)サーバー側:署名(相手が同意する場合)クライアント側:常に署名(Always)クライアント側:署名(相手が同意する場合)診断での見え方
ドメインコントローラー(AD DS)有効になっていることが多い有効有効になっていることが多い有効「not required」になりにくい
ドメイン参加(メンバー)サーバー無効(=必須ではない)になりやすい有効無効(=必須ではない)になりやすい有効「not required」として検出されやすい

ポイントは、「署名が有効か」ではなく「署名が必須か」です。メンバーサーバーは「相手が署名できるなら署名する(Enabled)」状態になっていても、相手が署名しない場合に拒否しない(Requiredではない)ため、診断ツールが「署名必須ではない」と判断します。

“誰が/何が設定を決めているのか”を分解する

SMB署名の最終的な有効/必須は、次の要素の組み合わせで決まります。ここを理解すると、DCとメンバーサーバーで結果が違う理由がクリアになります。

OSの役割(DC)によるローカルセキュリティ既定値の差

Windows Serverは、ドメインコントローラーとして構成されたときに、単体サーバーやメンバーサーバーより厳しめのセキュリティ既定値になります。つまり「誰かが手でいじった」というより、“DCという役割の安全側の既定値”として設定されているケースが多いです。

GPOの適用範囲(OU)が違う:DCはDomain Controllers OUに入る

Active Directoryでは、DCは通常「Domain Controllers」OUに格納され、そこにリンクされたGPO(代表例:Default Domain Controllers Policyや組織独自のDC向けベースライン)が優先的に適用されます。一方、メンバーサーバーは別OU(あるいは既定のComputersコンテナ)に置かれ、DC向けの厳格なGPOが当たっていないことがよくあります。

その結果、DCは「署名必須」なのに、メンバーサーバーは「署名は有効だが必須ではない」という差が生まれます。

脆弱性診断ツールの判定は「サーバーが署名を要求するか」に寄りがち

多くの診断ツールは、対象ホストの445/TCP(SMB)に対して交渉(ネゴシエーション)を行い、“署名が必須かどうか(Required)”を見ています。したがって、クライアント側設定だけを強化しても、サーバー側が必須になっていなければ指摘が残ることがあります。対処ではサーバー側の「常に署名」を中心に考えるのが近道です。

まずは確認:そのサーバーの“実効値”を短時間で掴む

ポリシーは「設定したつもり」と「効いている」がズレやすい領域です。まずは診断で指摘されたメンバーサーバーと、指摘の出ないDCそれぞれで、実効値を確認してください。

PowerShellでの確認(最短・再現性が高い)

Windows Server 2012以降であれば、SMBクライアント/サーバー設定をPowerShellで確認できます。

# サーバー側(受け口)の署名設定
Get-SmbServerConfiguration | Select EnableSecuritySignature, RequireSecuritySignature

# クライアント側(接続しに行く側)の署名設定

Get-SmbClientConfiguration | Select EnableSecuritySignature, RequireSecuritySignature

診断で問われることが多いのは、サーバー側のRequireSecuritySignatureがTrue(=必須)かどうかです。EnableがTrueでもRequireがFalseなら、ツールによっては「not required」扱いになります。

GUIでの確認(ローカルセキュリティポリシー/GPO)

該当サーバーで次の場所を確認します。

  • ローカル:secpol.msc → 「ローカル ポリシー」→「セキュリティ オプション」
  • ドメイン:gpmc.msc(グループ ポリシーの管理)で、該当OUにリンクされたGPOと優先度を確認
ポリシー名(セキュリティ オプション)対象推奨(まずはここ)意味
Microsoft ネットワーク サーバー: 常に通信にデジタル署名を行う受け口(SMBサーバー)有効署名なしのSMB接続を拒否(“必須”)
Microsoft ネットワーク サーバー: 通信にデジタル署名を行う(クライアントが同意する場合)受け口(SMBサーバー)有効署名可能な相手とは署名を使う(“有効”)
Microsoft ネットワーク クライアント: 常に通信にデジタル署名を行う接続側(SMBクライアント)有効(環境次第)署名できない相手への接続を拒否
Microsoft ネットワーク クライアント: 通信にデジタル署名を行う(サーバーが同意する場合)接続側(SMBクライアント)有効署名可能な相手とは署名を使う

レジストリでの確認(運用で詰まったときの最終手段)

ポリシー画面が参照できない場合や、ツールでの自動監査に組み込みたい場合は、レジストリの実値を見ます。代表的な場所は次のとおりです。

コンポーネントキー意味
SMBサーバーHKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\ParametersRequireSecuritySignature / EnableSecuritySignature必須(Require)/有効(Enable)の実体
SMBクライアントHKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\ParametersRequireSecuritySignature / EnableSecuritySignature必須(Require)/有効(Enable)の実体

ただし、レジストリは“結果”であり、原因はGPOの適用やローカルポリシーの競合であることがほとんどです。先にGPOの実効値(gpresult / rsop)を確認する方が、安全で後戻りしやすいです。

対処の基本:GPOでSMB署名を必須化(Always)する

是正の基本方針はシンプルです。ドメインメンバー(必要ならDCも含め)に対して、SMB署名を「常に(Always)」へ寄せる。そのための手段として、GPO(グループポリシー)で統制するのが最も確実です。

推奨アプローチ:既定GPOを直接編集せず、専用GPOを作る

「Default Domain Policy」「Default Domain Controllers Policy」をそのまま編集すると、将来のトラブルシュートやベースライン適用の妨げになります。現場では次の流れが安全です。

  • メンバーサーバー向け:サーバーOUにリンクする専用GPOを新規作成
  • DC向け:既に満たしていることが多いので、まずは実効値を確認して必要な場合のみ追加

GPO設定手順(管理者が迷わない最短手順)

  1. グループ ポリシーの管理(gpmc.msc)を開き、対象OUを決めます(例:Servers/FileServers/TerminalServersなど)。
  2. 新しいGPOを作成し、分かりやすい名前を付けます(例:SEC – SMB Signing Required)。
  3. GPOの編集 → 「コンピューターの構成」→「ポリシー」→「Windows の設定」→「セキュリティの設定」→「ローカル ポリシー」→「セキュリティ オプション」へ進みます。
  4. 次の2つを有効にします。
    • Microsoft ネットワーク クライアント: 常に通信にデジタル署名を行う
    • Microsoft ネットワーク サーバー: 常に通信にデジタル署名を行う
  5. 加えて、互換性と分かりやすさのために次の2つも有効のまま(または有効に)しておくことが多いです。
    • Microsoft ネットワーク クライアント: 通信にデジタル署名を行う(サーバーが同意する場合)
    • Microsoft ネットワーク サーバー: 通信にデジタル署名を行う(クライアントが同意する場合)
  6. まずは検証用OU(パイロット)にリンクし、影響確認後に本番OUへ展開します。

段階適用のコツ:影響を小さくして“戻せる”設計にする

SMB署名の必須化は効果が大きい一方で、相手が署名できない場合は接続が失敗します。いきなり全台に適用せず、次のように段階化すると事故が起きにくいです。

  • 対象を分ける:まずはファイルサーバー、次にアプリサーバー、最後に特殊用途サーバー(古い機器連携など)
  • 例外を明確化:古いNASや複合機など、SMB署名非対応が疑われる機器は“例外OU”へ隔離し、別ポリシーで管理
  • 影響確認の観点:バックアップ、監視エージェント、バッチ、EDI連携など“夜間にだけ動く”通信に注意

運用上の注意:互換性・性能・例外パターン

古いSMBクライアント/機器が接続できなくなる可能性

SMB署名を必須にすると、署名できない相手は接続できません。現場で多いのは、古いNAS、複合機、組み込み機器、古いLinuxディストリビューション(または古いSamba)などです。診断で指摘が出たサーバーが“提供する共有”に、そうした機器がぶら下がっていないかを先に棚卸しするとスムーズです。

性能影響は一般に小さいが、転送量が大きいサーバーは要測定

署名は暗号化(SMB Encryption)より軽いとはいえ、ファイルサーバーのように大容量転送が常態化している環境では、CPU負荷やスループットに影響が出ることがあります。特にピーク帯の転送や、仮想化基盤上の共有(CSVやバックアップ領域など)を扱う場合は、パイロット適用 → 実測(CPU/待ち時間/転送量)を推奨します。

DCで検出されない別の理由:スキャン条件で“評価できていない”ケースもある

質問のケースは「既定値の差」が主因になりやすい一方、次のような理由でDCが“検出されない”こともあります。

  • SMB(445/TCP)がネットワーク的に到達できず、ツールが評価をスキップしている
  • 認証付きスキャン/認証なしスキャンの差で、検査項目が変わっている
  • ツールのポリシーやプラグイン設定で、DC向けの判定が別扱いになっている

この場合は、診断結果の“未評価”や“情報”欄も併せて確認し、PowerShellでの実効値確認を優先してください。

よくある落とし穴:設定したのに指摘が消えない

GPOを入れたのに診断結果が改善しない場合、原因はだいたい次のどれかです。

よくある状況原因の例確認・対処
クライアント側だけ「常に署名」を有効にした診断はサーバー側(受け口)のRequireを見ているMicrosoft ネットワーク サーバー: 常に通信にデジタル署名を行うを有効にする
GPOは作ったが、対象OUにリンクしていない/別OUに置いているそもそも適用されていないgpmcでリンク先と優先度を確認、gpresult /hで実効を確認
OUにリンクしたのに一部サーバーだけ変わらないセキュリティ フィルタ/WMIフィルタ/GPO継承ブロックの影響GPOのスコープと「結果のセット(RSOP)」を確認
実効値は変わったのに、診断が古い結果のままツール側のキャッシュ、再スキャン範囲の違い同条件で再スキャン、または“最新の検査日時”を確認
ポリシー適用後もRequireがTrueにならないポリシー更新が未反映、サービスの状態、設定競合gpupdate /force後に再確認。必要なら再起動も検討

適用後の確認:再スキャン前に押さえるチェックポイント

診断ツールの再実行に入る前に、サーバー側で次の3点を押さえておくと手戻りが減ります。

  • 実効値:Get-SmbServerConfigurationでRequireSecuritySignatureがTrueになっている
  • ポリシー適用:gpresultで該当GPOが「適用されたGPO」に載っている
  • 通信確認:主要なクライアント(業務端末/アプリサーバー/バックアップ等)から共有アクセスが正常

この状態を作ってから再スキャンすれば、「診断が正しいのか」「設定が効いていないのか」の切り分けが一気に楽になります。

補足:SMB署名とセットで考えたい周辺のハードニング

SMB署名は“やる価値が高い対策”ですが、単体で万能ではありません。AD環境の攻撃経路は複合的なので、余力があれば次も同時に見直すと防御の層が厚くなります。

  • SMBv1の無効化:古いプロトコルは攻撃面が広く、互換性要件がなければ無効化が推奨されます。
  • NTLMの利用範囲の縮小:可能な範囲でKerberosへ寄せ、不要なNTLMを減らす。
  • 管理共有(C$など)の扱い:不要な共有の棚卸し、管理者権限の最小化、監査の強化。
  • 重要サーバーは“接続元を絞る”:ファイアウォールやセグメント分離で、そもそも445/TCPを誰が叩けるかを制御。

まとめ:DCに出なくてメンバーに出るのは“自然”、だからこそGPOで統制する

「DCには出ないのにメンバーサーバーに出る」現象は、Windows/ADの設計として起きやすい差分です。重要なのは、その差分を“放置する”のではなく、組織のセキュリティ基準としてGPOで揃えることです。まずは実効値を確認し、影響を見ながら段階適用すれば、脆弱性診断の指摘を消すだけでなく、SMBを起点としたリスクを現実的に下げられます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次