Hebikuzure's Tech Memo

2016年10月8日

TCP ポート 445 がブロックされていると Windows 10 に更新後共有フォルダーにアクセスできない

Filed under: Windows Tips — hebikuzure @ 6:43 PM

これも「MS16-110 適用後 NAS などの共有フォルダーに接続できない問題」の調べもの中に見つけた情報です。

Windows のファイル共有に利用される SMB ではサーバー側の待ち受けポートてして TCP 445 番ポートが利用されますが、445 番ポートが何らかの理由でブロックされている場合はレジストリの構成で 445 番の代わりに 139 番ポートを使うよう構成することができました。

構成するレジストリは以下の通りです。

キー : HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
名前 : EnableNetBTForSmb2
種類 : DWORD
設定値 : 1

参考情報 : TCP 445 番ポートが遮断されていると Windows 8、Windows Server 2012 以降の OS からファイル共有通信ができない

しかしこのレジストリ構成をして共有に接続していたクライアントを Windows 10 にアップグレードしたり、新規の Windows 10 にこのレジストリを構成しても、共有には接続できません。これは、上記の参考情報に書かれているように、このレジストリは Windows 10 では利用できず無視されるからです。

SMBv1 以前のファイル共有プロトコルはすでに非推奨となって久しく、将来的に利用できなくなると考えられるので、Windows 10 で SMB によるファイル共有を行う場合は、TCP 445 番ポートをブロックしないようにネットワークを構成しましょう。

広告

ファイル共有で利用されている SMB のバージョンを確認する方法

Filed under: Windows Tips — hebikuzure @ 6:42 PM

先日の「MS16-110 適用後 NAS などの共有フォルダーに接続できない問題」の記事の調べ物をしている際に見つけた Tips についてメモ代わりに投稿しておきます。

Windows でのファイル共有には SMB プロトコルが利用されていることは良く知られていますが、SMB は Windows 製品で長く使われ機能とセキュリティが強化されてきたため、SMBv1、SMBv2、SMBv3 といったバージョンやさらに細かなダイアレクト が存在しています。通常はサーバー – クライアント間で自動的にネゴシエーションが行われ適切なバージョン・ダイアレクトが利用されるため、こうした違いを意識する必要はないのですが、Windows 製品以外 (Linux 上の Samba や OS Ⅹ、NAS など) と接続する場合や、Windows 間でもトラブルシュートをする場合など、どのようなバージョン・ダイアレクトが利用されているのか確認したい場合があります。

そのような場合、クライアントで次のような方法で利用している SMB のバージョン・ダイアレクトを確認することができます。

クライアントで利用可能な SMB のバージョンを確認する

  1. コマンド プロンプトで以下を実行します
    sc.exe qc lanmanworkstation
  2. 結果がC:\>sc.exe qc lanmanworkstation
    [SC] QueryServiceConfig SUCCESS

    SERVICE_NAME: lanmanworkstation
    TYPE                              : 20  WIN32_SHARE_PROCESS
    START_TYPE                  : 2   AUTO_START
    ERROR_CONTROL          : 1   NORMAL
    BINARY_PATH_NAME     : C:\WINDOWS\System32\svchost.exe -k NetworkService
    LOAD_ORDER_GROUP   : NetworkProvider
    TAG                              : 0
    DISPLAY_NAME             : Workstation
    DEPENDENCIES             : Bowser
    : MRxSmb20
    : NSI
    SERVICE_START_NAME : NT AUTHORITY\NetworkService

    のように表示されます。

  3. DEPENDENCIES 欄を確認します。
    mrxsmb20 がある場合は SMBv2 (Windows 8/Windows Server 2012 以降は SMBv3 も) が有効です。
    mrxsmb10 がある場合は SMBv1 が有効です。

参考 : Windows Vista、Windows Server 2008、Windows 7 、Windows Server 2008 R2、Windows 8、Windows Server 2012 で 、SMBv1、SMBv2、SMBv3 を有効、または無効にする方法

SMB セッションで利用されている SMB のダイアレクトを確認する

実際に開いている SMB セッションでどのような SMB ダイアレクトが利用されているか確認するには、管理者として実行した PowerShell で以下を実行します。
Get-SmbConnection
開いている SMB セッションの利用しているダイアレクトや資格情報などの詳細情報が表示されます。

SMB セッションがないと何も表示されないので、利用ダイアレクトを調べたい相手 (サーバー) 上の共有を開いた状態で実行してください。簡単にはエクスプローラーで共有フォルダーを開いておけば OK です。

2016年10月4日

MS16-110 適用後 NAS などの共有フォルダーに接続できない問題

Filed under: Windows トラブル, Windows Info — hebikuzure @ 9:12 PM

概要

Windows 8.1/ 10 のコンピューターにマイクロソフト セキュリティ情報 MS16-110 の更新プログラムをインストール後、NAS (ネットワーク接続ハードディスク) などの共有フォルダーにアクセスできなくなる (NAS が見えなくなる、\\servername\share でアクセスできなくなる) などの現象に遭う場合があります。

MS16-110 の更新は以下の修正プログラムに含まれています

この現象は MS16-11- に含まれる以下の変更による影響です。

ユーザーが Microsoft Account (https://www.microsoft.com/account) を介して Windows にサインインし、「ゲストまたはパブリック ネットワーク」のファイアウォール プロファイルに接続する際、プライベートではない SMB リソースへの NT LAN Manager (NTLM) シングル サインオン (SSO) 認証を防ぐ (https://technet.microsoft.com/ja-jp/library/security/ms16-110 から引用)

MS16-110 で修正される脆弱性

この変更で修正される脆弱性は「Microsoft の情報漏えいの脆弱性 – CVE-2016-3352」です。この脆弱性がどういう物であるか簡単に説明しましょう。

Windows がネットワーク上の共有リソース (フォルダーやファイル) に SMB プロトコル (Windows 標準のファイルファイル共有プロトコル) でアクセスする際、ユーザーが改めて資格情報 (ユーザー名/パスワード) を入力しなくてもよいように、Windows のサインインに利用しているユーザーの資格情報を自動的に送信します (シングル サイン オン、SSO)。

この動作は便利ですが、自分や自分が所属している組織が管理していないサーバーに接続しようとした場合も資格情報が送信されますから、意図せず第三者に自分の資格情報が知られてしまう危険性があります。CVE-2016-3352 で指摘された脆弱性は、例えば公衆無線 LAN のようなセキュリティで保護されていないネットワークに接続している場合でも、Windows がネットワーク上の共有に SSO で資格情報を送信してしまう、というものです。
攻撃のシナリオとしては、公衆無線 LAN にファイル共有を有効にした罠マシンを接続しておき、囮の Web ページや電子メール内のリンク (file://malserver\share) を標的に踏ませて、送信されてきた資格情報を収集する、というようなものが考えられます

※実際には資格情報として送信されるのはユーザー名と「パスワードのハッシュ (パスワードを一定の方式で変換した文字列)」で、生のパスワードが送信される訳ではありませんが、パスワードの強度 (長さ、複雑さ) によってはハッシュから元のパスワードを容易に復元できてしまう場合があります。

Windows のサインインに利用しているアカウントがローカル アカウントであれば、仮にユーザー名とパスワードを知られても、そのアカウントが利用できるコンピューターに物理的にアクセスする (PC を直接操作する) か、そのアカウントが利用できるコンピューターが接続しているネットワーク 通常はファイアウォールで守られている に侵入しなければ、それを利用することはできません。
しかし Windows のサインインに Microsoft アカウントを利用している場合、その資格情報は、例えば Outlook.com のメールサービスや OneDrive、XBox のオンライン ゲームなど、さまざまなインターネット上のサービスで利用可能ですから、悪意のある第三者にとって利用価値は大いにあります。

MS16-110 による動作変更

この脆弱性を防ぐため、MS16-110 では以下の条件が満たされる場合、自動的な資格情報の送信をしないように修正されています。

  • Windows に Microsoft アカウントでサインインしている
  • ネットワークの場所 (ファイアウォール プロファイル) が「ゲストまたはパブリック ネットワーク」である
  • 共有にアクセスするための別の資格情報が設定されていない (= SSO を行う条件)

そのため、これらの条件の当てはまる場合、MS16-110 を含む更新プログラムのインストール後、NAS などへの接続の際に資格情報が送信されず、アクサスできなくなります。

回避策

回避策はこの条件を満たさないようにすればよいので

  1. ローカル アカウントでサインインする
  2. ネットワークの場所を「プライベート ネットワーク」 または「社内ネットワーク」に変更する
  3. 共有に接続するための資格情報をあらかじめ登録する

のいずれかになります。通常は 2. の方法が簡単で良いでしょう。

2. の手順は以下の通りです (Windows 10 Ver. 1607 の場合)

  1. [設定] – [ネットワークとインターネット] を開く
  2. 利用している接続に応じて [Wi-Fi] または [イーサネット接続] をクリック
  3. 接続している Wi-Fi やネットワーク アダプタをクリック
  4. [この PC を検出可能にする] をオンにする

何らかの事情でネットワークを「パブリック ネットワーク」のままにしておきたい場合は、資格情報マネージャー (コントロール パネル\ユーザー アカウント\資格情報マネージャー\Windows 資格情報) で NAS などの共有に対するユーザー名とパスワードを登録します。

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。