Site Tools


software:win:sec:enabletls

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
software:win:sec:enabletls [2022/02/04 18:32]
– removed - external edit (Unknown date) 127.0.0.1
software:win:sec:enabletls [2022/02/05 04:38] (current)
root
Line 1: Line 1:
 +====== Повышаем безопасность встроенных средств: включаем TLS 1.2, TLS 1.1 ======
 +Затрагивает только софт который использует системные API для SSL: IE, WebDav redirector, update client, RDP, SQL NLA, RRAS...\\
 +Не затрагивает софт который со своими крипто средствами, типа: Firefox, Opera и тп.\\
  
 +По умолчанию в Windows 7 (остальные смотрите сами) использует TLS1.0 и SSLv3, также не использует сильные алгоритмы хеширования, обмена ключами, шифрования и их связки.\\
 +Однако данные алгоритмы реализованы и могут быть включены.\\
 +
 +===== Предупреждение =====
 +**ВСЕ МОДИФИКАЦИИ НА СВОЙ СТРАХ И РИСК!!!**\\
 +.reg файлы не публикую специально, чтобы было время для обдумывания перед применением.\\
 +
 +1. Если у вас установлены КриптоПро или ещё какие либо сторонние/дополнительные крипто средства - значения по умолчанию будут отличатся и при правке параметров это нужно учитывать, иначе что то можно сломать и потом долго искать причину и средство.\\
 +
 +2. Есть реальная возможность сломать RDP на сервере выставив некоторые параметры, если других средств удалённого доступа (без TLS/SSL, типа telnet или ssh) не предусмотрено то придётся контактировать с ним физически.\\
 +
 +
 +===== Алгоритмы шифрования и обмена ключами =====
 +**Предупреждение**: микрософт довольно часто меняет эти параметры при установке обновлений!\\
 +Следите/восстанавливайте значение после установки обновлений самостоятельно.\\
 +
 +
 +В реестре, по адресу:
 +<code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002</code>
 +многостроковый параметр: Functions - определяет список доступных связок криптоалгоритмов и приоритет их использования в SSL/TLS\\
 +Значение по умолчанию
 +<code>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_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_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
 +TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
 +TLS_DHE_DSS_WITH_AES_128_CBC_SHA
 +TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
 +TLS_DHE_DSS_WITH_AES_256_CBC_SHA
 +TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
 +TLS_RSA_WITH_RC4_128_MD5
 +SSL_CK_RC4_128_WITH_MD5
 +SSL_CK_DES_192_EDE3_CBC_WITH_MD5
 +TLS_RSA_WITH_NULL_SHA256
 +TLS_RSA_WITH_NULL_SHA</code>
 +
 +**Включаем всё**
 +<code>TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521
 +TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
 +TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521
 +TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
 +TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
 +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521
 +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384
 +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521
 +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384
 +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
 +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521
 +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384
 +TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256
 +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521
 +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384
 +TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256
 +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521
 +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
 +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
 +TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521
 +TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
 +TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
 +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521
 +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
 +TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
 +TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521
 +TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
 +TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
 +TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
 +TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
 +TLS_RSA_WITH_AES_256_GCM_SHA384
 +TLS_RSA_WITH_AES_128_GCM_SHA256
 +TLS_RSA_WITH_AES_256_CBC_SHA256
 +TLS_RSA_WITH_AES_256_CBC_SHA
 +TLS_RSA_WITH_AES_128_CBC_SHA256
 +TLS_RSA_WITH_AES_128_CBC_SHA
 +TLS_RSA_WITH_RC4_128_SHA
 +TLS_RSA_WITH_3DES_EDE_CBC_SHA
 +TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
 +TLS_DHE_DSS_WITH_AES_256_CBC_SHA
 +TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
 +TLS_DHE_DSS_WITH_AES_128_CBC_SHA
 +TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA</code>
 +
 +Если сравнить, то видно что я добавил "сильные связки" и удалил совсем слабые.\\
 +Когда я удалил некоторые слабые варианты, то Windows Update (который через интернет, а не локальный WSUS) перестал работать, поэтому пришлось вернуть.\\
 +Список алгоритмов можно посмотреть тут: gpedit.msc, Конфигурация компьютера, Административные шаблоны, Сеть, Параметры настройки SSL - Порядок комплектов шифров SSL\\
 +в описании этого параметра есть все доступные алгоритмы.\\
 +Пользоваться групповой политикой не стал - ограничение в 1023 знака, в такое даже алгоритмы по умолчанию не вписываются.\\
 +
 +Результат, на примере IE11:\\
 +Было: SSL_PROTO:"TLSv1.2" SSL_CIPHER:"AES256-SHA256"\\
 +Стало: SSL_PROTO:"TLSv1.2" SSL_CIPHER:"ECDHE-RSA-AES256-SHA384"\\
 +(у меня на сервере жёстко заданы алгоритмы и для случая "было" согласование вообще не проходило пока я не добавлял более слабые связки алгоритмов)\\
 +
 +===== Алгоритмы ЭЦП в SSL/TLS =====
 +Ключ: <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010003</code>
 +многостроковый параметр: Functions - алгоритмы для ЭЦП в SSL/TLS (так же для работы с сертификатами)\\
 +
 +Значение по умолчанию
 +<code>ECDSA/SHA512
 +ECDSA/SHA384
 +ECDSA/SHA256
 +ECDSA/SHA1
 +RSA/SHA512
 +RSA/SHA256
 +RSA/SHA384
 +RSA/SHA1
 +DSA/SHA1</code>
 +Единственное, я немного переупорядочил их, на всякий случай.\\
 +Не так давно ECDSA/SHA512 и ECDSA/SHA384 в этом списке не было и страждущие добавляли их самостоятельно, но похоже какой то апдейт их туда добавил. Проверить не помешает.\\
 +
 +===== Включение/отключение протоколов TLS/SSL =====
 +SSLv3 - пора закапывать, IMHO.\\
 +TLS1.0 - в принципе тоже, но на него завязана работа RDP и много кто только на нём сидит до сих пор. Поэтому безболезненно отключить его нельзя.\\
 +Тем временем МС рекомендует:\\
 +<code>For new development, use Transport Layer Security 1.0.</code>
 +[[http://msdn.microsoft.com/en-us/library/windows/desktop/aa379810(v=vs.85).aspx]]\\
 +при этом 1.1 и 1.2 они оставляют в подвешенном состоянии.\\
 +
 +==== Отключаем SSL2 и SSL3 ====
 +<code>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0]
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
 +"DisabledByDefault"=dword:00000001
 +"Enabled"=dword:00000000
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
 +"DisabledByDefault"=dword:00000001
 +"Enabled"=dword:00000000
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0]
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client]
 +"DisabledByDefault"=dword:00000001
 +"Enabled"=dword:00000000
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]
 +"DisabledByDefault"=dword:00000001
 +"Enabled"=dword:00000000</code>
 +
 +==== Включаем TLS 1.1 и 1.2 ====
 +<code>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
 +"DisabledByDefault"=dword:00000000
 +"Enabled"=dword:ffffffff
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
 +"DisabledByDefault"=dword:00000000
 +"Enabled"=dword:ffffffff
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
 +"DisabledByDefault"=dword:00000000
 +"Enabled"=dword:ffffffff
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
 +"DisabledByDefault"=dword:00000000
 +"Enabled"=dword:ffffffff</spoiler>
 +
 +<spoiler title="TLS 1.0 - лучше не трогать/включено">
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
 +"DisabledByDefault"=dword:00000000
 +"Enabled"=dword:ffffffff
 +
 +[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
 +"DisabledByDefault"=dword:00000000
 +"Enabled"=dword:ffffffff</code>
 +На TLS 1.0 в венде много завязано намертво, его отключение ломает RDP (испробовано на себе) и как минимум WebDav (видимо в бинарнике зашито, больше он ничего не хочет).\\
 +
 +Подробности по включению/выключению: [[http://support.microsoft.com/kb/245030]]\\
 +
 +
 +===== Дополнительные настройки TLS/SSL =====
 +Раздел: <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL</code>
 +
 +**AllowInsecureRenegoClients**, **AllowInsecureRenegoServers** - разрешить пересогласование на небезопасные варианты. Однозначно 0.\\
 +
 +**DisableRenegoOnClient**, **DisableRenegoOnServer** - отключить пересогласование во время работы (насколько я понял про временный ключ шифрования). В дискуссиях/статьях упоминали что частое пересогласование - возможность DoS атаки, тк потребляет много ресурсов CPU.\\
 +Поставил 0: сервер у меня только RDP, а DoS-ить клиента не очень перспективно таким образом, к тому же функционал в принципе нужный.\\
 +Подробнее: [[http://www.atraining.ru/beast-move-from-ssl-to-tls/]]\\
 +
 +**UseScsvForTls** - если выставить 1 то это отключит механизм пересогласования для совместимости со старыми реализациями TLS 1.0 (Vista без сп1). Ставим 0, чтобы включить расширение Renegotiation Info (RFC5746).\\
 +Подробности: [[http://blogs.msdn.com/b/jpsanders/archive/2010/09/08/understanding-problems-with-ms10-049-kb-980436-and-ietf-rfc5746.aspx]]\\
 +[[http://support.microsoft.com/kb/980436]]\\
 +[[http://netsekure.org/2010/08/windows-ssltls-update-for-secure-renegotiation/]]\\
 +[[http://www.atraining.ru/beast-move-from-ssl-to-tls/]]
 +
 +**SendExtraRecord** - SSL/TLS 1.0 - защита от beast атак:\\
 +0 - вроде включено\\
 +1 - точно включено, но SQL и пр ломается\\
 +2 - патч совсем выключен, BEAST дырка точно включена.\\
 +[[http://support.microsoft.com/kb/2643584/ru]]\\
 +[[http://blogs.msdn.com/b/kaushal/archive/2012/01/21/fixing-the-beast.aspx]]\\
 +(тут рекомендуют использовать RC4 а патч выключать, но в RC4 нашли неприятные моменты и теперь его не рекомендуется использовать)\\
 +
 +
 +===== Утилита =====
 +И на последок, есть такая утилита: [[https://www.nartac.com/Products/IISCrypto/Default.aspx]]\\
 +{{:software:win:sec:iis_crypto.png|}}
 +
 +
 +===== PS =====
 +For fun: [[http://support.microsoft.com/kb/2643584]]\\
 +  * Many applications that use schannel are written so that the receiver side assumes application data will be packed into a single packet. This occurs even though the application calls schannel for decryption. The applications ignore a flag that is set by schannel. The flag indicates to the application that there is more data to be decrypted and picked up by the receiver. **This method does not follow the MSDN-prescribed method of using schannel. Because the security update enforces record-splitting, this breaks such applications.**
 +  * **Broken applications include Microsoft products and in-box components.** The following are examples of scenarios that may be broken when the SendExtraRecord registry value is set to 1:
 + * All SQL products, and applications that are built onto SQL.\\
 + * Terminal Servers that have Network Level Authentication (NLA) turned on. By default, NLA is enabled in Windows Vista and later versions of Windows.\\
 + * Some Routing Remote Access Service (RRAS) scenarios.\\
 +
 +
 +
 +{{tag>software howto windows security tls WebDAV}}
software/win/sec/enabletls.txt · Last modified: 2022/02/05 04:38 by root