Is traffic within an Azure VNET encrypted? - azure

I'm looking for some information on Azure Virtual Network security for data in transit.
We use Application Gateway to terminate the TLS connection (443) and forward the (unecrypted) request (80) to a backend server in the same virtual network but in a different subnet.
Microsoft states that VNETs are private and secure.
I could not find any information if traffic within a VNET is encrypted. That it wouldn't be possible to inspect traffic from outside of the VNET for anyone.
The HTTP request itself is not encrypted, but would the VNET traffic transporting the request be encrypted?
For inter-region traffic the documentation states: data-link layer encryption using MACsec

Please note that all vnet's are isolated from each other. It means traffic from one VNET cannot reach traffic from another VNET by default and it requires peering. Local IP's under VNET are private IP's and they are non routable.
Traffic inside VNET is not encrypted but you can use HTTPS, SMB 3.0 or other protocols to encrypt traffic between services. More info:
https://learn.microsoft.com/en-us/azure/security/fundamentals/encryption-overview

Related

Is there a VPN solution in Azure that can assign a static public IP to the clients connected for me to achieve full tunnelling? may be in P2S VPN?

Is there a VPN solution in Azure that can assign a static public IP to the clients connected for me to achieve full tunnelling? may be in P2S VPN?
P2S VPN does not have full tunneling. Is there any other alternate solution?
• No, you can’t assign a static public IP address to the clients for a VPN solution in Azure as the client address pool that needs to be defined while deploying a VPN gateway in Azure is a subnet of the IP address spaces that the virtual network is created out of.
But you can configure forced tunnelling in your Azure virtual network on your VPN gateway subnets as illustrated below. In the below image, forced tunnelling is shown for Site-to-Site VPN scenario but it can also be implemented for Point-to-Site VPN scenarios in the same way. The Frontend subnet is not force tunneled. The workloads in the Frontend subnet can continue to accept and respond to customer requests from the Internet directly. The Mid-tier and Backend subnets are forced tunneled. Any outbound connections from these two subnets to the Internet will be forced or redirected back to an on-premises site via one of the Site-to-site (S2S) VPN tunnels as shown below.
This allows you to restrict and inspect Internet access from your virtual machines or cloud services in Azure, while continuing to enable your multi-tier service architecture required. If there are no Internet-facing workloads in your virtual networks, you also can apply forced tunneling to the entire virtual networks.: -
• Also, please note that you can *configure the above for your P2S clients by securing the Internet traffic via Firewall Manager and advertising the 0.0.0.0/0 route to your VPN clients. This makes your clients send all internet bound traffic to Azure for inspection. Then, firewall SNATs the packet to the PIP of Azure Firewall for egress to Internet. For this purpose, setup the Azure Firewall Policy to allow P2S traffic to Internet and to advertise all the traffic from 0.0.0.0/0 to your VPN clients, you would need to break them into two smaller subnets 0.0.0.0/1 and 128.0.0.0/1 as mentioned in the below documentation: -
https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-p2s-advertise-custom-routes#forced-tunneling
Also, you can add the code below in your ‘azurevpnconfig.xml’ file that can be directly downloaded from the templates section if the above said subnets cannot be added in ‘Default Routes’ on the portal.
<clientconfig>
<includeroutes>
<route>
<destination>0.0.0.0</destination><mask>1</mask>
</route>
<route>
<destination>128.0.0.0</destination><mask>1</mask>
</route>
</includeroutes>
</clientconfig>

Internal HTTP request between two VMs in Azure - is it secure by default or do I need to send HTTPS requests?

I was able to find that Google Cloud makes sure that any requests which move out of its physical environment undergo mandatory encryption, refer to (pg6 under heading Virtual Machine to Virtual Machine of) this link
Do Azure (and AWS) follow a similar procedure? I would appreciate if someone can point me to an official link. I was not able to find it in Azure docs.
Thanks
Azure supports various encryption models, including server-side encryption, client-side encryption, Azure disk encryption and so on. Read Azure encryption overview.
For data in transit, you will see that Azure always encrypt traffic between your cloud-hosted resources and external networks or the public internet.
Data in transit is data moving between resources on the internal,
between datacenters or external networks, or over the internet.
Data in transit is usually encrypted by requiring SSL/TLS protocols
for network traffic. Always encrypt traffic between your cloud-hosted
resources and external networks or the public internet. PaaS resources
typically enforce SSL/TLS encryption by default. Your cloud adoption
teams and workload owners should consider enforcing encryption for
traffic between IaaS resources hosted inside your virtual networks.
Azure VM in Azure is not an individual resource. It must be deployed in an Azure virtual network, which is the fundamental building block for your private network in Azure. VNet enables Azure VMs, to securely communicate with each other, the internet, and on-premises networks. You also could secure VNet using the network security group. So, the internal traffic between two VMs in a VNet is secure. If the VMs in different VNets, you cloud peer two VNets with each other. The traffic between VMs in the peered virtual networks is routed through the Microsoft backbone infrastructure, much like traffic is routed between VMs in the same VNet, through private IP addresses only.
Even the traffic in an Azure VNet is secure but the HTTP request is not secure by default. HTTP requests and responses are sent in plaintext, which means that anyone can read them. HTTPS corrects this problem by using TLS/SSL encryption. You could also consider using HTTPS requests.
Hope this could help you.

Denylist client IP in Azure Application Gateway

We are using Azure Application Gateway for our site, and we are getting few people scraping our site. We want to block their IP at gateway level, as we don't want to configure the same blocks in every web service.
We can not find the way of blocking IPs using only the gateway or its virtual network. Had anybody the same problem and can illuminate our path?
You could deploy Application Gateway in a virtual network. If so, you will have a dedicated subnet for this Application Gateway. This subnet can only contain Application Gateways. You could associate an NSG to this subnet. If so, you could restrict inbound and outbound traffic from this Application Gateway subnet via inbound or outbound security rules in NSG. In this case, you could add an inbound security rule to backlist your clients' IP.
Refer to DOC, Note:
Network Security Groups (NSGs) are supported on the application
gateway subnet with the following restrictions:
Exceptions must be put in for incoming traffic on ports 65503-65534
for the Application Gateway v1 SKU and ports 65200 - 65535 for the v2
SKU. This port-range is required for Azure infrastructure
communication. They are protected (locked down) by Azure certificates.
Without proper certificates, external entities, including the
customers of those gateways, will not be able to initiate any changes
on those endpoints.
Outbound internet connectivity can't be blocked.
Traffic from the AzureLoadBalancer tag must be allowed.
Hope this helps.

When is NAT-T natting performed on Azure policy based basic VNet gateway, IKEv1 site-to-site connection

I have a strange requirement for IKEv1 VPN to a Cisco ASA and Checkpoint system with Azure.
We setup two Azure policy based VNet gateways, virtual networks and associated virtual machines.
The connection has to be IKEv1 AES-256-SHA1-DHGroup2 site-to-site connection per their test and production environments so we setup one for test and production.
The third party system does not support RFC1918 addressing within VPN
tunnels (encryption domain) and/or Peers. There must be publicly
assigned IP addresses for the VPN tunnel, as well as a publicly routed
IP address for the peer.
They recommend using subnets within the tunnel negotiations, and using
your access-lists to narrow this down to specific hosts (subnet SA’s
vs. host SA’s). In the event you need to “hide” multiple hosts behind
a single IP address, you should PAT using a publicly assigned address
to be included in the VPN tunnel. NAT-T (UDP Encapsulation of IPSEC)
is not supported due to global configuration items which affect
multiple customers.
My question is when is NAT-T performed when connecting to an Azure virtual network gateway in policy-based (IKEv1) mode on site-to-site (S2S) connections? Is it done at all or when is it performed? Is it only performed if there is a load balancer out front?
I think I tried to answer the same questions on the MSDN forum. Just re-iterate the answers:
NAT-T is performed on the outer packets/addresses of IPsec packets.
Azure VPN gateway does NOT perform any NAT/PAT functionality on the inner packets in/out of IPsec tunnels. So if you use public IP addresses inside of your on-premises network and your Azure virtual network they will stay the same to/from the Azure VPN gateways and IPsec tunnels.
You can use public IP address spaces as "private" IP addresses on your Azure VMs / Azure virtual network. These will be treated like "private" addresses by the Azure VPN gateways. We will not NAT those inner packets.
Hope this helps.
Thanks,
Yushun [MSFT]
To clarify: Have you gone through this suggestion :
Site-to-Site – VPN connection over IPsec (IKE v1 and IKE v2). This type of connection requires a VPN device or RRAS. For more information, see Site-to-Site:
https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal
Point-to-Site – VPN connection over SSTP (Secure Socket Tunneling Protocol). This connection does not require a VPN device. For more information, see Point-to-Site:
https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-resource-manager-portal
VNet-to-VNet – This type of connection is the same as a Site-to-Site configuration. VNet to VNet is a VPN connection over IPsec (IKE v1 and IKE v2). It does not require a VPN device. For more information, see VNet-to-VNet:
https://learn.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-resource-manager-portal
Multi-Site – This is a variation of a Site-to-Site configuration that allows you to connect multiple on-premises sites to a virtual network.
Only the traffic that has a destination IP that is contained in the virtual network Local Network IP address ranges that you specified will go through the virtual network gateway. Traffic has a destination IP located within the virtual network stays within the virtual network. Other traffic is sent through the load balancer to the public networks, or if forced tunneling is used, sent through the Azure VPN gateway

Control outbound IP address of internal VMSS in Azure

I have a VMSS/svc fabric cluster on internal vnet (not public). The only inbound connections to the VMSS is from on prem through a Azure VPN Gateway.
How do I control the outbound IP address the VMSS go through when accessing the internet? In this case I do not want this traffic routed through a random IP address or through the VPN connection.
Basically I want to secure my Azure SQL so that the outbound internet IPs of the VMSS is whitelisted. And I don't want to add all Azure datacenter IPs.
You could look to use Forced Tunneling which would ensure that your control where the data egress occurs in your on-premises environment, however this would force any data in your Virtual Network back over your VPN connection which may not be desirable (or helpful if you don't control egress from there).
Failing this you could add a software-based firewall running on an Azure VM with a public IP onto the same VNet and then use User Defined Routes (UDRs) to force all traffic bound for the Internet to go via that and then use the public IP address in your SQL firewall.
Longer term you will be able to connect Azure SQL DB to VNets (or at least restrict access to it from one) - see the Uservoice site (and add your vote!)

Resources