はじめに
Windowsネットワークのセキュリティにおいて、SMB(Server Message Block)の構成見直しは最優先事項の一つです。2017年のWannaCryやNotPetyaによる大規模なランサムウェア攻撃は、古いSMBv1の脆弱性(MS17-010, EternalBlue)を悪用したものでした。その被害総額は数千億円規模に達しています。
「うちは大丈夫」と思っていませんか? 未パッチのレガシー端末が1台でもネットワークに存在すれば、侵入口になり得ます。
この記事では、レガシーなSMBv1の無効化から、SMBv3による通信暗号化の強制まで、システムを段階的に「要塞化」するステップを解説します。
対象環境
- Windows 10 / 11
- Windows Server 2016 / 2019 / 2022
- 各コマンドは管理者権限のPowerShellで実行してください。
SMBバージョンの整理
まず全体像を把握しましょう。
| バージョン | 対応OS | 主な特徴 | 推奨 |
|---|---|---|---|
| SMBv1 | Windows XP〜 | 認証の脆弱性・平文通信 | ❌ 即時無効化 |
| SMBv2 | Vista / Server 2008〜 | 性能向上・署名対応 | ⚠ 許容(v3移行を推奨) |
| SMBv3.0 | Windows 8 / Server 2012〜 | AES暗号化対応 | ✅ |
| SMBv3.1.1 | Windows 10 / Server 2016〜 | 事前認証整合性・強化暗号化 | ✅ 最優先 |
v1からv3への要塞化は、この順序で進めます。
- SMBv1の完全排除
- SMBv3による暗号化の強制
- 互換性の確認と対処
Step 1:SMBv1の無効化
現状確認(まずここから)
いきなり無効化する前に、現在の状態を確認しましょう。
# SMBv1の有効・無効を確認
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
# サーバー設定の確認(State: Disabled なら安全)
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol
SMBv1の無効化実行
# Windowsの機能としてのSMBv1を無効化(再起動が必要)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Restart
# サーバーサービス経由でも念のため無効化
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Confirm:$false
実行後はOSの再起動が必要です。業務時間外に計画的に実施してください。
なぜSMBv1は危険なのか?
- 脆弱な認証設計: バッファオーバーフローを含む多数の既知脆弱性があり、EternalBlueのような強力なエクスプロイトが公開されています。
- 暗号化の欠如: 通信が事実上平文で流れるため、中間者攻撃(MITM)に対して無力です。
- 過剰なブロードキャスト: ネットワークの冗長なトラフィックを生み出し、現代の帯域環境に適していません(正確には「冗長性が高い」設計)。
Microsoftも公式にSMBv1を非推奨とし、Windows 11およびWindows Server 2019以降では既定で無効・未インストールになっています。
ドメイン環境:GPOによる一括無効化
スタンドアロンではなくドメイン環境の場合、グループポリシー(GPO)でまとめて配布するのが効率的です。
グループポリシー管理エディター(GPME)の設定手順:
-
gpmc.mscを起動し、対象のGPOを編集 -
コンピューターの構成→基本設定→Windowsの設定→レジストリへ移動 - 新しいレジストリアイテムを作成し、以下を設定:
| 項目 | 値 |
|---|---|
| パス | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters |
| 名前 | SMB1 |
| 型 | REG_DWORD |
| 値 | 0 |
- GPOをリンクしてクライアントに適用(
gpupdate /forceで即時反映)
Step 2:SMBv3暗号化の強制(要塞化の核心)
SMBv1を排除しただけでは不十分です。SMBv2のみで通信している場合、暗号化されていないパケットがネットワーク上を流れているため、パケットキャプチャによる情報漏洩リスクが残ります。
SMBv3では以下のセキュリティ機能が利用できます。
| 機能 | 概要 |
|---|---|
| AES-128-GCM / AES-256-GCM暗号化 | 通信全体を暗号化し、盗聴を防ぐ。 |
| SMB署名の強化 | パケット改ざんを防止。v3ではパフォーマンスへの影響が極めて少ない。 |
| 事前認証整合性(v3.1.1) | 接続確立前のネゴシエーション改ざんを防ぐ。ダウングレード攻撃対策。 |
⚠ 暗号化強制前に必ず互換性を確認する
暗号化を強制する前に、接続クライアントのSMBバージョンを確認してください。後述の古い環境が残っていると、接続が一切できなくなります。
# 現在のSMB接続状況とDialectを確認
Get-SmbConnection
# Dialectが "3.1.1" や "3.0" でなく "2.x" や "1.0" のものに注意
サーバー全体で暗号化を強制する
# サーバー上のすべての共有に対して暗号化を必須に
Set-SmbServerConfiguration -EncryptData $true -Confirm:$false
# 設定確認
Get-SmbServerConfiguration | Select-Object EncryptData
特定の共有フォルダのみ暗号化する
まずは重要な共有だけに絞って適用するのが、段階的移行として安全です。
# 特定の共有に暗号化を設定
Set-SmbShare -Name "機密情報" -EncryptData $true
# 設定確認
Get-SmbShare -Name "機密情報" | Select-Object Name, EncryptData
クライアント側:非暗号化サーバーへの接続を拒否
クライアントが暗号化に対応していない古いサーバーへ誤接続しないよう設定します。これにより、組織内の全通信が強制的に暗号化されます。
# 暗号化非対応サーバーへの接続を拒否
Set-SmbClientConfiguration -RejectUnencryptedAccess $true -Confirm:$false
# 設定確認
Get-SmbClientConfiguration | Select-Object RejectUnencryptedAccess
Step 3:互換性の確認と対処
SMBv3暗号化を強制した場合、以下の環境では接続エラーが発生します。事前の棚卸しが必須です。
接続できなくなる可能性がある環境
| 環境 | 理由 | 対処 |
|---|---|---|
| Windows 7 / Server 2008 R2 | SMBv2.1までしか対応しない | OS更新(EOL済み)、または例外共有を設定 |
| 古いNAS・複合機 | Samba 3.x系など古い実装 | ファームウェア更新、または専用VLAN分離 |
| 古いLinuxサーバー |
smb.conf のmin/max protocolの設定次第 |
Samba 4.x以降に更新し min protocol = SMB3 を設定 |
トラブルシューティング
接続エラーが発生した場合、以下のコマンドで原因を特定できます。
# 現在の全SMB接続とDialectを確認
Get-SmbConnection | Select-Object ServerName, Dialect, Encrypted
# SMBサーバーの統計・エラーを確認
Get-SmbServerNetworkInterface
# イベントログでSMBの接続拒否を確認
Get-WinEvent -LogName "Microsoft-Windows-SMBServer/Security" -MaxEvents 50
まとめ:今日から実施するアクションリスト
SMBの要塞化は、以下の3ステップです。
[ ] 1. Get-SmbServerConfiguration で現状把握
[ ] 2. Disable-WindowsOptionalFeature で SMBv1 を無効化(要再起動)
[ ] 3. Get-SmbConnection で接続クライアントのDialectを棚卸し
[ ] 4. 互換性問題のある端末・機器をリストアップして対処
[ ] 5. Set-SmbServerConfiguration -EncryptData $true で暗号化強制
[ ] 6. Set-SmbClientConfiguration -RejectUnencryptedAccess $true でクライアントも強化
[ ] 7. 再度 Get-SmbConnection ですべてのDialectが3.x, Encrypted=True であることを確認
「繋がれば良い」設定から「安全に繋ぐ」設定へ。インフラ・セキュリティエンジニアとして、この要塞化は現代ネットワーク管理の基礎です。レガシー環境との互換性という現実的な障壁はありますが、段階的に進めることで必ず達成できます。