Windows 8.1をSMB3のみに制限し、SMB2接続を受け入れたり提供したりしないようにする方法(間接的、ハッキー、またはその他)はありますか?
私が見つけたのは、8.1ではSMB2とSMB3が同じスタックを共有しているため、SMB3に影響を与えずにSMB2機能を内部で無効にすることはできません(mrxsmb2などを強制終了することによって)。
ただし、ファイアウォール、一部のソフトウェア、セッションを対象とするポリシーや設定、または接続のプロトコル要件とアドバタイズされた機能を介して、効果的に閉じる方法が他にもある可能性があります(おそらくある意味で)そのSMB2は満たすことができません)、なしスタックを無効にします。
私のLANデバイスはいずれもSMB2接続を確立する必要がないため、オープンのままにして、不要な古いプロトコルのダウングレードを受け入れることはお勧めできません(SSLでのプロトコルダウングレードによる相互参照セキュリティ攻撃と古いSMB1の脆弱性を介した最近の攻撃)。しかし、そのバージョンのWindowsを実行しているデバイスでそれを無効にする方法はありますか?
まず、当時は答えがわからず、不完全だったので、お詫び申し上げます。私は今、はるかに明確で正しいものになるでしょう。
私はこれを自分でテストし(7と10を使用)、うまく機能します。 Windows8.1で動作しない理由はないはずです。 MicrosoftのTechnetドキュメンタリーの このページ から入手しました。残念ながら、これはSMBv2ファイル共有への接続を妨げるものではありませんが、SMBv2接続をブロックします。これは、SMB3セキュリティの重要な違いを提供します。
デフォルトでは、ファイル共有またはサーバーに対してSMB暗号化が有効になっている場合、SMB 3.0クライアントのみが指定されたファイル共有にアクセスできます。これにより、管理者は共有にアクセスするすべてのクライアントのデータを保護することを目的としています。
..。
–RejectUnencryptedAccess設定がデフォルト設定の$ trueのままになっている場合、暗号化対応のみSMB 3.0クライアントファイル共有へのアクセスを許可します(SMB 1.0クライアントも拒否されます)。
このパッセージは、SMB拒否するには、特定のサーバー共有に対して暗号化を有効にする必要があることを推測します。つまり、暗号化されない限り拒否されません。これらを使用して共有を暗号化する必要があります。昇格されたPowerShellで次のコマンドを実行します(拒否を有効にしているときに暗号化なしでその共有を拒否したくない場合は、$true
を$false
に置き換えることもできます)。
特定の共有を暗号化として設定するには:
Set-SmbShare –Name <sharename> -EncryptData $true
すべての共有を暗号化されたものとして設定します。これはおそらく必要なものです。これはデフォルト設定になり、特定の共有設定を上書きします):
Set-SmbServerConfiguration –EncryptData $true
これは、DWORD値をHKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
(false)から0
(true)に設定して、1
のEncryptData
キーを変更することによっても実行できます。次に、設定を有効にするためにコンピューターを再起動する必要があります(代わりに一部のサービスを再起動することもできます)。
共有を作成して暗号化するには:
New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true
このドキュメントでは、RejectUncreyptedAccessを有効にすると、SMBv3接続のみを受け入れるため、SMBv1は接続できなくなり、着信SMBv2接続も制限されると説明されています。
したがって、RejectUnencryptedAccessの値を$ trueに設定して有効にしていない場合、これらのコマンドはすべて無効になります次のコマンドを使用して、デフォルトで有効になります)。
Set-SmbServerConfiguration –RejectUnencryptedAccess $true
これは、DWORD値をHKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
(false)から0
(true)に設定して、1
のRejectUnecryptedAccess
キーを変更することによっても実行できます。次に、設定を有効にするためにコンピューターを再起動する必要があります(代わりに一部のサービスを再起動することもできます)。
参考までに:
SMBv2が拒否される技術的な理由は、暗号化されていないためではなく、効率が低く安全性の低い暗号化アルゴリズムを使用しているためです。 SMBv3はAES(Advanced Encryption Standard(1998年にリリース))を使用し、SMBv2はHMAC-Sha256(Security Hash Algorithm(2001年にNSAによってリリースされた))を使用します。 [着信HMAC-Sha256をブロックしようとしましたが、Windowsでは「弱い」アルゴリズムと見なされないため、ブロックしようとしても何もしませんでした。したがって、Sha1アルゴリズムのように無効にすることはできません]
このコマンドでSMBv1を無効にします(RejectUnencryptedAccessが有効で、すべての共有が暗号化されている場合は冗長であり、とにかく無効にしたいため):
Set-SmbServerConfiguration -EnableSMB1Protocol $false
SMBv2とSMBv3を一緒に有効にします(RejectUnecryptedAccessが有効になっている場合、SMBv2接続はブロックされます)。
Set-SmbServerConfiguration -EnableSMB2Protocol $true
SMBv3を使用しているときに着信SMBv2を無効にすることはできませんが、昇格されたPowerShellまたはコマンドプロンプトを使用してSMBv1クライアントを無効にすることにより、着信SMBv1を無効にすることができます。
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
Microsoftからの他の素晴らしい参考文献:
El8dN8によって提供された答えは正しいですが、何かを追加するだけです。
Windows 10 1607でいくつかのテストを行った後、SMBv3は「EnableSMB2Protocol」に関連付けられているようです。これを無効にすると、「EncryptData」:$ trueを使用しても、ネットワーク共有機能が失われます。すべてのSMBバージョンからのすべての着信接続が拒否されます(SMBv1が無効になっていると仮定します)。何らかの理由で、MicrosoftはSMBv2とv3を互いに完全に分離していません。