Ensure 'HTTP2' is set to 'Enabled' on Azure Application Gateway
Description
Enable HTTP/2 for improved performance, efficiency, and security.
HTTP/2 protocol support is available to clients that connect to application gateway listeners only. Communication with backend server pools is always HTTP/1.1.
Rationale
Enabling HTTP/2 supports use of modern encrypted connections.
Impact
Clients and backend services that do not support HTTP/2 will fall back to HTTP/1.1.
Audit Procedure
Using Azure Portal
- Go to
Application gateways. - Click the name of an application gateway.
- Under
Settings, clickConfiguration. - Ensure
HTTP2is set toEnabled. - Repeat steps 1-4 for each application gateway.
Using Azure CLI
Run the following command to list application gateways:
az network application-gateway list
For each application gateway, run the following command to get the HTTP2 setting:
az network application-gateway show --resource-group <resource-group> --name <application-gateway> --query enableHttp2
Ensure true is returned.
Using PowerShell
Run the following command to list application gateways:
Get-AzApplicationGateway
Run the following command to get the application gateway in a resource group with a given name:
$gateway = Get-AzApplicationGateway -ResourceGroupName <resource-group> -Name <application-gateway>
Run the following command to get the HTTP2 setting:
$gateway.EnableHttp2
Ensure True is returned.
Repeat for each application gateway.
Expected Result
All Application Gateways should have HTTP2 set to Enabled (enableHttp2 = true).
Remediation
Remediate from Azure Portal
- Go to
Application gateways. - Click the name of an application gateway.
- Under
Settings, clickConfiguration. - Under
HTTP2, clickEnabled. - Click
Save. - Repeat steps 1-5 for each application gateway requiring remediation.
Remediate from Azure CLI
For each application gateway requiring remediation, run the following command to enable HTTP2:
az network application-gateway update --resource-group <resource-group> --name <application-gateway> --http2 Enabled
Remediate from PowerShell
Run the following command to get the application gateway in a resource group with a given name:
$gateway = Get-AzApplicationGateway -ResourceGroupName <resource-group> -Name <application-gateway>
Run the following command to enable HTTP2:
$gateway.EnableHttp2 = $true
Run the following command to apply the update:
Set-AzApplicationGateway -ApplicationGateway $gateway
Repeat for each application gateway requiring remediation.
Default Value
HTTP2 is enabled by default.
References
- https://learn.microsoft.com/en-us/azure/application-gateway/features#websocket-and-http2-traffic
- https://learn.microsoft.com/en-us/cli/azure/network/application-gateway
- https://learn.microsoft.com/en-us/powershell/module/az.network/get-azapplicationgateway
- https://learn.microsoft.com/en-us/powershell/module/az.network/set-azapplicationgateway
CIS Controls
| Controls Version | Control | IG 1 | IG 2 | IG 3 |
|---|---|---|---|---|
| v8 | 2.2 Ensure Authorized Software is Currently Supported | x | x | x |
| v7 | 2.2 Ensure Software is Supported by Vendor | x | x | x |
Profile
Level 1 | Automated