Skip to content

Commit 244eecd

Browse files
authored
Merge pull request #78925 from ccompy/june6
small updates
2 parents 339a3f3 + 9025eb6 commit 244eecd

File tree

5 files changed

+90
-66
lines changed

5 files changed

+90
-66
lines changed

articles/app-service/app-service-hybrid-connections.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.workload: na
1313
ms.tgt_pltfrm: na
1414
ms.devlang: na
1515
ms.topic: article
16-
ms.date: 07/26/2018
16+
ms.date: 06/06/2019
1717
ms.author: ccompy
1818
ms.custom: seodec18
1919

@@ -39,7 +39,6 @@ When your app makes a DNS request that matches a configured Hybrid Connection en
3939
> This means that you should try to always use a DNS name for your Hybrid Connection. Some client software does not do a DNS lookup if the endpoint uses an IP address instead.
4040
>
4141
42-
4342
### App Service Hybrid Connection benefits ###
4443

4544
There are a number of benefits to the Hybrid Connections capability, including:
@@ -137,7 +136,7 @@ To add one or more Hybrid Connections to your HCM:
137136
2. Select **Configure another Hybrid Connection**.
138137
![Screenshot of Configure New Hybrid Connections][8]
139138

140-
1. Sign in with your Azure account.
139+
1. Sign in with your Azure account to get your Hybrid Connections available with your subscriptions. The HCM does not continue to use your Azure account beyond that.
141140
1. Choose a subscription.
142141
1. Select the Hybrid Connections that you want the HCM to relay.
143142
![Screenshot of Hybrid Connections][9]
@@ -224,7 +223,9 @@ The status of "Connected" means that at least one HCM is configured with that Hy
224223

225224
The primary reason that clients cannot connect to their endpoint is because the endpoint was specified by using an IP address instead of a DNS name. If your app cannot reach the desired endpoint and you used an IP address, switch to using a DNS name that is valid on the host where the HCM is running. Also check that the DNS name resolves properly on the host where the HCM is running. Confirm that there is connectivity from the host where the HCM is running to the Hybrid Connection endpoint.
226225

227-
In App Service, the tcpping tool can be invoked from the Advanced Tools (Kudu) console. This tool can tell you if you have access to a TCP endpoint, but it does not tell you if you have access to a Hybrid Connection endpoint. When you use the tool in the console against a Hybrid Connection endpoint, you are only confirming that it uses a host:port combination.
226+
In App Service, the **tcpping** command line tool can be invoked from the Advanced Tools (Kudu) console. This tool can tell you if you have access to a TCP endpoint, but it does not tell you if you have access to a Hybrid Connection endpoint. When you use the tool in the console against a Hybrid Connection endpoint, you are only confirming that it uses a host:port combination.
227+
228+
If you have a command line client for your endpoint, you can test connectivity from the app console. For example, you can test access to web server endpoints by using curl.
228229

229230
## BizTalk Hybrid Connections ##
230231

articles/app-service/app-service-ip-restrictions.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ms.workload: web
1313
ms.tgt_pltfrm: na
1414
ms.devlang: multiple
1515
ms.topic: article
16-
ms.date: 05/28/2019
16+
ms.date: 06/06/2019
1717
ms.author: ccompy
1818
ms.custom: seodec18
1919

@@ -44,27 +44,27 @@ From the Access Restrictions UI, you can review the list of access restriction r
4444

4545
The list will show all of the current restrictions that are on your app. If you have a VNet restriction on your app, the table will show if service endpoints are enabled for Microsoft.Web. When there are no defined restrictions on your app, your app will be accessible from anywhere.
4646

47+
## Adding IP address rules
48+
4749
You can click on **[+] Add** to add a new access restriction rule. Once you add a rule, it will become effective immediately. Rules are enforced in priority order starting from the lowest number and going up. There is an implicit deny all that is in effect once you add even a single rule.
4850

49-
### Adding IP address rules
51+
When creating a rule, you must select allow/deny and also the type of rule. You are also required to provide the priority value and what you are restricting access to. You can optionally add a name, and description to the rule.
5052

5153
![add an IP access restriction rule](media/app-service-ip-restrictions/access-restrictions-ip-add.png)
5254

53-
When creating a rule, you must select allow/deny and also the type of rule. You are also required to provide the priority value and what you are restricting access to. You can optionally add a name, and description to the rule.
54-
5555
To set an IP address based rule, select a type of IPv4 or IPv6. IP Address notation must be specified in CIDR notation for both IPv4 and IPv6 addresses. To specify an exact address, you can use something like 1.2.3.4/32 where the first four octets represent your IP address and /32 is the mask. The IPv4 CIDR notation for all addresses is 0.0.0.0/0. To learn more about CIDR notation, you can read [Classless Inter-Domain Routing](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).
5656

57-
### Service endpoints
57+
## Service endpoints
5858

59-
![add a VNet access restriction rule](media/app-service-ip-restrictions/access-restrictions-vnet-add.png)
59+
Service endpoints enables you to restrict access to selected Azure virtual network subnets. To restrict access to a specific subnet, create a restriction rule with a type of Virtual Network. You can pick the subscription, VNet, and subnet you wish to allow or deny access with. If service endpoints are not already enabled with Microsoft.Web for the subnet that you selected, it will automatically be enabled for you unless you check the box asking not to do that. The situation where you would want to enable it on the app but not the subnet is largely related to if you have the permissions to enable service endpoints on the subnet or not. If you need to get somebody else to enable service endpoints on the subnet, you can check the box and have your app configured for service endpoints in anticipation of it being enabled later on the subnet.
6060

61-
To restrict access to selected subnets, select a type of Virtual Network. Below that you will be able to pick the subscription, VNet, and subnet you wish to allow or deny access with. If service endpoints are not already enabled with Microsoft.Web for the subnet that you selected, it will automatically be enabled for you unless you check the box asking not to do that. The situation where you would want to enable it on the app but not the subnet is largely related to if you have the permissions to enable service endpoints on the subnet or not. If you need to get somebody else to enable service endpoints on the subnet, you can check the box and have your app configured for service endpoints in anticipation of it being enabled later on the subnet.
61+
![add a VNet access restriction rule](media/app-service-ip-restrictions/access-restrictions-vnet-add.png)
6262

6363
Service endpoints cannot be used to restrict access to apps that run in an App Service Environment. When your app is in an App Service Environment, you can control access to your app with IP access rules.
6464

6565
With service endpoints, you can configure your app with Application Gateways or other WAF devices. You can also configure multi-tier applications with secure backends. For more details on some of the possibilities, read [Networking features and App Service](networking-features.md).
6666

67-
### Managing access restriction rules
67+
## Managing access restriction rules
6868

6969
You can click on any row to edit an existing access restriction rule. Edits are effective immediately including changes in priority ordering.
7070

@@ -78,15 +78,15 @@ To delete a rule, click the **...** on your rule and then click **remove**.
7878

7979
![delete access restriction rule](media/app-service-ip-restrictions/access-restrictions-delete.png)
8080

81-
### Blocking a single IP Address ##
81+
## Blocking a single IP Address ##
8282

8383
When adding your first IP Restriction rule, the service will add an explicit **deny all** rule with a priority of 2147483647. In practice, the explicit **deny all** rule will be last rule executed and will block access to any IP address that is not explicitly allowed using an **Allow** rule.
8484

8585
For the scenario where users want to explicitly block a single IP address or IP address block, but allow everything else access, it is necessary to add an explicit **Allow All** rule.
8686

8787
![block single ip address](media/app-service-ip-restrictions/block-single-address.png)
8888

89-
### SCM site
89+
## SCM site
9090

9191
In addition to being able to control access to your app, you can also restrict access to the scm site used by your app. The scm site is the web deploy endpoint and also the Kudu console. You can separately assign access restrictions to the scm site from the app or use the same set for both the app and the scm site. When you check the box to have the same restrictions as your app, everything is blanked out. If you uncheck the box, whatever settings you had earlier on the scm site are applied.
9292

articles/app-service/environment/firewall-integration.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ms.workload: na
1111
ms.tgt_pltfrm: na
1212
ms.devlang: na
1313
ms.topic: article
14-
ms.date: 03/12/2019
14+
ms.date: 06/11/2019
1515
ms.author: ccompy
1616
ms.custom: seodec18
1717

@@ -27,6 +27,21 @@ The ASE outbound dependencies are almost entirely defined with FQDNs, which do n
2727

2828
The solution to securing outbound addresses lies in use of a firewall device that can control outbound traffic based on domain names. Azure Firewall can restrict outbound HTTP and HTTPS traffic based on the FQDN of the destination.
2929

30+
## System architecture
31+
32+
Deploying an ASE with outbound traffic going through a firewall device requires changing routes on the ASE subnet. Routes operate at an IP level. If you are not careful in defining your routes, you can force TCP reply traffic to source from another address. This is called asymmetric routing and it will break TCP.
33+
34+
There must be routes defined so that inbound traffic to the ASE can reply back the same way the traffic came in. This is true for inbound management requests and it is true for inbound application requests.
35+
36+
The traffic to and from an ASE must abide by the following conventions
37+
38+
* The traffic to Azure SQL, Storage and Event Hub are not supported with use of a firewall device. This traffic must be sent directly to those services. The way to make that happen is to configure service endpoints for those three services.
39+
* Route table rules must be defined that send inbound management traffic back from where it came.
40+
* Route table rules must be defined that send inbound application traffic back from where it came.
41+
* All other traffic leaving the ASE can be sent to your firewall device with a route table rule.
42+
43+
![ASE with Azure Firewall connection flow][5]
44+
3045
## Configuring Azure Firewall with your ASE
3146

3247
The steps to lock down egress from your existing ASE with Azure Firewall are:
@@ -65,8 +80,6 @@ If your applications have dependencies, they need to be added to your Azure Fire
6580

6681
If you know the address range that your application request traffic will come from, you can add that to the route table that is assigned to your ASE subnet. If the address range is large or unspecified, then you can use a network appliance like the Application Gateway to give you one address to add to your route table. For details on configuring an Application Gateway with your ILB ASE, read [Integrating your ILB ASE with an Application Gateway](https://docs.microsoft.com/azure/app-service/environment/integrate-with-application-gateway)
6782

68-
![ASE with Azure Firewall connection flow][5]
69-
7083
This use of the Application Gateway is just one example of how to configure your system. If you did follow this path, then you would need to add a route to the ASE subnet route table so the reply traffic sent to the Application Gateway would go there directly.
7184

7285
## Logging

articles/app-service/environment/network-info.md

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -53,40 +53,48 @@ When you scale up or down, new roles of the appropriate size are added and then
5353

5454
### ASE inbound dependencies ###
5555

56-
The ASE inbound access dependencies are:
56+
Just for the ASE to operate, the ASE requires the following ports to be open:
5757

5858
| Use | From | To |
5959
|-----|------|----|
6060
| Management | App Service management addresses | ASE subnet: 454, 455 |
6161
| ASE internal communication | ASE subnet: All ports | ASE subnet: All ports
62-
| Allow Azure load balancer inbound | Azure load balancer | ASE subnet: All ports
63-
| App assigned IP addresses | App assigned addresses | ASE subnet: All ports
62+
| Allow Azure load balancer inbound | Azure load balancer | ASE subnet: 16001
6463

65-
The inbound management traffic provides command and control of the ASE in addition to system monitoring. The source addresses for this traffic are listed in the [ASE Management addresses][ASEManagement] document. The network security configuration needs to allow access from all IPs on ports 454 and 455. If you block access from those addresses, your ASE will become unhealthy and then become suspended.
64+
There are 2 other ports that can show as open on a port scan, 7654 and 1221. They reply with an IP address and nothing more. They can be blocked if desired.
65+
66+
The inbound management traffic provides command and control of the ASE in addition to system monitoring. The source addresses for this traffic are listed in the [ASE Management addresses][ASEManagement] document. The network security configuration needs to allow access from the ASE management addresses on ports 454 and 455. If you block access from those addresses, your ASE will become unhealthy and then become suspended. The TCP traffic that comes in on ports 454 and 455 must go back out from the same VIP or you will have an asymmetric routing problem.
6667

6768
Within the ASE subnet, there are many ports used for internal component communication and they can change. This requires all of the ports in the ASE subnet to be accessible from the ASE subnet.
6869

69-
For the communication between the Azure load balancer and the ASE subnet the minimum ports that need to be open are 454, 455 and 16001. The 16001 port is used for keep alive traffic between the load balancer and the ASE. If you are using an ILB ASE, then you can lock traffic down to just the 454, 455, 16001 ports. If you are using an External ASE, then you need to take into account the normal app access ports. If you are using app assigned addresses, you need to open it to all ports. When an address is assigned to a specific app, then the load balancer will use ports that are not known of in advance to send HTTP and HTTPS traffic to the ASE.
70+
For the communication between the Azure load balancer and the ASE subnet the minimum ports that need to be open are 454, 455 and 16001. The 16001 port is used for keep alive traffic between the load balancer and the ASE. If you are using an ILB ASE, then you can lock traffic down to just the 454, 455, 16001 ports. If you are using an External ASE, then you need to take into account the normal app access ports.
71+
72+
The other ports you need to concern yourself with are the application ports:
7073

71-
If you are using app assigned IP addresses, you need to allow traffic from the IPs assigned to your apps to the ASE subnet.
74+
| Use | Ports |
75+
|----------|-------------|
76+
| HTTP/HTTPS | 80, 443 |
77+
| FTP/FTPS | 21, 990, 10001-10020 |
78+
| Visual Studio remote debugging | 4020, 4022, 4024 |
79+
| Web Deploy service | 8172 |
7280

73-
The TCP traffic that comes in on ports 454 and 455 must go back out from the same VIP or you will have an asymmetric routing problem.
81+
If you block the application ports, your ASE can still function but your app might not. If you are using app assigned IP addresses with an External ASE, you will need to allow traffic from the IPs assigned to your apps to the ASE subnet on the ports shown in the ASE portal > IP Addresses page.
7482

7583
### ASE outbound dependencies ###
7684

7785
For outbound access, an ASE depends on multiple external systems. Many of those system dependencies are defined with DNS names and don't map to a fixed set of IP addresses. Thus, the ASE requires outbound access from the ASE subnet to all external IPs across a variety of ports.
7886

7987
The ASE communicates out to internet accessible addresses on the following ports:
8088

81-
| Port | Uses |
89+
| Uses | Ports |
8290
|-----|------|
83-
| 53 | DNS |
84-
| 123 | NTP |
85-
| 80/443 | CRL, Windows updates, Linux dependencies, Azure services |
86-
| 1433 | Azure SQL |
87-
| 12000 | Monitoring |
91+
| DNS | 53 |
92+
| NTP | 123 |
93+
| 8CRL, Windows updates, Linux dependencies, Azure services | 80/443 |
94+
| Azure SQL | 1433 |
95+
| Monitoring | 12000 |
8896

89-
The complete list of outbound dependencies are listed in the document that describes [Locking down App Service Environment outbound traffic](./firewall-integration.md). If the ASE loses access to its dependencies, it stops working. When that happens long enough, the ASE is suspended.
97+
The outbound dependencies are listed in the document that describes [Locking down App Service Environment outbound traffic](./firewall-integration.md). If the ASE loses access to its dependencies, it stops working. When that happens long enough, the ASE is suspended.
9098

9199
### Customer DNS ###
92100

@@ -160,12 +168,12 @@ The required entries in an NSG, for an ASE to function, are to allow traffic:
160168

161169
The DNS port does not need to be added as traffic to DNS is not affected by NSG rules. These ports do not include the ports that your apps require for successful use. The normal app access ports are:
162170

163-
| Use | From | To |
164-
|----------|---------|-------------|
165-
| HTTP/HTTPS | User configurable | 80, 443 |
166-
| FTP/FTPS | User configurable | 21, 990, 10001-10020 |
167-
| Visual Studio remote debugging | User configurable | 4020, 4022, 4024 |
168-
| Web Deploy service | User configurable | 8172 |
171+
| Use | Ports |
172+
|----------|-------------|
173+
| HTTP/HTTPS | 80, 443 |
174+
| FTP/FTPS | 21, 990, 10001-10020 |
175+
| Visual Studio remote debugging | 4020, 4022, 4024 |
176+
| Web Deploy service | 8172 |
169177

170178
When the inbound and outbound requirements are taken into account, the NSGs should look similar to the NSGs shown in this example.
171179

0 commit comments

Comments
 (0)