DDOS es una familia de ataques que abruman los sistemas clave en el centro de datos, que incluyen:
- La conexión de red del centro de alojamiento a Internet
- La red interna y los enrutadores del centro de alojamiento
- Tu firewall y balanceadores de carga
- Sus servidores web, servidores de aplicaciones y base de datos.
Antes de comenzar a construir su defensa DDOS, considere cuál es el valor en riesgo en el peor de los casos. Para un servicio no crítico y de uso gratuito para una comunidad pequeña, el valor total en riesgo podría ser un cacahuete. Para un sistema de misión crítica pagado, orientado al público para una empresa establecida de miles de millones de dólares, el valor podría ser el valor de la empresa. En este último caso, no debería usar StackExchange :) De todos modos, para defenderse contra DDOS, necesita un enfoque de defensa en profundidad:
- Trabaje con su centro de alojamiento para comprender los servicios que ofrecen, incluido el filtrado de puertos e IP en sus conexiones de red a Internet y los servicios de firewall que ofrecen. Esto es fundamental: la empresa de alojamiento extrae muchos sitios de Internet a medida que la empresa de alojamiento se ocupa de la interrupción en todo el centro de datos causada por el DDOS en un cliente. Además, durante un ataque DDOS, trabajará muy de cerca con el personal del centro de alojamiento, así que conozca sus números de emergencia y manténgase en buenos términos con ellos :) Deberían poder bloquear regiones internacionales enteras, bloquear completamente servicios o redes específicas. protocolos y otras medidas defensivas de amplio espectro o, alternativamente, permitir solo direcciones IP incluidas en la lista blanca (según su modelo de negocio)
- Mientras esté en el centro de alojamiento, utilice una red de entrega de contenido para distribuir servicios (principalmente estáticos) cerca de sus usuarios finales y ocultar sus servidores reales a los arquitectos de DDOS. La CDN completa es demasiado grande para que un DDOS elimine todos los nodos en todos los países; si el DDOS se centra en un país, al menos otros usuarios siguen estando bien.
Mantenga todos sus sistemas y paquetes de software actualizados con los últimos parches de seguridad , y me refiero a todos ellos:
- Switches administrados: sí, a veces es necesario actualizarlos
- Enrutadores
- Cortafuegos
- Equilibradores de carga
- Sistemas operativos
- Servidores web
- Idiomas y sus bibliotecas
Asegúrese de tener un buen firewall o dispositivo de seguridad configurado y revisado periódicamente por un experto en seguridad calificado . Las reglas estrictas del firewall son una buena defensa contra muchos ataques simples. También es útil poder administrar el ancho de banda disponible para cada servicio abierto.
Disponga de buenas herramientas de supervisión de red ; esto puede ayudarle a comprender:
- Que estás bajo ataque en lugar de simplemente estar bajo una carga pesada
- De dónde proviene el ataque (que puede incluir países con los que normalmente no hace negocios) y
- Cuál es realmente el ataque (puertos, servicios, protocolos, IP y contenido del paquete)
El ataque podría ser simplemente un uso intensivo de servicios legítimos del sitio web (por ejemplo, presionar URI 'legales' que ejecutan consultas o insertar / actualizar / eliminar datos): miles o millones de solicitudes provenientes de decenas a millones de direcciones IP diferentes traerán un sitio a su rodillas Alternativamente, algunos servicios pueden ser tan costosos de ejecutar que solo unas pocas solicitudes causan un DOS; piense en un informe realmente costoso. Por lo tanto, necesita un buen monitoreo a nivel de aplicación de lo que está sucediendo:
- Qué servicios se han invocado y qué argumentos / datos se envían (es decir, iniciar sesión en su aplicación)
- Qué usuarios están haciendo la invocación y desde qué IP (es decir, iniciando sesión en su aplicación)
- Qué consultas e inserciones / actualizaciones / eliminaciones está realizando la base de datos
- Carga promedio, utilización de CPU, E / S de disco, tráfico de red en todas las computadoras (y VM) en su sistema
- Asegurarse de que toda esta información se pueda recuperar fácilmente y de que pueda correlacionar los registros de diferentes equipos y servicios (es decir, asegurarse de que todos los equipos estén sincronizados en el tiempo mediante ntp).
Restricciones y límites sensibles en su aplicación . Por ejemplo, podría:
- Use una función de QoS en el equilibrador de carga para enviar todas las sesiones anónimas a servidores de aplicaciones separados en su clúster, mientras que los usuarios que inician sesión usan otro conjunto. Esto evita que un DDOS anónimo a nivel de aplicación saque a clientes valiosos
- Usar un CAPCHA fuerte para proteger servicios anónimos
- Tiempos de espera de sesión
- Tenga un límite de sesión o un límite de velocidad para ciertos tipos de solicitudes, como informes. Asegúrese de que puede desactivar el acceso anónimo si es necesario
- Asegúrese de que un usuario tenga un límite en la cantidad de sesiones simultáneas (para evitar que una cuenta pirateada inicie sesión un millón de veces)
- Tener diferentes usuarios de aplicaciones de base de datos para diferentes servicios (por ejemplo, uso transaccional versus uso de informes) y usar la administración de recursos de la base de datos para evitar que un tipo de solicitud web abrume a todos los demás
- Si es posible, haga que estas restricciones sean dinámicas, o al menos configurables. De esta manera, mientras está bajo ataque, puede establecer límites temporales agresivos ("estrangulando" el ataque), como solo una sesión por usuario y sin acceso anónimo. Ciertamente, esto no es muy bueno para sus clientes, pero es mucho mejor que no tener ningún servicio.
Por último, pero no menos importante, redacte un documento de plan de respuesta de DOS y haga que lo revisen internamente todas las partes relevantes: negocios, administración, el equipo de desarrollo de software, el equipo de TI y un experto en seguridad. El proceso de redacción del documento hará que usted y su equipo reflexionen sobre los problemas y lo ayudarán a estar preparado en caso de que ocurra lo peor a las 3 de la mañana de su día libre. El documento debe cubrir (entre otras cosas):
- Qué está en riesgo y el costo para la empresa
- Medidas tomadas para proteger los activos
- Cómo se detecta un ataque
- El procedimiento de respuesta y escalamiento planificado
- Procesos para mantener el sistema y este documento actualizados
Entonces, aparte del preámbulo, aquí hay algunas respuestas específicas:
Los DDOS generalmente se bloquean a nivel de servidor, ¿verdad?
En realidad, no: la mayoría de los peores ataques DDOS son de bajo nivel (a nivel de paquete IP) y se manejan mediante reglas de enrutamiento, firewalls y dispositivos de seguridad desarrollados para manejar ataques DDOS.
¿Hay alguna forma de bloquearlo a nivel de PHP, o al menos reducirlo?
Algunos ataques DDOS están dirigidos a la propia aplicación y envían solicitudes HTTP y URI válidas. Cuando aumenta la tasa de solicitudes, sus servidores comienzan a tener problemas y tendrá una interrupción del SLA. En este caso, hay cosas que puede hacer a nivel de PHP:
Monitoreo del nivel de aplicación: asegúrese de que cada servicio / página registre las solicitudes de manera que pueda ver lo que está sucediendo (para que pueda tomar acciones para mitigar el ataque). Algunas ideas:
Tenga un formato de registro que pueda cargar fácilmente en una herramienta de registro (o Excel o similar) y analizar con herramientas de línea de comandos (grep, sed, awk). Recuerde que un DDOS generará millones de líneas de registro. Es probable que deba dividir sus registros (especialmente con respecto a URI, tiempo, IP y usuario) para averiguar qué está sucediendo y necesitar generar datos como:
- A qué URI se accede
- Qué URI están fallando a una tasa alta (un indicador probable de los URI específicos que atacan los atacantes)
- Qué usuarios acceden al servicio
- ¿Desde cuántas direcciones IP accede cada usuario al servicio?
- A qué URI acceden los usuarios anónimos
- Qué argumentos se utilizan para un servicio determinado
- Auditar las acciones de un usuario específico
Registre la dirección IP de cada solicitud. NO invierta el DNS en esto: irónicamente, el costo de hacer esto hace que un DDOS sea más fácil para los atacantes
- Registra todo el URI y el método HTTP, por ejemplo, "GET http://example.com/path/to/service?arg1=ddos "
- Registre el ID de usuario si está presente
- Registrar argumentos HTTP importantes
Límites de tasa razonables: puede implementar límites sobre la cantidad de solicitudes que una IP o un usuario puede realizar en un período de tiempo determinado. ¿Podría un cliente legítimo realizar más de 10 solicitudes por segundo? ¿Pueden los usuarios anónimos acceder a informes costosos?
CAPTCHA para acceso anónimo: implemente un CAPTCHA para todas las solicitudes anónimas para verificar que el usuario es una persona, no un bot DDOS.
¿Cuál es la forma más rápida y común de detener los ataques DDOS?
Probablemente lo más rápido sea ceder al chantaje, aunque esto podría no ser deseable.
De lo contrario, lo primero que debe hacer es ponerse en contacto con su proveedor de alojamiento y / o CDN y trabajar con ellos (si no lo han contactado ya preguntando qué diablos está pasando ...). Cuando ocurre un DDOS, es probable que afecte colateralmente a otros clientes del proveedor de alojamiento, y el proveedor puede estar bajo una presión considerable para cerrar su sitio simplemente para proteger sus recursos. Esté preparado para compartir sus registros (toda la información) con el proveedor; estos registros, combinados con sus monitores de red, pueden proporcionar en conjunto suficiente información para bloquear / mitigar el ataque.
Si está esperando un DDOS, es una muy buena idea calificar a su proveedor de alojamiento en el nivel de protección que puede brindar. Deben tener experiencia en DDOS y herramientas para mitigarlo: comprender sus herramientas, procesos y procedimientos de escalamiento. También pregunte qué soporte tiene el proveedor de hospedaje de sus proveedores ascendentes. Estos servicios pueden significar un mayor costo inicial o mensual, pero trátelo como una póliza de seguro.
Mientras está bajo ataque, deberá tomar sus registros y extraerlos; intente averiguar el patrón del ataque. Debería considerar desactivar el acceso anónimo y limitar los servicios bajo ataque (es decir, disminuir el límite de velocidad de la aplicación para el servicio).
Si tiene suerte y tiene una base de clientes pequeña y fija, es posible que pueda determinar las direcciones IP válidas de sus clientes. Si este es el caso, puede cambiar a un enfoque de lista blanca durante un tiempo. Asegúrese de que todos sus clientes sepan que esto está sucediendo para que puedan llamar si necesitan acceder desde una nueva IP :)
Doug McClean tiene buenos consejos en: https://stackoverflow.com/a/1029613/1395668