Configura el servicio de protección con DoS para Java 8

El servicio de protección contra denegación del servicio (DoS) de App Engine te permite proteger tu aplicación para que no se quede sin cuota cuando se la somete a ataques de denegación de servicio o formas similares de abuso. Puedes incluir direcciones IP o subredes en la lista negra, de forma que las solicitudes enrutadas desde esas direcciones o subredes se bloqueen antes de que se llame al código de tu aplicación. Para estas solicitudes no se consumen asignaciones de recursos, facturadas o no.

De forma predeterminada, App Engine entrega una página de error genérica a las direcciones de la lista negra. En su lugar, puedes configurar tu aplicación para entregar una respuesta personalizada.

Antes de comenzar

Crea un archivo dos.xml en el directorio WEB-INF de tu aplicación. En este archivo, especificarás las direcciones IP y redes en tu lista negra.

Cómo bloquear solicitudes con listas negras de DoS

Puedes incluir direcciones IP y subredes IP en la lista negra para evitar que accedan a tu aplicación.

dos.xml está limitado a 100 entradas, por lo que es posible que sea necesario bloquear subredes completas si te enfrentas a un ataque de DoS. Esta también es una forma eficaz de protegerte si descubres que varias direcciones IP de la misma red son parte de un ataque de DoS en tu app.

Cómo crear entradas en la lista negra para direcciones IP

Puedes bloquear el acceso de una o más direcciones IP a tu app si defines esas direcciones IPv4 o IPv6 en tu archivo dos.xml. Por ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<blacklistentries>
  <blacklist>
    <subnet>1.2.3.4</subnet>
    <description>a single IP address</description>
  </blacklist>
  <blacklist>
    <subnet>abcd::123:4567</subnet>
    <description>an IPv6 address</description>
  </blacklist>
</blacklistentries>

En un ataque de denegación de servicio distribuido (DSD), es probable que debas bloquear subredes completas en lugar de direcciones IP individuales.

Consulta la referencia de dos.yaml para obtener ejemplos.

Después de crear tu dos.xml, debes subirlo a tu app.

Cómo crear entradas en la lista negra para subredes IP

Puedes bloquear el acceso de una subred IP a tu aplicación si la defines en formato CIDR. Puedes usar la herramienta IP a CIDR para ayudarte a crear reglas con la notación CIDR.

<?xml version="1.0" encoding="UTF-8"?>
<blacklistentries>
  <blacklist>
    <subnet>abcd::123:4567/48</subnet>
    <description>an IPv6 subnet</description>
  </blacklist
  <blacklist>
    <subnet>abcd::123:4567/48</subnet>
    <description>an IPv6 subnet</description>
  </blacklist
</blacklistentries>

Consulta la referencia de dos.yaml para obtener ejemplos.

Después de crear tu dos.xml, debes subirlo a tu app.

Cómo crear mensajes de error personalizados para solicitudes en la lista negra

De forma predeterminada, se entrega una página de error genérica a las solicitudes bloqueadas por el servicio de protección contra DoS. Los ataques de denegación de servicio distribuidos podrían incluir máquinas infectadas de usuarios legítimos. En esta página, esos usuarios podrían encontrar explicaciones sobre el motivo de la denegación del acceso.

  1. Crea un archivo estático en el directorio de tu aplicación para entregar a las solicitudes bloqueadas por el servicio de protección contra DoS.

  2. En el archivo appengine-web.xml, especifica un controlador de errores para las respuestas DoS. Para ello, proporciona la ruta al archivo estático y agrega el tipo de <static-error-handlers> de dos_api_denial:

    <static-error-handlers>
      <handler error-code="dos_api_denial" file="dos-response.html" />
    </static-error-handlers>
    

Cómo borrar todas las entradas de la lista negra

Para borrar todas las entradas de la lista negra:

  1. Edita el archivo dos.xml para que solo contenga lo siguiente:

    <?xml version="1.0" encoding="UTF-8"?>
    <blacklistentries/>
    

    Borrar dos.xml no quita las listas negras.

  2. Vuelve a implementar tu dos.xml para que los cambios surtan efecto.

Observa errores de denegación de DoS en Console

Puedes ver un gráfico del número de solicitudes que se rechazan:

  1. Ve al panel de App Engine en Google Cloud Console:

    Abrir el gráfico de detalles de error de App Engine

  2. Ajusta el marco de tiempo del gráfico según sea necesario para ver los resultados.

Sube tu lista negra de DoS

Puedes usar appcfg.sh para subir configuraciones de DoS. Cuando subes tu aplicación a App Engine con appcfg.sh update, el servicio de protección contra DoS se actualiza con el contenido del archivo de configuración dos.xml.

Para actualizar solo el archivo de configuración de DoS sin subir el resto de tu aplicación, debes usar el siguiente comando:

appcfg.sh update_dos [PATH_TO_CONFIG_FILE]/dos.xml

Qué sigue

  • Configura Cloud Monitoring para identificar rápidamente los problemas y enviarte alertas.
  • Lee la experiencia de un cliente sobre cómo respondió a un ataque de denegación de servicio distribuido (DSD) (enero de 2013).