手動調整Windows的TLS設定
在Azure VM上有個高風險警告,原本以為用之前「停用不安全的TLS版本」的IISCrypto工具處理即可,以下借用黑大的PowerShell取得IISCrypto套用的結果。
PS D:\> Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers'
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers
Name Property
---- --------
AES 128/128 Enabled : 4294967295
AES 256/256 Enabled : 4294967295
DES 56/56 Enabled : 0
NULL Enabled : 0
RC2 128/128 Enabled : 0
RC2 40/128 Enabled : 0
RC2 56/128 Enabled : 0
RC4 128/128 Enabled : 0
RC4 40/128 Enabled : 0
RC4 56/128 Enabled : 0
RC4 64/128 Enabled : 0
Triple DES 168 Enabled : 4294967295
PS D:\> Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\' -Recurse |
>> ForEach-Object {
>> $p = Get-ItemProperty -Path $_.PSPath
>> if ('Enabled' -in $p.PSObject.Properties.Name) {
>> $_.PSPath.Split(':')[2]
>> "Enabled = $($p.Enabled)"
>> }
>> }
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
Enabled = 4294967295
但沒想到前後調了幾天都沒讓它Pass,最後全部自己手動調整機碼才完成。(時間有點長是因為,調整完要等Azure去重新掃描,好像12小時才一次,因此一天調一次。)
TLS調整這部分的資訊蠻零散,修改前記得相關主題裡的注意事項要看一下,不然修改後出事,我可不負責哦。
.NET FRAMEWORK的TLS調整
.NET Framework有改程式碼
以及改系統設定
兩種方式,改系統設定等於是全域式修改,不用去動原始程式碼,會是比較建議的方式。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727
- DWORD: SchUseStrongCrypto
- VALUE: 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
- DWORD: SchUseStrongCrypto
- VALUE: 1
機碼意途也很明顯,就是強制使用強壯的演算法。
Windows Server
這是調整Windows Server,把不安全的Ciphers與TLS關閉不使用。
HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers
子目錄全部選關閉:
- DWORD: Enabled
- VALUE: 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\
子目錄有SSL及TLS相關Client及Server:
SSL 2.0\Client
SSL 2.0\Server
SSL 3.0\Client
SSL 3.0\Server
TLS 1.0\Client
TLS 1.0\Server
TLS 1.1\Client
TLS 1.1\Server
TLS 1.2\Client
TLS 1.2\Server
1 + 0
是關閉
- DWORD: DisabledByDefault
- VALUE: 1
- DWORD: Enabled
- VALUE: 0
0 + 1
是開啟
- DWORD: DisabledByDefault
- VALUE: 0
- DWORD: Enabled
- VALUE: 1
只留TLS 1.2開啟,其他都選關閉。
最後借黑大的PowerShell檢查一下,合格的只留TLS 1.2開啟(Enabled = 1
),其他都是關閉的狀態(Enabled = 0
)。
參考資料:
- https://learn.microsoft.com/zh-tw/dotnet/framework/network-programming/tls
- https://learn.microsoft.com/en-us/troubleshoot/azure/general/tls-support-deployment-guide
- https://learn.microsoft.com/zh-tw/archive/blogs/friis/disabling-tls-1-0-on-your-windows-2008-r2-server-just-because-you-still-have-one
- https://github.com/MicrosoftDocs/azure-docs.zh-tw/blob/master/articles/virtual-machines/troubleshooting/troubleshoot-rdp-internal-error.md
- https://blog.kkbruce.net/2023/01/disable-non-security-tls-version.html
- https://blog.darkthread.net/blog/disable-tls-1-0-issues/
- https://blog.darkthread.net/blog/ps-list-tls-protocol-status/
- https://medium.com/%E7%A8%8B%E5%BC%8F%E8%A3%A1%E6%9C%89%E8%9F%B2/windows-%E4%B8%BB%E6%A9%9F%E5%A6%82%E4%BD%95%E5%95%9F%E7%94%A8-tls-1-2-d72825f791b9
- https://thesecmaster.com/how-to-disable-tls-1-0-and-tls-1-1-on-windows-server/
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。