¿Qué es el firewall de aplicaciones web de Azure?
Aquí aprenderá los conceptos básicos de Azure Web Application Firewall. Esta introducción le ayudará a evaluar si Azure Web Application Firewall es una herramienta útil para agregar a la estrategia general de seguridad de red de Contoso.
Introducción al firewall de aplicaciones web de Azure
Es posible que pienses que los usuarios malintencionados no se molestarán con tus aplicaciones web. 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 coloca una aplicación en la web, suponga que los actores de amenazas probarán la aplicación para detectar vulnerabilidades casi inmediatamente. También puede suponer que estos sondeos continuarán durante la vigencia de la aplicación.
La mayoría de las pruebas malintencionadas de las aplicaciones web comprueban la presencia de una o varias vulnerabilidades comunes. Si se encuentra, 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 de archivos locales y remotos
- Ataques "flood" HTTP/HTTPS
- Ataques de bot malintencionados
Una tarea común en el ciclo de desarrollo de aplicaciones web implica escribir código para cerrar los agujeros de seguridad más comunes. Escribir el código de seguridad requiere tiempo, experiencia y pruebas.
Azure Web Application Firewall es un servicio de Azure que proporciona protección centralizada de las aplicaciones web hospedadas en Azure. Azure Web Application Firewall protege las aplicaciones web frente a amenazas comunes, como la inyección de código SQL y el scripting entre sitios.
Puede implementar Azure Web Application Firewall en cuestión de minutos. Las aplicaciones web obtienen inmediatamente una protección eficaz frente a amenazas conocidas, todo ello sin escribir una sola línea de código de seguridad.
Características clave del firewall de aplicaciones web de Azure
Para ayudarle a evaluar El firewall de aplicaciones web de Azure, estas son algunas de sus características importantes:
Reglas administradas: el equipo de seguridad de Microsoft crea, mantiene y actualiza las reglas que usa Azure Web Application Firewall para detectar y evitar vulnerabilidades de seguridad comunes. Si cambia una regla o se modifica un conjunto de reglas (consulte la descripción siguiente), Microsoft actualiza Azure Web Application Firewall automáticamente y sin problemas.
Nota:
No puede modificar ni eliminar las reglas administradas que ofrece Azure Web Application Firewall. Sin embargo, si una regla determinada es problemática para su entorno (por ejemplo, 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 buenos bots y protegen contra bots incorrectos. Los malos bots se detectan basándose en Microsoft Threat Intelligence.
Reglas personalizadas: si las reglas administradas que ofrece Azure Web Application Firewall no cubren una amenaza específica para la aplicación web, puede crear una regla personalizada.
Modos: Azure Web Application Firewall puede funcionar en uno de los dos modos. El modo de detección solo registra las solicitudes que infringen una regla, mientras que el modo de prevención bloquea las solicitudes que infringen una regla.
Listas de exclusión: puede configurar El firewall de aplicaciones web de Azure para omitir atributos específicos cuando comprueba las solicitudes.
Directivas: puede combinar un conjunto de reglas administradas, reglas personalizadas, exclusiones y otra configuración de Azure Web Application Firewall en un único elemento denominado directiva de Azure Web Application Firewall. Después, puede aplicar esa 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 marcar 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 (firewall de aplicaciones web) detecta una amenaza.
Ataques comunes que impedía El firewall de aplicaciones web de Azure
En la tabla siguiente se describen los tipos más comunes de amenazas malintencionadas que azure Web Application Firewall ayuda a protegerse.
Amenaza | 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 sesión, cookies y otra información confidencial del usuario. |
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 especialmente configurado a la instrucción de include un script, el atacante puede incluir archivos que están presentes localmente en el servidor. Después, es posible que el atacante pueda acceder a información confidencial y ejecutar comandos de servidor. |
Inserción de PHP | El atacante inserta texto especialmente configurado para engañar al servidor en la ejecución de comandos PHP. Estos comandos permiten al atacante ejecutar código PHP local o remoto. Después, es posible que el atacante pueda acceder a datos confidenciales y ejecutar comandos en el servidor. |
Ataques de protocolo | Un atacante inserta texto especialmente configurado en un encabezado de solicitud HTTP/HTTPS. Según el texto específico insertado en el encabezado, el atacante puede engañar al servidor para mostrar datos confidenciales o ejecutar código. |
Ejecución de comandos remotos | El atacante engaña a un servidor para ejecutar comandos asociados al sistema operativo del servidor. Por ejemplo, en un sistema UNIX, el atacante podría tener que ejecutar ls el servidor 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 aplicación web que permite al atacante obtener un identificador de sesión válido. El atacante engaña a un usuario para autenticar una nueva sesión con ese identificador. A continuación, el atacante secuestra esta sesión validada por el usuario. |
Inyección de código SQL | En un campo de formulario web, el atacante inserta texto (o "inserta") especialmente configurado para engañar al servidor en la ejecución de comandos SQL. Estos comandos permiten al atacante acceder a datos confidenciales, insertar, actualizar o eliminar datos, o ejecutar operaciones SQL. |
Todas las vulnerabilidades de seguridad enumeradas en la tabla anterior solo son posibles cuando el servidor confía en la entrada que recibe. Escribir código que compruebe y sanee solo estas vulnerabilidades de seguridad sería difícil y lento. Solo una pequeña fracción de las posibles vulnerabilidades de seguridad que puede enfrentar una aplicación web se representa en la tabla anterior. Azure Web Application Firewall está diseñado para evitar estos ataques y muchos más.
Saneamiento de la entrada
Las amenazas a las que se enfrentan las aplicaciones web modernas son variadas y sofisticadas. Sin embargo, en la mayoría de los casos, los exploits son posibles porque la aplicación web confía implícitamente en la entrada que recibe.
Por ejemplo, considere un formulario web que permita que un usuario de aplicación web autorizado inicie sesión en la cuenta del usuario. La forma consta de solo tres elementos:
- Un cuadro de texto Nombre de usuario
- 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. A continuación, el script ejecutaría 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 sql
variable tiene el siguiente valor:
SELECT * FROM users WHERE username='support' AND password='1234ABCD'
La aplicación web ejecuta esta instrucción SQL. Si se devuelve un registro de la consulta, la aplicación web inicia la sesión del usuario.
Ahora suponga que un atacante entra 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. Todo lo que hay después de --
se ignora, por lo que la instrucción anterior es equivalente al código siguiente:
SELECT * FROM users WHERE username='admin'
Suponiendo que hay un usuario denominado admin
, este comando inicia la sesión del atacante como usuario administrador; ¡una infracción grave!
El ejemplo anterior es una instancia de una vulnerabilidad de seguridad denominada inyección de código SQL. Los atacantes pueden aprovechar las ventajas de 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 su entrada de usuario. Azure Web Application Firewall supone que toda la entrada es potencialmente malintencionada, por lo que sanea esa entrada.
El saneamiento de la entrada significa diferentes cosas en función del contexto. Por ejemplo, sanear la entrada puede significar quitar elementos de texto claramente peligrosos, como indicadores de comentario 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.