今すぐできるWannaCry対策:セキュリティパッチ適用詳説(3/3 ページ)
猛威を振るうランサムウェア「WannaCry」。必ずしも管理が行き届いていない企業内システムで、Windowsに対策パッチを急いで適用する方法は? 脆弱性の見つかったSMBv1を無効化する方法を追記。
SMBv1を無効化する
セキュリティパッチ適用と合わせて、もう1つ実施しておきたいことがある。それが「SMBv1(SMB 1.0、SMB1)の無効化」だ。
SMBv1とはSMB バージョン1.0のことで、Windows 2000のころから使われている古いファイル共有プロトコルである。そしてWannaCryが悪用したMS17-010の他、MS16-114のようにしばしば脆弱性が見つかっている。今後も、MS17-010と同じくらい危険な脆弱性が新たに発見される可能性は否定できない。
またWindows Vista/Server 2008以降のOS同士であれば、上位バージョンのSMB 2.0以降で通信できる(しかも性能やセキュリティ上の強度はでもSMBv1より優れている)。つまり、Windows XP/Server 2003以前の古いOSがない環境なら、あえてSMBv1を使う必要はない。SMBv1機能を削除しても、SMBv2/v3の機能は残っているので、ファイルサーバへのアクセスはそのまま行える。
SMBのバージョン | 対応しているWindows OS |
---|---|
SMB 1.0(SMBv1) | Windows 2000/XP/Vista/7/8/8.1/10、Windows 2000 Server/Windows Server 2003/2003 R2/2008/2008 R2/2012/2012 R2/2016 |
SMB 2.0 | Windows Vista/7/8/8.1/10、Windows Server 2008/2008 R2/2012/2012 R2/2016 |
SMB 2.1 | Windows 7/8/8.1/10、Windows Server 2008 R2/2012/2012 R2/2016 |
SMB 3.0 | Windows 8/8.1/10、Windows Server 2012/2012 R2/2016 |
SMB 3.02 | Windows 8.1/10、Windows Server 2012 R2/2016 |
SMB 3.11 | Windows 10、Windows Server 2016 |
SMBの各バージョンと、対応しているWindows OS Windows Vista/Server 2008以降のWindows OS同士であれば、バージョン2.0以降のSMBで通信できるので、SMB 1.0(SMBv1)を無効化してもファイル共有などのサービスを引き続き利用できる。詳細は「Windowsネットワークの基礎:ファイル共有プロトコルSMBの概要」を参照していただきたい。 |
マイクロソフトもSMBv1の使用を止めるように推奨している。
- Stop using SMB1[英語](マイクロソフト公式ブログ「Storage at Microsoft」)
ただし、前述のMS17-010のセキュリティパッチを適用しても、SMBv1は無効化されない(MS17-010の脆弱性を「回避」する方法として、SMB v1の無効化が紹介されている)。
そこで、SMBv1を無効化する方法を以下に紹介する。無効化するのは原則として、脆弱性が見つかっているサーバ機能である。SMBのサーバ機能とは、大まかにはネットワークファイル共有サービスでファイル共有を開く側に相当する。「サーバ」と呼ばれるものの、Windows 10などのクライアントWindows OSにも標準装備されているので、SMBv1無効化の対象にはサーバ/クライアント両方のWindows OSが含まれる。
設定作業・操作にはコマンドプロンプトまたはPowerShellを利用する。慣れればGUIより素早く設定できるだろう。
●Windows Vista/7やWindows Server 2008/2008 R2の場合
これらのWindows OSでは、次のレジストリエントリの設定を変えることでSMBv1を無効化できる。
項目 | 内容 |
---|---|
キーのパス | HKLM\SYSTEM\CurrentControlSet\Services\ LanmanServer\Parameters |
値の名前 | SMB1 |
値の型 | REG_DWORD |
値の内容 | 0: SMBv1が無効 1: SMBv1が有効(デフォルト) |
SMBv1を無効化するためのレジストリエントリ(Windows Vista/7、Windows Server 2008/2008 R2) 値「SMB1」に0を指定した後、システムを再起動するとSMBv1が無効化される。 |
管理者権限で開いたコマンドプロンプトで、以下のようにregコマンドを実行すると、SMBv1の無効化やその確認ができる。
C:\>reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v SMB1 ……SMBv1が有効か無効か確認する
エラー: 指定されたレジストリ キーまたは値が見つかりませんでした ……未設定(=有効)だと、このエラーが生じる
C:\>reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v SMB1 /t REG_DWORD /d 0 /f ……値「SMB1」に「0」を設定する
この操作を正しく終了しました。
C:\>reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v SMB1 ……再度、値「SMB1」を確認する
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
SMB1 REG_DWORD 0x0 ……今度は「0」が設定されている
C:\>shutdown /r /t 0 ……システムを再起動する
●Windows 8やWindows Server 2012の場合
これらのWindows OSでは、管理者権限で開いたPowerShellで次のコマンドレットを実行することでSMBv1を無効化できる。
PS C:\> Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol ……SMBv1が有効か無効か確認する
EnableSMB1Protocol
------------------
True ……「True」は「真」すなわちSMBv1は有効である
PS C:\> Set-SmbServerConfiguration -EnableSMB1Protocol $false -force ……SMBv1を無効化する
PS C:\> Get-SmbServerConfiguration | Select EnableSMB1Protocol ……再度確認する
EnableSMB1Protocol
------------------
False ……今度は「False」=「偽」すなわちSMBv1は無効化されている
PowerShellを管理者権限で開くには、[Shift]+[Ctrl]キーを押しながらタスクバーのPowerShellアイコンをクリックする。また、上記のコマンドレットを.ps1ファイルに保存して実行する場合、あらかじめSet-ExecutionPolicyコマンドレットで実行ポリシーを緩めておく必要がある。
システムの再起動は不要だ(実行するとすぐに反映される)。
●Windows 8.1/10の場合
これらのWindows OSでは、管理者権限で開いたPowerShellで次のコマンドレットを実行することで、SMBv1の機能そのものをシステムから削除できる。
PS C:\> Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol | Select-Object State ……SMBv1がシステムにインストール済みか確認する
State
-----
Enabled ……「Enabled」すなわちSMBv1はインストール済み
PS C:\> Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart ……SMBv1をシステムから削除する
警告: NoRestart が指定されているため、再起動は抑制されています。
Path :
Online : True
RestartNeeded : True ……「True」ならシステムの再起動が必要。「False」なら不要
……必要なら、ここでシステムを再起動する……
PS C:\> Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol | Select-Object State ……再度確認する
State
-----
Disabled ……今度は「Disabled」すなわちSMBv1は削除済み
この場合、SMBのサーバ機能だけではなくクライアント機能(SMBv1サーバに接続する側)も削除される。
●Windows Server 2012 R2/2016の場合
これらのWindows OSでは、管理者権限で開いたPowerShellで次のコマンドレットを実行することで、SMBv1をシステムから削除できる。
PS C:\> Get-WindowsFeature -Name FS-SMB1 ……SMBv1がシステムにインストール済みか確認する
Display Name Name Install State
------------ ---- -------------
[X] SMB 1.0/CIFS ファイル共有のサポート FS-SMB1 Installed ……「Installed」すなわちSMBv1はインストール済み
PS C:\> Uninstall-WindowsFeature -Name FS-SMB1 ……SMBv1をシステムから削除する
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True Yes SuccessRest... {SMB 1.0/CIFS ファイル共有のサポート}
警告: 削除処理を完了するには、このサーバーを再起動する必要があります。 ……これが表示されたらシステムの再起動が必要
……必要なら、ここでシステムを再起動する……
PS C:\> Get-WindowsFeature -Name FS-SMB1 ……再度確認する
Display Name Name Install State
------------ ---- -------------
[ ] SMB 1.0/CIFS ファイル共有のサポート FS-SMB1 Available ……今度は「Available」=「インストールできる」すなわちSMBv1は未インストール(削除済み)
この場合、SMBのサーバ機能だけではなくクライアント機能(SMBv1サーバに接続する側)も削除される。
●Windows XPやWindows Server 2003/2003 R2の場合
これらのWindows OSはSMBv2以降をサポートしていない。つまりSMBv1を無効化することはSMBそのものの無効化に等しく、ファイル共有機能が使えなくなるなど影響が大きい。ウイルス対策ソフトウェアやIPS(Intrusion Prevention System:不正侵入防御システム)といった別の手段で防御せざるを得ないだろう(言うまでもなく、Windows OSそのものをサポート中のバージョンにアップグレードした方がよい)。
本稿で紹介したパッチ適用方法は、WSUSなどのパッチ管理ツールはもちろん、Windows Updateと比べても原始的ではある。しかし、それだけに管理が行き届いていないシステムでも実施しやすいといえる。
また、wmicコマンドやsysteminfoコマンド、regコマンド、PowerShellコマンドレットはネットワーク経由でリモートPCの情報収集や設定変更ができる。Active Directoryドメインが構築済みで認証が容易なネットワーク環境であれば、こうした機能を活用することで作業の効率をもう少し高められるだろう。
WannaCryへの対策としては、本稿で紹介したセキュリティパッチ適用やSMBv1無効化の他にも存在する。詳細は次の記事などを参照していただきたい。
- 世界中で感染が拡大中のランサムウェアに悪用されているMicrosoft製品の脆弱性対策について(IPA)
- ランサムウエア "WannaCrypt" に関する注意喚起(JPCERT)
- ランサムウェア「WannaCry」対策ガイド rev.1(ラック)
- 「WannaCry 2.0」の内部構造を紐解く(三井物産セキュアデレクション公式ブログ)
- ランサムウェア「WannaCry/Wcry」のワーム活動を解析:侵入/拡散手法に迫る(トレンドマイクロセキュリティブログ)
- WannaCry : 理論が現実になったとき(マカフィー公式ブログ)
- WannaCrypt attacks: guidance for Azure customers[英語](マイクロソフト公式ブログ)
- 「WannaCry」感染の98%は「Windows 7」で「XP」はほぼゼロ(ITmediaニュース)
■更新履歴
【2017/05/23】SMBv1を無効化するための手順と注意点を追記しました。
【2017/05/17】初版公開。
「特集」
Copyright© Digital Advantage Corp. All Rights Reserved.