¿Cómo puede una aplicación de software defenderse contra DoS o DDoS?

34

La mayoría de las soluciones para los ataques DoS no están en el nivel de la aplicación. En caso de que esté usando un servidor proxy, ¿cuáles son las posibles contramedidas para DoS a nivel de aplicación?

    
pregunta Phoenician-Eagle 12.11.2010 - 16:41
fuente

2 respuestas

18

En primer lugar, es importante distinguir DoS, que significa Denegación de Servicio, y DDoS - Denegación de Servicio Distribuida. En la mayoría de los casos, el DoS se debe a una vulnerabilidad del software; aquí se incluyen parches y actualizaciones como medida de la prevención de ataques. Los DoS contra servicios que no son vulnerables no son ataques distribuidos, son ineficaces y no se usan en la actualidad. Si hablar de DDoS, que creo que fue el punto de tu pregunta, entonces las cosas se complican un poco. IPTABLES en caso de PPS enorme generalmente no ayuda mucho, el ataque viene de diferentes lugares, como en el caso de máquinas zombie. Solo prohibes a los usuarios, pero aparecerá nuevo una y otra vez. Lo que puedo sugerir:

  1. configure el software del servidor para que maneje las conexiones de una manera más liviana: rechace las solicitudes largas y pesadas (por ejemplo, MaxKeepAliveRequests in Apache);
  2. configure su sistema operativo: ajuste de pila de IP (por ejemplo, sysctl en FreeBSD);
  3. cierre los puertos no utilizados, elimine los servicios no utilizados;
  4. mod_evasive: módulo de Apache contra ataques;
  5. configure el servidor ligero como front-end - nginx, por ejemplo.

Este es un tema largo para discutir, recomendaría no detenerse dentro de estas recomendaciones, pero busque en Google para obtener información más precisa.

    
respondido por el anonymous 12.11.2010 - 20:34
fuente
14

Ignorar la parte sobre DDoS por el momento, ya que esto se debe detener principalmente en la red o por la infraestructura del servidor (incluyo IIS / Apache / otro servidor web en eso) ...

Creo que también es importante entender que el DoS (en la capa de la aplicación, y no distribuido) todavía puede verse como un tipo diferente de ataques, a juzgar por el daño:

  • DoS permanente: una vez que se haya montado el ataque, no cesará hasta la intervención manual (admin), como el reinicio del servidor / aplicación, el restablecimiento de la configuración, la eliminación de datos, etc.
  • DoS temporales: duran durante el ataque o finalizan poco después.
  • Inundaciones: simplemente está saturando el servidor con una gran cantidad de solicitudes, que el servidor debe manejar de forma secuencial, impidiendo que usuarios legítimos accedan al sistema. (La mayoría de los DDoS entran en esta categoría).

Cada categoría tiene diferentes tácticas para atacar y, por supuesto, diferentes soluciones para prevenir. Sin embargo, hay algunas fallas de codificación que pueden llevar a DoS, pero esto está lejos de una lista completa:

  • (Ciertos tipos de) desbordamientos de búfer
  • Inyección SQL - can DROP TABLE
  • Bucle en datos controlados por el usuario: se puede hacer "infinito"
  • No cierra las conexiones de base de datos ni los identificadores de archivos, y el usuario puede forzar la apertura de muchos más de estos
  • Bomba XML: al usar entidades DTD, un atacante puede usar fácilmente Gigs de memoria y 100% de CPU en sistemas con multiprocesadores (consulte también enlace y enlace )
  • Bloqueo de la cuenta del usuario: se recomienda el uso de mecanismos de inicio de sesión para implementar un mecanismo de bloqueo, es decir, bloquear al usuario después de 5 contraseñas incorrectas. Si este es un bloqueo "permanente", Y puedo descubrir todos los nombres de usuario (o una parte importante de ellos), puedo repasarlos y poner la contraseña equivocada 5 veces, bloqueando efectivamente a los usuarios ... Y puedo haz esto al administrador también, así que ni siquiera puede iniciar sesión para desbloquear a los otros usuarios.
  • La solicitud pequeña, requiere una respuesta muy grande o un largo tiempo de procesamiento, sin verificar que el usuario todavía está esperando.
  • Solicitud única, inicia múltiples procesos, por ejemplo, enviando muchos correos electrónicos a la vez.
  • Cargar archivos grandes en un servidor con un pequeño disco / pequeña base de datos / servidor de correo / cuota de carpeta limitada / etc.
  • DoS de "Negocios" - por ejemplo, enviando muchas solicitudes de soporte, que un humano tendrá que filtrar

Sí, como puede ver, hay muchos diferentes patrones y fallas que pueden llevar a DoS o permitir inundaciones. No es una clase única de ataque, sino una categoría de daño.
 Protegerse contra todos ellos requiere abordar cada uno de ellos e implementar un control apropiado, y luego realizar un modelado de amenazas para ver si hay otras amenazas relevantes que puedan afectar su disponibilidad.

Una recomendación general que puede considerar, dependiendo de su sistema y NO de una bala de plata para todos estos ataques (pero útil, no obstante), es la implementación de un servicio de "vigilancia". Este servicio puede monitorear la aplicación, reiniciarla si es necesario, notificar a un administrador si es necesario, etc. NO se recomienda para cualquier aplicación web ol '...

    
respondido por el AviD 14.11.2010 - 13:04
fuente

Lea otras preguntas en las etiquetas