¿Qué es el firewall de aplicaciones web de Azure?

Completado

Aquí, aprenderá los conceptos básicos relacionados con Azure Web Application Firewall. Esta introducción le ayudará a evaluar si Azure Web Application Firewall es una herramienta útil para agregarla a la estrategia general para la seguridad de la red de Contoso.

Información general sobre Azure Web Application Firewall

Es posible que crea que la aplicaciones web no se verán afectadas por usuarios malintencionados. Pero las pruebas han revelado que los bots o los actores malintencionados sondean las aplicaciones web nuevas en busca de puntos débiles a los pocos minutos de su implementación. Si publica una aplicación en Internet, debe contar con que los actores de amenazas probarán casi de inmediato la aplicación para detectar vulnerabilidades. También puede tener la seguridad de que estos sondeos seguirán produciéndose durante toda la vigencia de la aplicación.

La mayoría de las pruebas malintencionadas que se realizan en las aplicaciones web buscan detectar la presencia de una o varias vulnerabilidades comunes. Si encuentra alguna, un actor de amenazas podría usar estas vulnerabilidades para ejecutar ataques como las siguientes vulnerabilidades de seguridad:

  • Inyección de código SQL
  • Scripts entre sitios
  • Inclusión local y remota de archivos
  • Ataques "flood" HTTP/HTTPS
  • Ataques de bot malintencionados

Una tarea común en el ciclo de desarrollo de aplicaciones web consiste en escribir código para solventar las vulnerabilidades de seguridad más comunes. El proceso para escribir código de seguridad requiere tiempo, experiencia y pruebas.

Azure Web Application Firewall es un servicio de Azure que proporciona protección centralizada para las aplicaciones web hospedadas en Azure. Azure Web Application Firewall protege las aplicaciones web frente a amenazas comunes, como inyección de código SQL y scripting entre sitios.

Diagram of an Azure virtual network with Azure Web Application Firewall. Bots and threats are blocked from a web app; legitimate requests are allowed.

Puede implementar Azure Web Application Firewall en cuestión de minutos. Las aplicaciones web obtendrán de inmediato protección eficaz contra amenazas conocidas, sin necesidad de escribir una sola línea de código de seguridad.

Características clave de Azure Web Application Firewall

Para ayudarle a evaluar Azure Web Application Firewall, le indicamos a continuación algunas de sus principales características:

  • Reglas administradas: el equipo de seguridad de Microsoft crea, mantiene y actualiza las reglas que Azure Web Application Firewall usa para detectar y evitar las vulnerabilidades de seguridad comunes. Si se cambia una regla o se modifica un conjunto de reglas básico (consulte la descripción siguiente), Microsoft actualiza Azure Web Application Firewall de forma automática y sin problemas.

    Nota:

    No se pueden modificar ni eliminar las reglas administradas que ofrece Azure Web Application Firewall. Aun así, si una regla determinada es problemática para su entorno (por ejemplo, si bloquea el tráfico legítimo a la aplicación web), puede crear exclusiones o deshabilitar la regla o el conjunto de reglas. También puede crear reglas personalizadas para sobrescribir el comportamiento predeterminado.

  • Reglas de bot: las reglas de bot identifican los bots válidos y protegen frente a los bots malintencionados. Los bots malintencionados se detectan en función de la Inteligencia contra amenazas de Microsoft.

  • Reglas personalizadas: si las reglas administradas que ofrece Azure Web Application Firewall no contemplan una amenaza específica para la aplicación web, puede crear una regla personalizada.

  • Modos: Azure Web Application Firewall puede funcionar en uno de dos modos. El modo de detección solo registra las solicitudes que infringen una regla, mientras que el de prevención registra y bloquea las solicitudes que infringen una regla.

  • Listas de exclusión: puede configurar Azure Web Application Firewall para que omita atributos específicos al comprobar las solicitudes.

  • Directivas: puede combinar un conjunto de reglas administradas, reglas personalizadas, exclusiones y otros valores de Azure Web Application Firewall en un único elemento denominado "directiva de Azure Web Application Firewall". Después, puede aplicar dicha directiva a varias aplicaciones web para facilitar la administración y el mantenimiento.

  • Límites de tamaño de solicitud: puede configurar Azure Web Application Firewall para que marque las solicitudes que son demasiado pequeñas o demasiado grandes.

  • Alertas: Azure Web Application Firewall se integra con Azure Monitor. Esta integración proporciona alertas casi en tiempo real cuando WAF detecta una amenaza.

Ataques comunes que impide Azure Web Application Firewall

En la tabla siguiente se describen los tipos más comunes de amenazas malintencionadas contra las que protege Azure Web Application Firewall.

Threat Descripción
Scripts entre sitios Un actor de amenazas usa una aplicación web para enviar código malintencionado al explorador web de otro usuario. El explorador ejecuta el código, que proporciona al script acceso a los datos de la sesión del usuario, las cookies y otra información confidencial.
Inclusión de archivos locales Un atacante aprovecha las vulnerabilidades del control de las instrucciones include de un servidor, la mayoría de las veces en scripts PHP. Al pasar texto configurado especialmente a la instrucción include de un script, el atacante puede incluir archivos que están presentes localmente en el servidor. Después, el atacante podría acceder a información confidencial y ejecutar comandos de servidor.
Inyección de código PHP El atacante inserta texto configurado especialmente para engañar al servidor de modo que ejecute comandos PHP. Estos comandos permiten al atacante ejecutar código PHP local o remoto. Después, el atacante podría acceder a datos confidenciales y ejecutar comandos en el servidor.
Ataques a protocolos Un atacante inserta texto configurado especialmente en un encabezado de solicitud HTTP/HTTPS. En función del texto específico que se inserta en el encabezado, el atacante puede engañar al servidor de modo que muestre datos confidenciales o ejecute código.
Ejecución de comandos remotos El atacante engaña a un servidor de modo que ejecute comandos asociados con el sistema operativo del servidor. En un sistema UNIX, por ejemplo, el atacante podría conseguir que el servidor ejecute ls para obtener una lista de directorios.
Inclusión remota de archivos Es lo mismo que la inclusión de archivos locales, con la excepción de que el atacante envía texto configurado especialmente para el servidor que pasa un archivo remoto (es decir, un archivo en un servidor remoto controlado por el atacante) a la instrucción include de un script.
Fijación de sesión Un atacante aprovecha una vulnerabilidad de la aplicación web que le permite obtener un identificador de sesión válido. El atacante engaña a un usuario para que autentique una nueva sesión con ese identificador. Después, el atacante se hace con el control de esta sesión validada por el usuario.
Inyección de código SQL En el campo de un formulario web, el atacante inserta texto configurado especialmente para engañar al servidor de modo que ejecute comandos SQL. Estos comandos permiten al atacante acceder a datos confidenciales, insertar, actualizar o eliminar datos, o ejecutar operaciones de SQL.

Todas las vulnerabilidades de seguridad que se enumeran en la tabla anterior solo son posibles cuando el servidor confía en la entrada que recibe. El proceso de escribir código que compruebe y sanee solo estas vulnerabilidades es difícil y lento. En la tabla anterior solo se muestra una pequeña parte de las posibles vulnerabilidades de seguridad a las que puede enfrentarse una aplicación web. Azure Web Application Firewall está diseñado para impedir estos ataques y muchos otros.

Saneamiento de la entrada

Las amenazas a las que se enfrentan las aplicaciones web modernas son variadas y sofisticadas. Aun así, en la mayoría de los casos, la razón que hace posible la existencia de vulnerabilidades de seguridad es que la aplicación web confía implícitamente en la entrada que recibe.

Por ejemplo, considere un formulario web que permite a un usuario autorizado de la aplicación web iniciar sesión en la cuenta de usuario. El formulario consta solo de tres elementos:

  • Un cuadro de texto Nombre de usuario
  • Un cuadro de texto Contraseña
  • Un botón Iniciar sesión

Cuando un usuario autorizado rellena el formulario y selecciona Iniciar sesión, un script de aplicación web almacena el nombre de usuario y la contraseña en variables. Supongamos que esas variables se denominan userName y userPassword, respectivamente. Después, el script ejecuta la siguiente instrucción:

sql = "SELECT * FROM users WHERE username='" + userName + "' AND password='" + userPassword + "'"

Por ejemplo, si el nombre de usuario es support y la contraseña es 1234ABCD, la variable sql tendrá el valor siguiente:

SELECT * FROM users WHERE username='support' AND password='1234ABCD'

La aplicación web ejecuta esta instrucción SQL. Si la consulta devuelve un registro, la aplicación web inicia la sesión del usuario.

Ahora supongamos que un atacante escribe admin'-- en el campo Nombre de usuario y deja el campo Contraseña en blanco. En este caso, esta es la instrucción SQL resultante:

SELECT * FROM users WHERE username='admin'--' AND password=''

En muchos sistemas SQL, los guiones dobles (--) marcan el inicio de un comentario. Se omite todo lo que aparece después de --, por lo que la instrucción anterior es equivalente al código siguiente:

SELECT * FROM users WHERE username='admin'

Suponiendo que haya un usuario llamado admin, este comando iniciará la sesión del atacante como usuario administrador, lo que se considera una infracción grave.

Network diagram depicting two sign-in attempts, with Azure Web Application Firewall allowing the authorized sign-in and denying the unauthorized sign-in.

En el ejemplo anterior se ilustra una vulnerabilidad de seguridad denominada inyección de código SQL. Los atacantes pueden aprovechar la inyección de código SQL y otras vulnerabilidades de seguridad en las aplicaciones web que confían en todas las entradas.

Azure Web Application Firewall crea una barrera de no confianza entre una aplicación web y la entrada de usuario. Azure Web Application Firewall da por supuesto que todas las entradas son potencialmente malintencionadas, por lo que sanea la entrada.

El concepto de saneamiento de la entrada conlleva cuestiones diferentes en función del contexto. Por ejemplo, el saneamiento de la entrada puede significar la eliminación de elementos de texto claramente peligrosos, como los indicadores de comentario de SQL. Independientemente de cómo se lleve a cabo el saneamiento, tiene como resultado una entrada que no puede perjudicar a la aplicación web ni a sus datos de back-end.