この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
サービス・システムはセキュアでなければいけません。
システムのセキュリティが強固であるかは、脆弱性診断サービスを利用して調べることができます。
実際に診断してみると、診断結果に「設定変更が"必須"」の検出結果がでることがありますよね。
特にSSL/TLS の暗号化プロトコルに関して、TLS1.2以上が推奨されている現在、脆弱性が確認されている"TLS 1.0,TLS 1.1"の無効化がされていないと検知されるのです。
対応に困らないよう、"TLS 1.0,TLS 1.1"無効化の方法を紹介します。
TLS 1.0,TLS 1.1を無効化してみる
■TLSとは
インターネットで買い物をするときに、クレジットカード情報や個人情報を入力すると思います。このデータが悪意のある第三者に見られたら、大変なことですよね。このデータ通信を暗号化して守っているのが、TLS、またの名をSSL/TLSです。
TLSとは、Transport Layer Securityの略です。総務省にSSL/TLSについての詳しい説明がありますので、紹介します。
現在、クレジットカード番号や個人情報を扱う多くのWebサイトでは、通信途中での傍受やなりすましによる情報漏洩を防ぐ目的で、SSL/TLSを利用しています。
利用者がSSL/TLSを利用できるサーバーとデータをやり取りする場合には、Webサーバーと利用者のコンピュータが相互に確認を行いながらデータを送受信するようになるため、インターネットにおける通信内容の暗号化およびなりすましの防止が実現されます。(総務省-国民のための情報セキュリティサイトより)
また、TLSにはバージョンがあり、2023年3月現在の最新はTLS 1.3です。
- TLS 1.0(非推奨)
- TLS 1.1(非推奨)
- TLS 1.2
- TLS 1.3
"独立行政法人情報処理推進機構"から発表されている「TLS 暗号設定ガイドライン」を読むと、TLS 1.0、TLS 1.1はダウングレード攻撃への耐性がないという"脆弱性"が見つかっています。
脆弱性対策として、OSでTLS 1.0、TLS 1.1を無効化しましょう。
■レジストリとは
TLS 1.0とTLS 1.1を無効化する設定は、レジストリエディター利用します。
レジストリとはWindowsOSで利用される設定情報が詰まった、大事なデータベースです。間違った編集を行うと、OSの再インストールが必要になるレベルです。
Microsoftの公式webサイトにも以下の警告文が書かれています。
警告: レジストリ エディターを使用する場合は、注意が必要です。レジストリを誤って編集すると、オペレーティング システムを完全に再インストールする必要がある重大な問題が発生し、データが失われる可能性があります。非公式のソースによって提案される編集は避ける。保護を強化するには、正式に公開されたMicrosoft ドキュメントに基づいて編集を行う前に、レジストリをバックアップしてください。その後、問題が発生した場合に復元できます。(Microsoft-Windows10でレジストリ エディターを開く方法)
レジストリ編集に関しては、正しい情報と検証を行ったうえで作業していきましょう。
■TLS 1.0,TLS 1.1無効化手順
それでは、TLS 1.0,TLS 1.1の無効化設定を行っていきます。
※レジストリを編集しますので、バックアップをとり、事前の検証を行ったうえで作業をしてください。
↓ホーム画面でwindowsキー+Rを押し、[ファイル名を指定して実行]ウィンドウを表示します。名前欄に[regedit]を入力し、[OK]を押してください。
↓レジストリエディターが表示されます。
↓パスに以下のパスを入力し、TLSに関するキーがあるか確認します。
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
↓[Protocols]にキーが設定されていないことを確認しましたので、TLSキーを追加して無効化設定をします。
以下のコマンドで設定できますので、要件に応じて選択してください。
●TLS 1.0をOSとして無効にする場合
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
●TLS 1.1をOSとして無効にする場合
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
わたしはTLS 1.0,TLS 1.1両方ともをOSとして無効にします。
↓コマンドプロンプトを管理者権限で起動します。
↓以下のコマンドを打ちます。
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server” /v Enabled /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client” /v DisabledByDefault /t REG_DWORD /d 1 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server” /v DisabledByDefault /t REG_DWORD /d 1 /f
↓"The operation completed successfully."と表示されたら、成功です。権限が足りないと、アクセスエラーが出ます。
↓無効化の設定がされたかレジストリエディターを見てみます。Protocols以下にTLS 1.0,TLS 1.1のServerとClientのキーが作られていることが確認できました。
↓各キーの値も設定されているか確認しましょう。
EnabledがOSで有効/無効にするかを決めるレジストリです。
- 0:無効
- 1:有効
DisabledByDefaultはアプリケーションが明示的にSSL/TLSのバージョンを指定していない場合に、OSが自動的にそのバージョンのSSL/TLS通信を行うかどうかを決定します。
- 0:有効
- 1:無効
設定変更は以上です。
本当に無効化されたか知りたいところなのですが、日本マイクロソフトWindowsSupportチームの記事を見ると、
レジストリによって各プロトコルを無効化した後に、実際にプロトコルが無効化されていることを確認する方法についてお問い合わせもいただきます。
OS としてコマンドなどで確認できる方法は準備されておりませんので、レジストリが正しく設定されているかをご確認いただければ問題ございません。(Microsoft-SSL/TLS プロトコル バージョンの有効化と無効化より)
とのことです。
私が現在関わっているプロジェクトで、全く同じ設定を行いました。近日中に脆弱性スキャンがありますので、書ける範囲で後日結果を追記します。
まとめ:WindowsOSで利用される暗号化プロトコルTLS 1.0,TLS 1.1を明示的に無効化する
インフラエンジニアとして、セキュリティレベルの高いシステム・技術の提供は大事なスキルだと思います。
今後もセキュリティに関して学び、発信していきますね。
参考リンク:Microsoft Japan Windows Technology Support Blog
↓ほかの協栄情報メンバーも"WindowsOS"に関する記事を公開しています。ぜひ参考にしてみてください。
■WINDOWSサーバーのファイアウォールを無効にするコマンド(dapeng)
https://cloud5.jp/windows-firewall/
■WindowsでBashシェルを実行する!その1-WSL2にUbuntuをインストール(小林 剛)
https://cloud5.jp/windows_wsl2-ubuntu/
■Powershellからカレントディレクトリを開く(liyo)
https://cloud5.jp/powershell_open_command/