Control del tráfico saliente con Azure Firewall

En este artículo se muestra cómo bloquear el tráfico saliente de la aplicación de Azure App Service a recursos de Azure back-end u otros recursos de red mediante Azure Firewall. Esta configuración ayuda a evitar la filtración de datos y a proteger la aplicación frente a la implantación de programas malintencionados.

De forma predeterminada, una aplicación de App Service puede realizar solicitudes salientes a la red pública de Internet, por ejemplo, al instalar los paquetes de Node.js necesarios desde NPM.org. Si la aplicación está integrada con una red virtual de Azure, puede usar grupos de seguridad de red para controlar las direcciones IP de destino, los puertos y los protocolos del tráfico saliente.

Azure Firewall puede controlar el tráfico saliente en un nivel más granular y le permite filtrar el tráfico en función de la inteligencia sobre amenazas en tiempo real de la ciberseguridad de Microsoft. Puede crear, aplicar y registrar directivas de conectividad de red y aplicaciones de forma centralizada en suscripciones y redes virtuales. Para más información, consulte Características de Azure Firewall.

Siga los procedimientos siguientes para configurar, implementar y usar Azure Firewall para controlar el tráfico saliente de la aplicación de App Service. Para obtener más información sobre los conceptos de red y las mejoras de seguridad de App Service, consulte Características de red y Cero a héroe con App Service, parte 6: Protección de la aplicación web.

Requisitos previos

Tener una aplicación de App Service que use la integración de red virtual regional. Para más información, consulte Habilitación de la integración de red virtual en Azure App Service.

  • En la configuración de integración de red virtual, compruebe que la ruta está habilitada, que es el valor predeterminado.
  • En la aplicación, deshabilite cualquier enrutamiento a través de puntos de conexión de servicio, ya que todo el tráfico saliente se enruta a través del firewall.

1. Creación de las subredes de firewall necesarias

Para implementar un firewall en la red virtual integrada, la red virtual debe tener una subred denominada AzureFirewallSubnet. Además, la tunelización forzada es necesaria de forma predeterminada, por lo que la red también debe tener una subred denominada AzureFirewallManagementSubnet. Para más información, consulte Tunelización forzada de Azure Firewall.

  1. En Azure Portal, vaya a la red virtual integrada con la aplicación.

  2. En la página de la red virtual integrada de la aplicación, seleccione Subredes en el menú de navegación izquierdo.

  3. En la página Subredes , seleccione + Subred.

  4. En la página Agregar una subred , para fines de subred, seleccione Azure Firewall.

    El nombre AzureFirewallSubnet y otras opciones de configuración se asignan automáticamente. En IPv4, asegúrese de que el intervalo especificado tenga al menos /26 en tamaño.

  5. Seleccione Agregar.

  6. Repita el mismo procedimiento para agregar AzureFirewallManagementSubnet, esta vez seleccionando Firewall Management (tunelización forzada) como propósito de subred.

2. Implementación del firewall y obtención de su dirección IP

  1. En la página Información general de la red virtual, seleccione Firewall en el menú de navegación izquierdo.

  2. Seleccione Haga clic aquí para agregar un nuevo firewall.

  3. En la página Crear un firewall , asegúrese de que la suscripción, el grupo de recursos y la región son los mismos que para la red virtual.

  4. En Nombre, proporcione un nombre para el firewall.

  5. En Directiva de firewall, seleccione Agregar nuevo y proporcione un nombre para la directiva.

  6. En Elegir una red virtual, seleccione Usar existente y, a continuación, seleccione la red virtual integrada.

  7. En Dirección IP pública, seleccione una dirección existente o cree una seleccionando Agregar nueva.

  8. En Firewall Management NIC (NIC de administración de firewall), seleccione una dirección existente para La dirección IP pública de administración o cree una seleccionando Agregar nueva.

    Captura de pantalla de la creación de un Azure Firewall en el Azure Portal.

  9. Seleccione Revisar y crear en la parte superior de la página y, cuando se supere la validación, seleccione Crear. El firewall tarda unos minutos en implementarse.

  10. Cuando se complete la implementación, seleccione Ir al recurso.

  11. En la página Información general del firewall, copie la dirección IP privada. La dirección IP privada se usa como la dirección del próximo salto en la regla de enrutamiento de la red virtual.

    Captura de pantalla de obtención de Azure Firewall dirección IP privada.

Enrutar todo el tráfico al firewall

Cuando usted crea una red virtual, Azure crea automáticamente una tabla de rutas predeterminadas para cada una de sus subredes y agrega las rutas predeterminadas del sistema a la tabla. En este paso, creará una tabla de rutas definida por el usuario que enruta todo el tráfico al firewall. Asocie la tabla de rutas definida por el usuario a la subred de App Service en la red virtual integrada.

  1. En la página de la aplicación de Azure Portal , seleccione Redes en el menú de navegación izquierdo.

  2. En la página Redes , en Configuración de subred de integración en la esquina inferior derecha, seleccione No configurado junto a Ruta definida por el usuario.

  3. En la página Tablas de rutas , seleccione Crear.

  4. Asegúrese de que la suscripción y el grupo de recursos son correctos y seleccione la misma región que el firewall.

  5. Proporcione un nombre para la tabla de rutas.

  6. En Propagate gateway routes (Propagar rutas de puerta de enlace), seleccione No.

    Captura de pantalla de la creación de una tabla de rutas de enrutamiento en Azure Portal.

  7. Seleccione Revisar y crear y, luego, Crear.

  8. Una vez completada la implementación, seleccione Ir al recurso o vaya al grupo de recursos y seleccione la tabla de rutas de la lista de recursos.

  9. En la página de la tabla de rutas, seleccione Rutas en el menú de navegación izquierdo.

  10. En la página Rutas , seleccione Agregar y rellene la pantalla Agregar ruta de la siguiente manera:

    • Nombre de ruta: proporcione un nombre para la ruta.
    • Tipo de destino: seleccione Direcciones IP.
    • Direcciones IP de destino/intervalos CIDR: escriba 0.0.0.0/0.
    • Tipo de próximo salto: seleccione Aplicación virtual.
    • Dirección del próximo salto: escriba la dirección IP privada del firewall que copió anteriormente.
  11. Seleccione Agregar.

    Captura de pantalla de cómo agregar una ruta a la tabla de rutas.

  12. En la página de la tabla de rutas, seleccione Subredes en el menú de navegación izquierdo.

  13. En la página Subredes , seleccione Asociar.

  14. En la pantalla Asociar subred , asegúrese de que la red virtual integrada y la subred de la aplicación estén seleccionadas, o selecciónelas y, a continuación, seleccione Aceptar.

    Captura de pantalla de la asociación de la tabla de rutas a la subred App Service.

El tráfico saliente de su aplicación se enruta ahora al firewall a través de la red virtual integrada.

Configuración de directivas de firewall

Para controlar el tráfico saliente de App Service, agregue una regla de aplicación a la directiva de firewall.

  1. En la página Información general del firewall, seleccione su directiva de firewall en Directiva de firewall.

  2. En la página directiva de firewall, seleccione Reglas de aplicación en el menú de navegación izquierdo.

  3. En la página Reglas de aplicación, seleccione Agregar una colección de reglas.

  4. En la pantalla Agregar una colección de reglas , escriba un nombre y una prioridad entre 100 y 65000.

  5. En Reglas, agregue una regla de red con la subred de App Service como dirección de origen y especifique un destino de nombre de dominio completo (FQDN). En el ejemplo siguiente se muestra un FQDN de destino de api.my-ip.io.

  6. Seleccione Agregar.

    Captura de pantalla de la configuración de la regla de directiva de Azure Firewall.

    Nota

    En lugar de especificar la subred de App Service como la dirección de origen, puede usar directamente la dirección IP privada de la aplicación. Puede encontrar la dirección IP privada de su aplicación en la subred mediante la WEBSITE_PRIVATE_IPvariable de entorno.

Comprobación del tráfico saliente

Una manera fácil de comprobar la conexión saliente de la configuración es usar el curl comando desde el Administrador de control de código fuente (SCM) de la aplicación, también llamado Kudu, consola de depuración.

  1. En un navegador, vaya a https://<app-name>.scm.azurewebsites.net/DebugConsole.

  2. En la consola, ejecute curl -s <protocol>://<fqdn-address> con una dirección URL que coincida con la regla de aplicación que configuró. Por ejemplo, en la captura de pantalla siguiente se muestra una respuesta correcta a https://api.my-ip.io.

    Captura de pantalla de la comprobación del tráfico saliente correcto mediante el comando curl en la consola de depuración de SCM.

Si ejecuta curl -s <protocol>://<fqdn-address> con una dirección URL que no coincide con la regla de aplicación que configuró, no recibe ninguna respuesta, lo que indica que el firewall bloqueó la solicitud saliente de la aplicación.

Registro de diagnóstico de firewall

Dado que las solicitudes salientes pasan por el firewall, puede capturarlas en los registros de firewall habilitando el registro de firewall con la regla de aplicación de Azure Firewall. Para más información, consulte Registros estructurados de Azure Firewall.

Si ejecuta los comandos curl con los registros de diagnóstico habilitados, puede encontrarlos en los registros de firewall.

  1. En Azure Portal, vaya a su firewall.
  2. Seleccione Registros en el menú de navegación izquierdo.
  3. En la pantalla Centro de consultas , seleccione Ejecutar en el icono Datos del registro de reglas de aplicación.

Puede ver los dos registros de acceso en el resultado de la consulta.

Captura de pantalla de la consola de depuración de SCM para comprobar el tráfico saliente con errores mediante el comando curl.

Supervisión de métricas y registros de Azure Firewall