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
Last revisionBoth sides next 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/04 19:00]
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.\\
  
software/win/sec/enabletls.txt · Last modified: 2022/02/05 04:38 by root