Trên IIS, làm cách nào để tôi vá lỗ hổng SSL 3.0 POODLE (CVE-2014-3566)?


53

Làm cách nào để vá CVE-2014-3566 trên hệ thống Windows Server 2012 chạy IIS?

Có bản vá nào trong Windows Update không, hay tôi phải thay đổi sổ đăng ký để tắt SSL 3.0 ?


1
Có một Microsoft Fix it 50495 trên trang MS KB mà bạn đã liên kết.
MattBianco

3
Tôi đã thử chạy Fix it 50495 trên Windows 2008 và không thành công với lỗi "Bản sửa lỗi Microsoft này không áp dụng cho hệ điều hành hoặc phiên bản ứng dụng của bạn." Ồ tốt
Josh

Câu trả lời:


58

Không có "bản vá". Đó là một lỗ hổng trong giao thức, không phải là lỗi trong quá trình thực hiện.

Trong Windows Server 2003 đến 2012 R2, các giao thức SSL / TLS được điều khiển bởi các cờ trong bộ đăng ký tại HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols.

Để vô hiệu hóa SSLv3, lỗ hổng POODLE có liên quan, hãy tạo một khóa con tại vị trí trên (nếu nó chưa xuất hiện) được đặt tên SSL 3.0và theo đó, một khóa con có tên Server(nếu nó chưa xuất hiện). Tại vị trí này ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server) tạo một giá trị DWORD được đặt tên Enabledvà đặt nó ở 0.

Vô hiệu hóa SSL 2.0, điều mà bạn cũng nên làm, được thực hiện theo cách tương tự, ngoại trừ việc bạn sẽ sử dụng một khóa có tên SSL 2.0trong đường dẫn đăng ký ở trên.

Tôi chưa thử nghiệm tất cả các phiên bản, nhưng tôi nghĩ có thể an toàn khi cho rằng khởi động lại là cần thiết để thay đổi này có hiệu lực.


3
khởi động lại không cần thiết trên Windows Server 2012 ít nhất. bạn có thể xác minh trước và sau tại poodlebleed.com bằng cách nhập URL và 443 cho cổng SSL
Simon

Cảm ơn, Bạn có biết tôi có nên tắt PCT không vì nó được cho là bị tắt theo mặc định và chưa bị vô hiệu theo cách này?
Đánh dấu Broadington

@Simon, bạn còn phải làm gì nữa để thay đổi có hiệu lực không? Tôi mới thực hiện cập nhật sổ đăng ký trên máy chủ Server 2012, nhưng vẫn nhận được báo cáo rằng SSL3 đã được bật.
Abe Miessler

Tôi không tin như vậy. Tôi giả sử bạn đang sử dụng iis và Apache của tôi và bạn đã kiểm tra trang web đó. Và bạn có chắc là bạn có khóa đăng ký chính xác?
Simon

* KHÔNG phải apache (Tôi không biết 'Apache của tôi' đến từ đâu!)
Simon

24

Để dễ cài đặt, tôi lấy tệp "vô hiệu hóa ssl 2 và 3.reg" này từ câu trả lời của Evan ở trên :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

12

Quyền hạn để vô hiệu hóa SSL2 và SSL3:

2..3 | %{ New-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL $_.0\Server" -Name Enabled -PropertyType "DWORD" -Value 0 -Force }

Thật không may, ở trên chỉ hoạt động nếu các khóa con đăng ký đã có mặt. Sẽ thật tuyệt khi thấy PS có thể tạo chúng nếu không tồn tại hoặc cập nhật chúng nếu có.
Jaans

Bạn có chắc không? Của tôi tạo ra chúng cho tôi. Nó có thể khác với các phiên bản thấp hơn của Powershell và Windows (Tôi đang sử dụng v2 trên Server 2008 R2)
Vasili Syrakis

2
Yup ... xem ảnh chụp màn hình được tải lên: i.imgur.com/rctFH4D.png Sử dụng PS 3.0 và WSMan 3.0.
Jaans


8

Đây là một PowerShell sẽ kiểm tra sự hiện diện của các khóa đăng ký, tạo chúng nếu cần và sau đó nhập các giá trị cần thiết để tắt SSL 2.0 và SSL 3.0

$regPath1 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 2.0'
$regPath2 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 2.0\Server'
$regPath3 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0'
$regPath4 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server'


If(!(Test-Path -Path $regPath1))
{
New-Item -Path $regPath1 -Force
}

If(!(Test-Path $regPath2))
{
New-Item -Path $regPath2 -Force
}
   New-ItemProperty -Path $regPath2 -Name DisabledByDefault -PropertyType DWORD -Value "1" -Force
   New-ItemProperty -Path $regPath2 -Name Enabled -PropertyType DWORD -Value "0" -Force 

If(!(Test-Path $regPath3))
{
New-Item -Path $regPath3 -Force
}

If(!(Test-Path $regPath4))
{
New-Item -Path $regPath4 -Force
}
   New-ItemProperty -Path $regPath4 -Name DisabledByDefault -PropertyType DWORD -Value "1" -Force
   New-ItemProperty -Path $regPath4 -Name Enabled -PropertyType DWORD -Value "0" -Force

Điều này có thể được triển khai bằng SCCM hoặc dòng lệnh - chỉ cần đảm bảo chạy công việc SCCM hoặc dòng lệnh với tư cách Quản trị viên. Một số trang web có thông tin đăng ký cho biết cần phải khởi động lại sau khi các khóa đăng ký được tạo và / hoặc sửa đổi.


4

Hoặc lấy một bản sao của IISCrypto và nhấp vào nút thực hành tốt nhất, sau đó bỏ chọn SSL 3.0 và sau đó áp dụng, sau đó khởi động lại


3

Bạn không phải tắt SSL3. Bạn có thể kích hoạt SSL3 và giảm nhẹ POODLE .

# Copy and paste this in PowerShell then restart your server
$cipherSuitesOrder = @(
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384',
    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256',
    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384',
    'TLS_RSA_WITH_AES_128_CBC_SHA256',
    'TLS_RSA_WITH_AES_128_CBC_SHA',
    'TLS_RSA_WITH_AES_256_CBC_SHA256',
    'TLS_RSA_WITH_AES_256_CBC_SHA',
    'TLS_RSA_WITH_RC4_128_SHA',
    'TLS_RSA_WITH_3DES_EDE_CBC_SHA',
    'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384'
)
$cipherSuitesAsString = [string]::join(',', $cipherSuitesOrder)
New-ItemProperty -path 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002' \
-name 'Functions' -value $cipherSuitesAsString -PropertyType 'String' -Force | Out-Null

Với các cài đặt này, bạn vẫn sẽ có hỗ trợ IE6 (với SSLv3 sử dụng RC4) và có cấu hình bảo mật thông minh hơn mức chấp nhận được. Chỉ IE6 và máy khách thực sự cũ sẽ sử dụng mật mã SSLv3 hoặc RC4.


3

Có một kịch bản PowerShell tốt giúp cấu hình IIS 7.5 & 8:

Tập lệnh PowerShell này thiết lập Microsoft Internet Information Server 7.5 và 8.0 (IIS) của bạn để hỗ trợ giao thức TLS 1.1 và TLS 1.2 với tính năng bảo mật Chuyển tiếp. Ngoài ra, nó còn tăng tính bảo mật cho các kết nối SSL của bạn bằng cách vô hiệu hóa SSL2 và SSL3 không an toàn và tất cả các mật mã không an toàn và yếu mà trình duyệt cũng có thể quay lại. Kịch bản này thực hiện các quy tắc thực hành tốt nhất hiện nay.

https://www.hass.de/content/setup-your-iis-ssl-perinf-forward-secrecy-and-tls-12


Hmm, không chắc tại sao điều này đã được bỏ phiếu. Tôi đã sử dụng tiện ích đó cho mình và nó hoạt động hoàn hảo.
David Thomas

Điều này có vẻ tốt nhưng ít nhất một anh chàng đã gặp vấn đề sau khi chạy nó - không biết nếu nó bị cô lập thì người khác nói rằng nó thật tuyệt.
Đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.