Filtrado del tráfico de red con un grupo de seguridad de red mediante la CLI de Azure
Puede filtrar el tráfico de red entrante y saliente de una subred de una red virtual con un grupo de seguridad de red. Los grupos de seguridad de red contienen reglas de seguridad que filtran el tráfico de red por dirección IP, puerto y protocolo. Las reglas de seguridad se aplican a los recursos implementados en una subred. En este artículo aprenderá a:
- Crear un grupo de seguridad de red y reglas de seguridad
- Crear una red virtual y asociar un grupo de seguridad de red a una subred
- Implementar máquinas virtuales (VM) en una subred
- Probar los filtros de tráfico
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- 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.
Crear un grupo de seguridad de red
Un grupo de seguridad de red contiene reglas de seguridad. Las reglas de seguridad especifican un origen y destino. Los orígenes y destinos pueden ser grupos de seguridad de aplicaciones.
Creación de grupos de seguridad de aplicaciones
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 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-servers \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt-servers \
--location westus2
Crear un grupo de seguridad de red
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
Creación de reglas de seguridad
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-servers 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-servers" \
--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-servers 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-servers" \
--destination-port-range 22
En este artículo, asg asg-mgmt-servers expone SSH (puerto 22) a Internet. Para entornos de producción, use una conexión de red VPN o privada para administrar los recursos de Azure en lugar de exponer el puerto 22 a Internet.
Creación de una red virtual
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 \
--network-security-group nsg-1
Creación de máquinas virtuales
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 --asgs asg-web-servers
hace que Azure incluya la interfaz de red que se crea para la máquina virtual como un miembro del grupo de seguridad de aplicaciones asg-web-servers. 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 "" \
--asgs asg-web-servers \
--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. La opción --asgs asg-mgmt-servers
hace que Azure incluya la interfaz de red que se crea para la máquina virtual como un miembro del grupo de seguridad de aplicaciones asg-mgmt-servers.
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 "" \
--asgs asg-mgmt-servers \
--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.
Habilitación del inicio de sesión de Microsoft Entra ID para las máquinas virtuales
En el siguiente ejemplo de código se instala la extensión para habilitar un inicio de sesión de Microsoft Entra ID para una máquina virtual Linux. Las extensiones de máquina virtual son aplicaciones pequeñas que realizan tareas de automatización y configuración posterior a la implementación en máquinas virtuales de Azure.
az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory \
--name AADSSHLoginForLinux \
--resource-group test-rg \
--vm-name vm-web
az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory \
--name AADSSHLoginForLinux \
--resource-group test-rg \
--vm-name vm-mgmt
Probar los filtros de tráfico
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. En los pasos anteriores, habilitamos el inicio de sesión de Microsoft Entra ID para las máquinas virtuales. 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-servers, 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-servers 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-servers, en el que se encuentra la interfaz de red conectada a la máquina virtual vm-web, permite migrar al puerto 80 desde Internet.
Limpieza de recursos
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 artículo, ha creado un grupo de seguridad de red y lo ha asociado a una subred de una red virtual. 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 obtener información sobre cómo hacerlo, consulte Creación de una tabla de rutas.
Comentaris
https://aka.ms/ContentUserFeedback.
Properament: al llarg del 2024 eliminarem gradualment GitHub Issues com a mecanisme de retroalimentació del contingut i el substituirem per un nou sistema de retroalimentació. Per obtenir més informació, consulteu:Envieu i consulteu els comentaris de