Puedes usar un grupo de seguridad de red de Azure para filtrar el tráfico de red que entra y sale de los recursos de Azure en una red virtual de Azure.
Los grupos de seguridad de red contienen reglas de seguridad que filtran el tráfico de red por dirección IP, puerto y protocolo. Cuando un grupo de seguridad de red está asociado a una subred, se aplican reglas de seguridad a los recursos implementados en esa subred.
En este tutorial aprenderá a:
- Crear un grupo de seguridad de red y reglas de seguridad
- Creación de grupos de seguridad de aplicaciones
- Crear una red virtual y asociar un grupo de seguridad de red a una subred
- Implementar máquinas virtuales y asociar sus interfaces de red a los grupos de seguridad de aplicación.
Requisitos previos
Azure Cloud Shell
En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:
Opción |
Ejemplo o vínculo |
Seleccione Pruébelo en la esquina superior derecha de un bloque de código o de comandos. Solo con seleccionar Pruébelo no se copia automáticamente el código o comando en Cloud Shell. |
|
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. |
|
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. |
|
Para usar Azure Cloud Shell:
Inicie Cloud Shell.
Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.
Pegue el código o comando en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.
Seleccione Enter para ejecutar el código o comando.
Si decide instalar y usar PowerShell de forma local, para realizar los pasos de este artículo necesita la versión 1.0.0 del módulo de Azure PowerShell o cualquier versión posterior. Ejecute Get-Module -ListAvailable Az
para buscar la versión instalada. Si necesita actualizarla, consulte Instalación del módulo de Azure PowerShell. Si PowerShell se ejecuta localmente, también debe ejecutar Connect-AzAccount
para crear una conexión con Azure.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
- En este artículo se necesita la versión 2.0.28 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
El siguiente procedimiento crea una red virtual con una subred de recurso.
En el portal, busque y seleccione Redes virtuales.
En la página Redes virtuales, seleccione y Crear.
En la pestaña Datos básicos de Crear una red virtual, introduce o selecciona la siguiente información:
Configuración |
Valor |
Detalles del proyecto |
|
Suscripción |
Selecciona tu suscripción. |
Resource group |
Seleccione Crear nuevo.
Escriba test-rg en Nombre.
Seleccione . |
Detalles de instancia |
|
Nombre |
Escriba vnet-1. |
Region |
Seleccione Este de EE. UU. 2. |
Seleccione Siguiente para ir a la pestaña Seguridad.
Seleccione Siguiente para continuar a la pestaña Direcciones IP.
En el cuadro de espacio de direcciones de Subredes, seleccione la subred predeterminada.
En el panel Editar subred, escriba o seleccione la siguiente información:
Configuración |
Valor |
Detalles de subred |
|
Plantilla de subred |
Deje el valor predeterminado como Predeterminado. |
Nombre |
Escriba subnet-1. |
Dirección inicial |
Deje el valor predeterminado de 10.0.0.0. |
Tamaño de la subred |
Deje el valor predeterminado de /24(256 direcciones). |
Seleccione Guardar.
En la parte inferior de la pantalla, selecciona Revisar y crear. Una vez pasada la validación, seleccione Crear.
En primer lugar, cree un grupo para todos los recursos generados en este artículo con New-AzResourceGroup. En el ejemplo siguiente, se crea un grupo de recursos en la ubicación westus2:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
Cree una red virtual con New-AzVirtualNetwork. El siguiente ejemplo crea una red virtual denominada vnet-1:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Cree una configuración de subred con New-AzVirtualNetworkSubnetConfig y escríbala en la red virtual con Set-AzVirtualNetwork. El siguiente ejemplo agrega una subred denominada subnet-1 a la red virtual y le asocia el grupo de seguridad de red nsg-1:
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
En primer lugar, debe crear un grupo de recursos para todos los recursos creados en este artículo con az group create. En el ejemplo siguiente, se crea un grupo de recursos en la ubicación westus2:
az group create \
--name test-rg \
--location westus2
Cree la red virtual con el comando az network vnet create. El siguiente ejemplo crea una red virtual denominada vnet-1:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
Agregue una subred a una red virtual con az network vnet subnet create. El siguiente ejemplo agrega una subred denominada subnet-1 a la red virtual y le asocia el grupo de seguridad de red nsg-1:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
Creación de grupos de seguridad de aplicaciones
Un grupo de seguridad de aplicaciones (ASG) permite agrupar servidores con funciones similares, como servidores web.
En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Grupo de seguridad de aplicaciones. Seleccione Grupos de seguridad de aplicaciones en los resultados de la búsqueda.
Seleccione + Create (+ Crear).
En la pestaña Aspectos básicos de Crear un grupo de seguridad de aplicación, escriba o seleccione esta información:
Configuración |
Valor |
Detalles del proyecto |
|
Suscripción |
Selecciona tu suscripción. |
Resource group |
Seleccione test-rg. |
Detalles de instancia |
|
Nombre |
Escriba asg-web. |
Region |
Seleccione Este de EE. UU. 2. |
Seleccione Revisar + crear.
Seleccione + Create (+ Crear).
Repita los pasos anteriores, pero especifique los valores siguientes:
Configuración |
Valor |
Detalles del proyecto |
|
Suscripción |
Selecciona tu suscripción. |
Resource group |
Seleccione test-rg. |
Detalles de instancia |
|
Nombre |
Escriba asg-mgmt. |
Region |
Seleccione Este de EE. UU. 2. |
Seleccione Revisar + crear.
Seleccione Crear.
Cree un grupo de seguridad de aplicaciones con New-AzApplicationSecurityGroup. Un grupo de seguridad de aplicaciones permite agrupar servidores con requisitos de filtrado de puertos similar. El ejemplo siguiente crea dos grupos de seguridad de aplicaciones.
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
Cree un grupo de seguridad de aplicaciones con az network asg create. Un grupo de seguridad de aplicaciones permite agrupar servidores con requisitos de filtrado de puertos similar. El ejemplo siguiente crea dos grupos de seguridad de aplicaciones.
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
Crear un grupo de seguridad de red
Un grupo de seguridad de red (NSG) protege el tráfico de red de una red virtual.
En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Grupo de seguridad de red. En los resultados de la búsqueda, seleccione Grupos de seguridad de red.
Nota:
En los resultados de la búsqueda de grupos de seguridad de red, es posible que vea Grupos de seguridad de red (clásico). Seleccione Grupos de seguridad de red.
Seleccione + Create (+ Crear).
En la pestaña Aspectos básicos de Crear grupo de seguridad de red, escriba o seleccione esta información:
Configuración |
Valor |
Detalles del proyecto |
|
Suscripción |
Selecciona tu suscripción. |
Resource group |
Seleccione test-rg. |
Detalles de instancia |
|
Nombre |
Escriba nsg-1. |
Location |
Seleccione Este de EE. UU. 2. |
Seleccione Revisar + crear.
Seleccione Crear.
Cree un grupo de seguridad de red con New-AzNetworkSecurityGroup. En el ejemplo siguiente, se crea un grupo de seguridad de red denominado nsg-1:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
Cree un grupo de seguridad de red con az network nsg create. En el ejemplo siguiente, se crea un grupo de seguridad de red denominado nsg-1:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Asociación del grupo de seguridad de red a la subred
En esta sección, asociará el grupo de seguridad de red con la subred de la red virtual que creó anteriormente.
En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Grupo de seguridad de red. En los resultados de la búsqueda, selecciona Grupos de seguridad de red.
Selecciona nsg-1.
Seleccione Subredes en la sección Configuración de nsg-1.
En la página Subredes, seleccione +Asociar:
En Asociar subred, seleccione vnet-1 (test-rg) en Red virtual.
En subnet-1, seleccione Subred y, luego, elija Aceptar.
Use Get-AzVirtualNetwork para recuperar el objeto de red virtual y, a continuación, use Set-AzVirtualNetworkSubnetConfig para asociar el grupo de seguridad de red a la subred. En el ejemplo siguiente se recupera el objeto de red virtual y se actualiza la configuración de subred para asociar el grupo de seguridad de red:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
Para asociar la subred al grupo de seguridad de red, use az network vnet subnet update. En el ejemplo siguiente se asocia el grupo de seguridad de red nsg-1 con la subred subnet-1:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Creación de reglas de seguridad
Seleccione Reglas de seguridad de entrada en la sección Configuración de nsg-1.
En la página Reglas de seguridad de entrada, seleccione +Agregar.
Cree una regla de seguridad que permita a los puertos 80 y 443 para el grupo de seguridad de la aplicación asg-web. En la página Agregar regla de seguridad de entrada, especifique o seleccione los siguientes datos:
Configuración |
Valor |
Source |
Deje el valor predeterminado, Cualquiera. |
Source port ranges |
Deje el valor predeterminado de (*). |
Destination |
Seleccione Grupo de seguridad de aplicación. |
Grupos de seguridad de aplicaciones de destino |
Seleccione asg-web. |
Servicio |
Deje el valor predeterminado, Personalizado. |
Intervalos de puertos de destino |
Escriba 80 443. |
Protocolo |
Seleccione TCP. |
Acción |
Deje el valor predeterminado, Permitir. |
Priority |
Deje el valor predeterminado, 100. |
Nombre |
Escriba allow-web-all. |
Seleccione Agregar.
Complete los pasos anteriores con la siguiente información:
Configuración |
Valor |
Source |
Deje el valor predeterminado, Cualquiera. |
Source port ranges |
Deje el valor predeterminado de (*). |
Destination |
Seleccione Grupo de seguridad de aplicación. |
Grupo de seguridad de aplicación de destino |
Seleccione asg-mgmt. |
Servicio |
Seleccione RDP. |
Acción |
Deje el valor predeterminado, Permitir. |
Priority |
Deje el valor predeterminado, 110. |
Nombre |
Escriba allow-rdp-all. |
Seleccione Agregar.
Precaución
En este artículo, RDP (puerto 3389) está expuesto a Internet para la máquina virtual asignada al grupo de seguridad de aplicaciones asg-mgmt.
En entornos de producción, en lugar de exponer el puerto 3389 a Internet, es conveniente que se conecte a los recursos de Azure que desee administrar utilizando una VPN, una conexión de red privada o Azure Bastion.
Para más información, consulte ¿Qué es Azure Bastion?
Cree una regla de seguridad con New-AzNetworkSecurityRuleConfig. En el ejemplo siguiente se crea una regla que permite el tráfico entrante desde Internet al grupo de seguridad de aplicaciones asg-web a través de los puertos 80 y 443:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-Web-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80,443
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
En el ejemplo siguiente se crea una regla que permite el tráfico entrante desde Internet al grupo de seguridad de aplicaciones asg-mgmt a través del puerto 3389:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-RDP-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 3389
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
Use Get-AzNetworkSecurityGroup para recuperar el grupo de seguridad de red existente y, a continuación, agregue las nuevas reglas con el operador +=
. Por último, actualice el grupo de seguridad de red con Set-AzNetworkSecurityGroup:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Precaución
En este artículo, RDP (puerto 3389) está expuesto a Internet para la máquina virtual asignada al grupo de seguridad de aplicaciones asg-mgmt.
En entornos de producción, en lugar de exponer el puerto 3389 a Internet, es conveniente que se conecte a los recursos de Azure que desee administrar utilizando una VPN, una conexión de red privada o Azure Bastion.
Para más información, consulte ¿Qué es Azure Bastion?
Cree una regla de seguridad con az network nsg rule create. En el ejemplo siguiente se crea una regla que permite el tráfico entrante desde Internet al grupo de seguridad de aplicaciones asg-web a través de los puertos 80 y 443:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-Web-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80 443
En el ejemplo siguiente se crea una regla que permite el tráfico entrante desde Internet al grupo de seguridad de aplicaciones asg-mgmt a través del puerto 22:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 22
Precaución
En este artículo, SSH (puerto 22) está expuesto a Internet para la máquina virtual asignada al grupo de seguridad de aplicaciones asg-mgmt.
En entornos de producción, en lugar de exponer el puerto 22 a Internet, es conveniente que se conecte a los recursos de Azure que desee administrar utilizando una VPN, una conexión de red privada o Azure Bastion.
Para más información, consulte ¿Qué es Azure Bastion?
Creación de máquinas virtuales
Cree dos máquinas virtuales (VM) en la red virtual.
En el portal, busque y seleccione Máquinas virtuales.
En Máquinas virtuales, seleccione + Crear y, después, Máquina virtual de Azure.
En Crear una máquina virtual, escriba o seleccione los datos siguientes en la pestaña Conceptos básicos:
Configuración |
Valor |
Detalles del proyecto |
|
Suscripción |
Selecciona tu suscripción. |
Resource group |
Seleccione test-rg. |
Detalles de instancia |
|
Nombre de la máquina virtual |
Escriba vm-web. |
Region |
Seleccione (EE. UU.) Este de EE. UU. 2. |
Opciones de disponibilidad |
Deje el valor predeterminado No se requiere redundancia de la infraestructura. |
Tipo de seguridad |
Seleccione Estándar. |
Imagen |
Seleccione Windows Server 2022 Datacenter - x64 Gen2. |
Instancia de Azure Spot |
Deje esta casilla desactivada, tal y como está de forma predeterminada. |
Size |
Seleccione un tamaño. |
Cuenta de administrador |
|
Nombre de usuario |
Especifique un nombre de usuario. |
Contraseña |
Escriba una contraseña. |
Confirmación de la contraseña |
Vuelva a escribir la contraseña. |
Reglas de puerto de entrada |
|
Selección de puertos de entrada |
Seleccione Ninguno. |
Seleccione Siguiente: Discos y, luego, Siguiente: Redes.
En la pestaña Redes, escriba o seleccione la siguiente información:
Parámetro |
Valor |
Interfaz de red |
|
Virtual network |
Seleccione vnet-1. |
Subnet |
Seleccione subnet-1 (10.0.0.0/24). |
Dirección IP pública |
Deje el valor predeterminado, que es una nueva dirección IP pública. |
Grupo de seguridad de red de NIC |
Seleccione Ninguno. |
Seleccione la pestaña Revisar y crear o el botón azul Revisar y crear en la parte inferior de la página.
Seleccione Crear. La máquina virtual puede tardar unos minutos en implementarse.
Repita los pasos anteriores para crear una segunda máquina virtual denominada vm-mgmt.
Antes de crear las máquinas virtuales, recupere el objeto de red virtual con la subred mediante Get-AzVirtualNetwork:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
Cree una dirección IP pública para cada máquina virtual con New-AzPublicIpAddress:
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
Cree dos interfaces de red con New-AzNetworkInterface y asigne una dirección IP pública a la interfaz de red. En el ejemplo siguiente se crea una interfaz de red, se asocia la dirección IP pública public-ip-vm-web a ella.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
En el ejemplo siguiente se crea una interfaz de red, se asocia la dirección IP pública public-ip-vm-mgmt a ella.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Cree dos máquinas virtuales en la red virtual para que pueda validar el filtrado de tráfico en un paso posterior.
Cree una configuración de máquina virtual con New-AzVMConfig y, a continuación, cree la máquina virtual con New-AzVM. En el ejemplo siguiente se crea una máquina virtual que actúa como un servidor web. La opción -AsJob
crea la máquina virtual en segundo plano, por lo tanto, puede continuar con el siguiente paso:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-web"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $webNic.Id
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
Cree una máquina virtual para que actúe como un servidor de administración:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-mgmt"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $mgmtNic.Id
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
La creación de la máquina virtual tarda algunos minutos. No continúe con el paso siguiente hasta que Azure finalice la creación de la máquina virtual.
Cree dos máquinas virtuales en la red virtual para que pueda validar el filtrado de tráfico en un paso posterior.
Cree la máquina virtual con az vm create. En el ejemplo siguiente se crea una máquina virtual que actúa como un servidor web. La opción --nsg ""
se especifica para evitar que Azure cree un grupo de seguridad de red predeterminado para la interfaz de red que Azure crea al generar la máquina virtual. El comando le pide que cree una contraseña para la máquina virtual. Las claves SSH no se usan en este ejemplo para facilitar los pasos posteriores de este artículo. En un entorno de producción, use claves SSH para la seguridad.
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--authentication-type password \
--assign-identity
La máquina virtual tarda en crearse unos minutos. Una vez creada la máquina virtual, se devuelve una salida similar a la del siguiente ejemplo:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
Cree la máquina virtual con az vm create. En el ejemplo siguiente se crea una máquina virtual que actúa como servidor de administración.
En el ejemplo siguiente se crea una máquina virtual y se agrega una cuenta de usuario. El parámetro --generate-ssh-keys
hace que la CLI busque una clave SSH disponible en ~/.ssh
. Si encuentra una, se usa esa clave. Si no es así, se genera y se almacena en ~/.ssh
. Por último, implementamos la imagen más reciente Ubuntu 22.04
.
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity
La máquina virtual tarda en crearse unos minutos. No continúe con el paso siguiente hasta que Azure finalice la creación de la máquina virtual.
Asociación de interfaces de red a un ASG
Cuando se crearon las máquinas virtuales, Azure creó una interfaz de red para cada una y la asoció a estas.
Agregue la interfaz de red de cada máquina virtual a uno de los grupos de seguridad de aplicaciones que creó anteriormente:
En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Máquina virtual. Seleccione Máquinas virtuales en los resultados de búsqueda y, a continuación, seleccione vm-web.
Seleccione Grupos de seguridad de aplicaciones en la sección Redes de vm-web.
Seleccione Agregar grupos de seguridad de aplicacionesy, después, en la pestaña Agregar grupos de seguridad de aplicaciones, seleccione asg-web. Por último, seleccione Agregar.
Repita los pasos anteriores para vm-mgmt y seleccione asg-mgmt en la pestaña Agregar grupos de seguridad de aplicaciones.
Use Get-AzNetworkInterface para recuperar la interfaz de red de la máquina virtual y, a continuación, use Get-AzApplicationSecurityGroup para recuperar el grupo de seguridad de aplicaciones. Por último, use Set-AzNetworkInterface para asociar el grupo de seguridad de aplicaciones a la interfaz de red. En el ejemplo siguiente se asocia el grupo de seguridad de aplicaciones asg-web a la interfaz de red vm-web-nic:
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Repita el comando para asociar el grupo de seguridad de aplicaciones asg-mgmt con la interfaz de red vm-mgmt-nic.
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Use az network nic update para asociar la interfaz de red con el grupo de seguridad de aplicaciones. En el ejemplo siguiente se asocia el grupo de seguridad de aplicaciones asg-web a la interfaz de red vm-web-nic:
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
Repita el comando para asociar el grupo de seguridad de aplicaciones asg-mgmt con la interfaz de red vm-mgmt-nic.
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
Probar los filtros de tráfico
En el cuadro de búsqueda que aparece en la parte superior del portal, escriba Máquina virtual. En los resultados de la búsqueda, seleccione Máquinas virtuales.
Seleccione vm-mgmt.
En la página Información general, seleccione el botón Conectar y, luego, elija RDP nativo.
Seleccione Descargar archivo RDP.
Abra el archivo RDP descargado y seleccione Conectar. Escriba el nombre de usuario y la contraseña que especificó al crear la VM.
Seleccione Aceptar.
Puede recibir una advertencia sobre el certificado durante el proceso de conexión. Si aparece esta advertencia, seleccione Sí o Continuar para continuar con la conexión.
La conexión se realiza correctamente, ya que se permite la entrada de tráfico de Internet al grupo de seguridad de aplicaciones asg-mgmt en el puerto 3389.
La interfaz de red de vm-mgmt está asociada con el grupo de seguridad de aplicaciones asg-mgmt y permite la conexión.
Abra una sesión de PowerShell en vm-mgmt. Conéctese a vm-web mediante lo siguiente:
mstsc /v:vm-web
La conexión RDP entre vm-mgmt y vm-web se realiza correctamente, ya que, de forma predeterminada, las máquinas virtuales de la misma red pueden comunicarse entre sí por cualquier puerto.
No se puede crear una conexión RDP con la máquina virtual vm-web desde Internet. La regla de seguridad de asg-web impide la conexión con el puerto 3389 de entrada desde Internet. De forma predeterminada, se deniega el tráfico de entrada de Internet en todos los recursos.
Para instalar Microsoft IIS en la máquina virtual vm-web, escriba el siguiente comando desde una sesión de PowerShell de la máquina virtual vm-web:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
Una vez completada la instalación de IIS, desconecte la sesión de la máquina virtual vm-web, lo que le deja en la conexión de escritorio remoto de la máquina virtual vm-mgmt.
Desconecte de la máquina virtual vm-mgmt.
Busque vm-web en el cuadro de búsqueda del portal.
En la página Información general de vm-web, anote la dirección IP pública de la máquina virtual. La dirección que se muestra en el ejemplo siguiente es 203.0.113.103. Tu dirección es diferente:
Para confirmar que tiene acceso al servidor web vm-web desde Internet, abra un explorador de Internet en el equipo y vaya a http://<public-ip-address-from-previous-step>
.
Aparece la página predeterminada de IIS, ya que se permite la entrada de tráfico de Internet al grupo de seguridad de aplicaciones asg-web en el puerto 80.
La interfaz de red asociada a vm-web está asociada con el grupo de seguridad de aplicaciones asg-web y permite la conexión.
Use Get-AzPublicIpAddress para devolver la dirección IP pública de una máquina virtual. En el siguiente ejemplo se devuelve la dirección IP pública de la máquina virtual vm-mgmt:
$params = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$publicIP = Get-AzPublicIpAddress @params | Select IpAddress
Ejecute el comando siguiente en el equipo local para crear una sesión de Escritorio remoto con la máquina virtual vm-mgmt desde el sistema local.
mstsc /v:$publicIP
Escriba el nombre de usuario y la contraseña que especificó al crear la máquina virtual (puede que deba seleccionar Más opciones y luego Usar una cuenta diferente, para especificar las credenciales que escribió cuando creó la máquina virtual). A continuación, seleccione Aceptar. Puede recibir una advertencia de certificado durante el proceso de inicio de sesión. Seleccione Sí para continuar con la conexión.
La conexión se establece correctamente. El puerto 3389 se permite la entrada desde Internet al grupo de seguridad de aplicaciones asg-mgmt. La interfaz de red conectada a la máquina virtual vm-mgmt está en este grupo.
Use el siguiente comando para crear una conexión de escritorio remoto con la máquina virtual vm-web desde la máquina virtual vm-mgmt desde PowerShell:
mstsc /v:vm-web
La conexión se realiza correctamente porque una regla de seguridad predeterminada dentro de cada grupo de seguridad de red permite el tráfico a través de todos los puertos entre todas las direcciones IP de una red virtual. No es posible crear una conexión de escritorio remoto con la máquina virtual vm-web desde Internet porque la regla de seguridad para asg-web no permite el puerto 3389 de entrada desde Internet.
Use el siguiente comando para instalar Microsoft IIS en la máquina virtual vm-web desde PowerShell:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
Una vez completada la instalación de IIS, desconecte la sesión de la máquina virtual vm-web, lo que le deja en la conexión de escritorio remoto de la máquina virtual vm-mgmt. Para ver la pantalla de bienvenida de IIS, abra un explorador de Internet y vaya a http://vm-web..
Desconecte de la máquina virtual vm-mgmt.
En su equipo, escriba el siguiente comando desde PowerShell para recuperar la dirección IP pública del servidor vm-web:
$params = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
Get-AzPublicIpAddress @params | Select IpAddress
Para confirmar que tiene acceso al servidor web vm-web desde fuera de Azure, abra un explorador de Internet en el equipo y vaya a http://<public-ip-address-from-previous-step>
. La conexión se establece correctamente. Se permite el puerto 80 entrante desde Internet al grupo de seguridad de aplicaciones asg-web. La interfaz de red conectada a la máquina virtual vm-web está en este grupo.
Con un cliente SSH de su elección, conéctese a las máquinas virtuales que se crearon anteriormente. Por ejemplo, el siguiente comando se puede usar desde una interfaz de línea de comandos, como Subsistema de Windows para Linux, para crear una sesión SSH con la máquina virtual vm-mgmt. Puede iniciar sesión en las máquinas virtuales mediante las credenciales de Microsoft Entra ID o puede usar la clave SSH que usó para crear las máquinas virtuales. En el ejemplo siguiente, se usa la clave SSH para iniciar sesión en la máquina virtual de administración e iniciar sesión en la máquina virtual web desde la máquina virtual de administración con una contraseña.
Para obtener más información sobre cómo conectarse mediante SSH a una máquina virtual Linux e iniciar sesión con Microsoft Entra ID, consulte Iniciar sesión en una máquina virtual Linux en Azure mediante Microsoft Entra ID y OpenSSH.
Almacenar la dirección IP de la máquina virtual con el fin de SSH
Ejecute el siguiente comando para almacenar la dirección IP de la máquina virtual como variable de entorno:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
La conexión se realiza correctamente porque la interfaz de red conectada a la máquina virtual vm-mgmt está en el grupo de seguridad de la aplicación asg-mgmt, que permite la entrada del puerto 22 desde Internet.
Use el siguiente comando para acceder mediante SSH a la máquina virtual vm-web desde la máquina virtual vm-mgmt:
ssh -o StrictHostKeyChecking=no azureuser@vm-web
La conexión se realiza correctamente porque una regla de seguridad predeterminada dentro de cada grupo de seguridad de red permite el tráfico a través de todos los puertos entre todas las direcciones IP de una red virtual. No es posible conectarse mediante SSH a la máquina virtual vm-web desde Internet porque la regla de seguridad para asg-web no permite el puerto 22 de entrada desde Internet.
Use los siguientes comandos para instalar el servidor web nginx en la máquina virtual vm-web:
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
La máquina virtual vm-web tiene permiso de salida a Internet para recuperar nginx porque una regla de seguridad predeterminada permite todo el tráfico de salida a Internet. Salga de la sesión de SSH vm-web, lo que le deja en el símbolo del sistema username@vm-mgmt:~$
de la máquina virtual vm-mgmt. Escriba el siguiente comando para recuperar la pantalla de bienvenida de nginx desde la máquina virtual vm-web:
curl vm-web
Cierre la sesión de la máquina virtual vm-mgmt. Para confirmar que puede acceder al servidor web vm-web desde fuera de Azure, escriba curl <publicIpAddress>
desde su propio equipo. La conexión se realiza correctamente porque el grupo de seguridad de aplicaciones asg-web, en el que se encuentra la interfaz de red conectada a la máquina virtual vm-web, permite migrar al puerto 80 desde Internet.
Cuando termine de usar los recursos que creó, puede eliminar el grupo de recursos y todos sus recursos.
En Azure Portal, busque y seleccione Grupos de recursos.
En la página Grupos de recursos, seleccione el grupo de recursos test-rg.
En la página test-rg, elija Eliminar grupo de recursos.
Escriba test-rg en Introducir nombre del grupo de recursos para confirmar la eliminación y, luego, seleccione Eliminar.
Cuando ya no lo necesite, puede usar Remove-AzResourceGroup para quitar el grupo de recursos y todos los recursos que contiene:
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
Cuando ya no se necesiten, use az group delete para quitar el grupo de recursos y todos los recursos que contenga.
az group delete \
--name test-rg \
--yes \
--no-wait
Pasos siguientes
En este tutorial ha:
- Creado un grupo de seguridad de red y lo ha asociado a una subred de red virtual.
- Creado grupos de seguridad de aplicaciones para la Web y las tareas de administración.
- Creado dos máquinas virtuales y ha asociado sus interfaces de red con los grupos de seguridad de aplicaciones.
- Probado el filtrado de redes de los grupos de seguridad de aplicaciones.
Para más información acerca de los grupos de seguridad de red, consulte Introducción a los grupos de seguridad de red y Administración de un grupo de seguridad de red.
De forma predeterminada, Azure enruta el tráfico entre subredes. En su lugar, puede elegir enrutar el tráfico entre subredes a través de una máquina virtual, que actúa como un firewall, por ejemplo.
Para aprender a crear una tabla de rutas, avance al siguiente tutorial.