Control: 9.10 Ensure FTP deployments are disabled
Description
By default, Azure Functions, Web, and API Services can be deployed over FTP. If FTP is required for an essential deployment workflow, FTPS should be required for FTP login for all App Service Apps and Functions.
Azure FTP deployment endpoints are public. An attacker listening to traffic on a wifi network used by a remote employee or a corporate network could see login traffic in clear-text which would then grant them full control of the code base of the app or service. This finding is more severe if User Credentials for deployment are set at the subscription level rather than using the default Application Credentials which are unique per App.
Remediation
From Azure Portal
- Go to the Azure Portal
- Select
App Services
- Click on an app
- Select
Settings
and thenConfiguration
- Under
General Settings
, for thePlatform Settings
, theFTP state
should be set toDisabled
orFTPS Only
From Azure CLI
For each out of compliance application, run the following choosing either 'disabled' or 'FtpsOnly' as appropriate:
az webapp config set --resource-group <resource group name> --name <app name> --ftps-state [disabled|FtpsOnly]
From PowerShell
For each out of compliance application, run the following:
Set-AzWebApp -ResourceGroupName <resource group name> -Name <app name> - FtpsState <Disabled or FtpsOnly>
Default Value
By default, FTP based deployment is All allowed
.
Usage
Run the control in your terminal:
powerpipe control run azure_compliance.control.cis_v150_9_10
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run azure_compliance.control.cis_v150_9_10 --share
SQL
This control uses a named query:
appservice_ftp_deployment_disabled