在 Qualys SSL Labs SSL 测试中获得 A+ 评级的秘技 2020版 - F5 BIG-IP

作者:gc(at)sysin.org,主页:www.sysin.org

1. F5 BIG-IP

F5 BIG-IP 默认 B 级别(本例基于当前最新的 BIG-IP 16.0.0)

TLS 1.2 + HSTS + No Warning + TLS_FALLBACK_SCSV = A+

(No Warning 即受信任 SSL 证书,TLS_FALLBACK_SCSV F5 默认支持)

故:A 级别 + 开启 HSTS = A+,推荐启用 TLSv1_3 和 HTTP/2

其他应用交付产品可以参照 F5 配置

Ciphers 配置:A 级别 (TLSv1.2)

根据2020年1月算法变更,需要 TLSv1.2 及以上版本才能获得 A,新的 A 级别如下:

ECDHE+AES-GCM:ECDHE+AES-GCM:ECDHE+AES:ECDHE+3DES:RSA+AES-GCM:RSA+AES:RSA+3DES:-MD5:-RC4:-SSLv3:-TLSv1:-TLSv1_1

或者:

ECDHE+AES-GCM:ECDHE+AES:ECDHE+3DES:RSA+AES-GCM:RSA+AES:RSA+3DES:-MD5:-RC4:-SSLv3:-TLSv1:-TLSv1_1

F5 Cipher TLS 版本写法(与 nginx 和 apache 略有不同):

TLSv1
TLSv1_1
TLSv1_2
TLSv1_3

执行步骤:

编辑 SSL Profile,修改 Ciphers,将默认 Default 替换上述内容。

启用 HSTS

HSTS(HTTP Strict Transport Security,RFC6797),即 HTTP 严格安全传输,是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。HSTS 的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。服务器开启 HSTS 的方法是,当客户端通过 HTTPS 发出请求时,在服务器返回的超文本传输协议响应头中包含 Strict-Transport-Security 字段。

Preload List:让防御更加彻底

HSTS 存在一个比较薄弱的环节,那就是浏览器没有当前网站的 HSTS 信息的时候,或者第一次访问网站的时候,依然需要一次明文的 HTTP 请求和重定向才能切换到 HTTPS,以及刷新 HSTS 信息。而就是这么一瞬间却给攻击者留下了可乘之机,使得他们可以把这一次的 HTTP 请求劫持下来,继续中间人攻击。针对这种攻击,HSTS 也有应对办法,那就是在浏览器里内置一个列表 Preload List,只要是在这个列表里的域名,无论何时、何种情况,浏览器都只使用 HTTPS 发起连接。这个列表由 Google Chromium 维护,FireFox、Safari、IE等主流浏览器均在使用。

可以通过官网(https://hstspreload.org),查询网站是否在 Preload List,可以申请将网站加入到 Preload List

执行步骤:

v12 及以上版本直接在 TMUI 中 Enabling HSTS in the HTTP profile 或者使用 iRuels

v11 及以下可以只能通过 iRules 实现

### iRule for HSTS HTTP Virtuals ###
when HTTP_REQUEST {
HTTP::respond 301 Location "https://[HTTP::host][HTTP::uri]"
}
### iRule for HSTS HTTPS Virtuals ###

## 31536000 sec = 1 Year

when HTTP_RESPONSE {
 HTTP::header insert Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
}

OR

when HTTP_RESPONSE {
 HTTP::header insert Strict-Transport-Security "max-age=31536000; includeSubDomains"
}

其中:

  • max-age 是必选参数,是一个以秒为单位的数值,它代表着 HSTS Header 的过期时间,通常设置为 1年,即 31536000秒。
  • includeSubDomains 是可选参数,如果包含它,则意味着当前域名及其子域名均开启 HSTS 保护。
  • preload 是可选参数,只有当你申请将自己的域名加入到浏览器内置列表的时候才需要使用到它。

启用 TLSv1_3

BIG-IP v14 开始支持 TLSv1_3(In BIG-IP 14.0.0, the BIG-IP system adds limited support for Transport Layer Security (TLS) 1.3. Starting in BIG-IP 14.1.0.1 and later, this support was updated to provide production level support for TLS 1.3.)

默认没有启用:By default, TLS 1.3 is disabled. To enable TLS 1.3, you must remove the No TLSv1.3 option from the Enabled Options list in the Configuration utility for the Client SSL and Server SSL profiles

You can view a list of TLS 1.3 supported ciphers and groups using the following TMOS Shell (tmsh) commands:

  • To view the supported client-side ciphers, use the following command:

    tmsh run util clientssl-ciphers TLSv1_3

  • To view the supported server-side ciphers, use the following command:

    tmsh run util serverssl-ciphers TLSv1_3

配置启用 TLSv1_3

编辑 ClientSSL Profle:

Ciphers:选择 Cipher Group,下拉选择 f5-secure

Options:Options List…

Enabled Options,

Disable No TLSv1.3

添加,No TLSv1 和 TLSv1.1,保留默认的“Don’t insert empty fragments”

配置 HTTP/2

详见官方文档

配置 HTTP/2 就是在启用 HTTP profile 的 VS 上关联一个 HTTP/2 profile,核心参数配置任然在原有的 HTTP profile 上。

特殊配置是 SSL profile 要取消勾选 Renegotiation,其他都可以使用默认配置。

TLS-FALLBACK-SCSV

TLS-FALLBACK-SCSV(TLS Fallback Signaling Cipher Suite Value)是 OpenSSL 的一种阻止协议降级攻击的特性和机制。F5 BIG-IP,Nginx 和 Apache httpd 的 HTTPS 皆基于 OpenSSL 实现,符合要求的 OpenSSL 版本即可支持。

Poodle and TLS-FALLBACK-SCSV

SSLv3 allows exploiting of the POODLE bug. This is one more major reason to disable this.

Google have proposed an extension to SSL/TLS named TLS FALLBACK SCSV that seeks to prevent forced SSL downgrades. This is automatically enabled if you upgrade OpenSSL to the following versions:

  • OpenSSL 1.0.1 has TLS FALLBACK SCSV in 1.0.1j and higher.
  • OpenSSL 1.0.0 has TLS FALLBACK SCSV in 1.0.0o and higher.
  • OpenSSL 0.9.8 has TLS FALLBACK SCSV in 0.9.8zc and higher.

TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks。

猜你喜欢

转载自blog.csdn.net/netgc/article/details/108242430
SSL
今日推荐