SMBの暗号化設定
SMB version 3 以降では通信を暗号化する機能があります。ただし、デフォルトでは無効ですので明示的に設定する必要があります。
Windows Server での有効化手順を以下に示します。
1. サーバーマネージャーの「ファイルサービスと記憶域サービス」の「共有」をクリックし、中央ペインの共有フォルダを右クリックし、「プロパティ」をクリック
2. 「設定」をクリックし、「データ アクセスの暗号化(E)」にチェックを入れ、OKをクリック
以上です。検証時は再起動無しで暗号化ができるようになりました。(クライアント側はセッションを切る必要がある)
SMBのバージョンとSMB暗号化の確認方法
クライアント側で PowerShell を管理者権限で起動します。
SMB のバージョンは [ Get-SmbConnection ] コマンドで確認できます。Dialect の列を確認します。以下の例では SMB バージョン 3.1.1 であることが分かります。
PS C:\> Get-SmbConnection ServerName ShareName UserName Credential Dialect NumOpens ---------- --------- -------- ---------- ------- -------- 192.168.0.22 test DESKTOP-BNF7OFU\test user DESKTOP-BNF7OFU\administrator 3.1.1 4
「アクセスが拒否されました」と出る場合は PowerShell を管理者権限で起動して再度試して下さい。
次に、暗号化されているかどうかを確認するには以下のようにします。
PS C:\> get-smbconnection | select-object -property * SmbInstance : Default ContinuouslyAvailable : False Credential : DESKTOP-BNF7OFU\administrator Dialect : 3.1.1 Encrypted : True NumOpens : 3 Redirected : False ServerName : 192.168.0.22 ShareName : test Signed : False UserName : DESKTOP-BNF7OFU\test user PSComputerName : CimClass : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...} CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
Encrypted が True となっていることが分かります。
SMBのセッション数や開いているファイルの確認方法
SMB サーバ、つまりファイルサーバ側でセッション数やファイル数を確認してみましょう。
1. Windows ボタンを右クリックし、「コンピューターの管理(G)」を開きます。
2.「共有フォルダー」の「セッション」をクリックします。
中央ペインの行数がセッション数です。上記の例は 2 セッションになります。「セッション」の下にあるように、「開いているファイル」も確認することができます。
SMBv3のパケットキャプチャ (暗号化なし、あり)
パケットキャプチャも見てみましょう。
以下は暗号化前で 500M.dat (ファイルサイズ : 2KiB) というファイルを SMB v3.1.1 で転送したときのものです。
SetInfo Response の後の 2 パケット (赤枠とその次のパケット) が TCP セグメンテーションで分かれていますが、この 2 パケットで [Write Request ] として Length 2048 Bytes の 500M.dat を転送したことが分かります。
赤枠のパケットのペイロードを見ると「abcedfghijklmn...」となっています。これは 500M.dat のファイルの中身になります。(メモ帳で書きました。)
これが暗号化されると以下のようになります。
ところで、Wireshark 上では Protocol の列が「SMB2」になっていますね。SMB 3.1.1 等でもそのように表記されてしまうようです。
SMB のバージョン (Dialect : だいあれくと) は TCP 3way Handshake 直後の [Negotiate Request] と [Negotiate Respoinse] でネゴシエーションされます。
以下は左側が Request, 右側が Response になります。Request でクライアントがバージョンを複数案提示し、Response でサーバがバージョンを 3.1.1 に指定しています。
パケットキャプチャ (pcapng) は以下からダウンロードできます。
コメント