• TLS / SSL密码强化的建议


    TLS / SSL密码强化的建议

    传输层安全性(TLS)及其前身安全套接字层(SSL)是广泛使用的协议,旨在通过身份验证,加密和完整性来保护客户端和服务器之间的数据传输安全。

    与常见假设相反,TLS / SSL不仅是网站和Web应用程序中广泛使用的技术(使用HTTP协议),而且TLS / SSL也被其他一些服务和协议广泛使用,包括但不限于电子邮件服务器( SMTP,POP和IMAP协议),FTP服务器,聊天服务器(XMPP协议),虚拟专用网络(TLS / SSL VPN),网络设备。

    为了保护正在传输的数据,TLS / SSL使用一个或多个密码套件密码套件是认证,加密和消息认证码(MAC)算法的组合。所有这些都在协商TLS / SSL连接的安全设置以及数据的安全传输时使用。

    以下一些是密码套件可以使用的算法的示例。

    功能算法
    密钥交换RSA,Diffie-Hellman,ECDH,SRP,PSK
    认证RSA,DSA,ECDSA
    批量密码RC4,3DES,AES
    消息验证HMAC-SHA256,HMAC-SHA1,HMAC-MD5

    除了在若干监管标准中的要求之外,主要浏览器在没有TLS的情况下将站点标记为“不安全”,它也可能被视为服务网站和Web应用程序的要求。然而,获得正确的TLS实施可能会比预期的要简单一些。最糟糕的是,糟糕的TLS配置可能会提供虚假的安全感,同时使网站和Web应用程序容易受到一系列攻击。

    许多常见的TLS配置错误在于密码套件选择不当。旧的或过时的密码套件,尤其是那些遭受各种攻击的密码套件,可能允许攻击者在传输过程中成功拦截或篡改秘密数据。以下是要对TLS / SSL实施进行的推荐配置列表。

    禁用SSL 2.0和SSL 3.0

    SSL 2.0是1995年第一个公开发布的SSL版本。此版本的SSL包含许多导致SSL 3.0引入的安全问题。SSL 3.0于1996年发布,完全重新设计了协议。

    由于SSL2.0中出现的问题,协议使用起来不安全,应该完全禁用。
    由于POODLE(Padding Oracle On Downgraded Legacy.Encryption)漏洞,SSL 3.0使用起来也不安全,应该被禁用以避免攻击者检索到安全连接的明文。此外,Elliptic Curve Cryptography(本文稍后将讨论)不能与SSL3.0一起使用。

    Internet Explorer 6是唯一仍然使用SSL3.0的浏览器。因此,除非仍然需要支持旧版Internet Explorer 6浏览器,否则应禁用SSL 3.0,如稍后所述。

    禁用TLS 1.0和1.1

    除非需要支持旧版浏览器,否则还应禁用TLS 1.0和1.1。PCI DSS规定自2018年6月30日起不再使用TLS 1.0,并强烈建议禁用TLS 1.1; 因为这些协议可能会受到FREAK,POODLE,BEAST和CRIME等漏洞的影响。

    除非需要支持旧版浏览器,否则还应禁用TLS 1.0和1.1。PCI DSS规定自2018年6月30日起不再使用TLS 1.0,并强烈建议禁用TLS。如果仍然支持TLS 1.0是业务需求,强烈建议禁用TLS 1.0压缩以避免CRIME攻击

    此外,禁用弱密码也很重要。应禁用DES和RC4等弱密码。DES可以在几个小时内被破坏,而RC4被发现比以前想象的要弱。虽然可能已经建议过去使用RC4来缓解BEAST攻击,但鉴于对RC4密码的最新攻击,微软再次发布了一个建议还值得注意的是,PCI DSS也禁止使用RC4批量密码。

    禁用TLS 1.0和1.1可能会影响以下用户代理(及其旧版本)(不同操作系统上的特定用户代理版本可能会有所不同)。

    • Android 4.3
    • Chrome 29
    • Firefox 26
    • Internet Explorer 10
    • Java 6u45,7u25
    • OpenSSL 0.9.8y
    • Safari 6.0

    组态

    根据您的业务用例(例如,需要支持旧版浏览器和法规要求),您可能需要选择稍微不同的密码套件配置。Mozilla的SSL配置生成器可以用于获得根据您的要求使用不同的浏览器“配置文件”(现代,中间和旧配置文件)的最佳TLS配置。

    以下是现代配置文件的细分(最老的兼容客户端:Firefox 27,Chrome 30,Windows 7上的Internet Explorer 11,Edge,Opera 17,Safari 9,Android 5.0和Java 8)

    根据所讨论的Web服务器(例如Apache HTTP Server,Nginx ...),启用/禁用TLS协议和支持的TLS密码套件的语法会略有不同。

    Nginx的

    # Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
    ssl_protocols TLSv1.2;
    
    # Enable modern TLS cipher suites
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    
    # The order of cipher suites matters
    ssl_prefer_server_ciphers on;

    Apache HTTP Server

    # Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
    SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
    
    # Enable modern TLS cipher suites
    SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    
    # The order of cipher suites matters
    SSLHonorCipherOrder     on
    
    # Disable TLS compression
    SSLCompression          off
    
    # Necessary for Perfect Forward Secrecy (PFS)
    SSLSessionTickets       off

    下表将上面的密码套件字符串分解为优先顺序(最佳密钥交换算法/最强加密优先)。

       - 此处提供了有关OpenSSL支持的密码的更多信息
    订购密钥交换算法认证算法批量加密算法Mac算法
    #1椭圆曲线Diffie-Hellman(ECDH)椭圆曲线数字签名算法(ECDSA)Galois计数器模式下的AES 256(AES256-GCM)SHA384
    #2椭圆曲线Diffie-Hellman(ECDH)RSAGalois计数器模式下的AES 256(AES256-GCM)SHA384
    #3椭圆曲线Diffie-Hellman(ECDH)椭圆曲线数字签名算法(ECDSA)ChaCha20(CHACHA20)POLY1305
    #4椭圆曲线Diffie-Hellman(ECDH)RSAChaCha20(CHACHA20)POLY1305
    #5椭圆曲线Diffie-Hellman(ECDH)椭圆曲线数字签名算法(ECDSA)Galois计数器模式下的AES 128(AES128-GCM)SHA256
    #6椭圆曲线Diffie-Hellman(ECDH)RSAGalois计数器模式下的AES 128(AES128-GCM)SHA256
    #7椭圆曲线Diffie-Hellman(ECDH)椭圆曲线数字签名算法(ECDSA)AES 256(AES256)SHA384
    #8椭圆曲线Diffie-Hellman(ECDH)RSAAES 256(AES256)SHA384
    #9椭圆曲线Diffie-Hellman(ECDH)椭圆曲线数字签名算法(ECDSA)AES 128(AES128)SHA256
    #10椭圆曲线Diffie-Hellman(ECDH)RSAAES 128(AES128)SHA256

    该字符串在现代浏览器和TLS / SSL客户端中提供最强的加密(Galois计数器模式中的AES仅在TLS 1.2中受支持)。此外,如果服务器和TLS / SSL客户端都支持它,则字符串还提供Perfect Forward Secrecy(SSLSessionTicket必须设置s才能off在Apache HTTP Server中使用)。






  • 相关阅读:
    python笔记 函数初识
    老男人面试第八家第九家-支付和银行外包
    老男人面试第八家第九家-支付和银行外包
    老男人面试第八家第九家-支付和银行外包
    windows下mysql 5.7以上版本安装及遇到的问题
    windows下mysql 5.7以上版本安装及遇到的问题
    [数据库基础]——图解JOIN
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/xuegqcto/p/10681774.html
Copyright © 2020-2023  润新知