Evitar ataques de denegación de servicio
net IP v4. TCP_sync cookies = 1
net IP v4.
net.ipv4.tcp_synack_retries = 2
Habilite la cookie SYN, establezca la longitud máxima de la cola de SYN y establezca el número máximo de reintentos de SYN+ACK.
La cookie SYN se utiliza para reducir la presión sobre los recursos del servidor. Antes de habilitarlo, el servidor asigna espacio de almacenamiento inmediatamente después de recibir el paquete SYN, selecciona aleatoriamente un número como número SYN y envía el paquete SYN+ACK. Luego guarde la información del estado de la conexión y espere la confirmación del cliente. Una vez habilitada la cookie SYN, el servidor ya no asigna espacio de almacenamiento y establece un número SYN mediante un algoritmo de números aleatorios basado en semillas de tiempo, reemplazando el número SYN completamente aleatorio. Después de enviar el mensaje de confirmación SYN+ACK, los recursos se borran sin guardar ninguna información de estado. Hasta que el servidor reciba el último paquete ACK del cliente, utiliza el algoritmo de verificación de cookies para identificar si coincide con el número de secuencia del mensaje SYN+ACK enviado. Si coincide, se completa el protocolo de enlace. se descarta. Por supuesto, el método de ataque mixto SYN en el ataque avanzado mencionado anteriormente es un contraataque contra este método de defensa, y sus ventajas y desventajas están determinadas por la configuración del hardware de ambas partes.
Tcp_max_syn_backlog utiliza los recursos de memoria del servidor a cambio de una cola de espera más larga, de modo que los paquetes de ataque no ocuparán todas las conexiones y los usuarios normales no podrán completar el protocolo de enlace. Net.ipv4.tcp_synack_retries es para reducir la cantidad de reintentos del mensaje SYN + ACK del servidor y liberar los recursos en espera lo antes posible. Estas tres medidas corresponden uno por uno a los tres peligros del ataque y están completamente dirigidas. Sin embargo, estas medidas también son un arma de doble filo, que puede consumir más recursos de memoria del servidor e incluso afectar el establecimiento de conexiones TCP por parte de los usuarios normales. Es necesario evaluar cuidadosamente los recursos de hardware del servidor y establecer el tamaño del ataque.
Además de personalizar la pila de protocolos TCP/IP, otro enfoque común es el esquema de pérdida de paquetes con prioridad TCP, que utiliza el mecanismo de retransmisión del protocolo TCP para identificar usuarios normales y atacar paquetes. Cuando el dispositivo de defensa recibe un mensaje SYN de una dirección IP, simplemente compara si la IP existe en la lista blanca y, de ser así, la reenvía al backend. Si no está en la lista blanca, verifique si es el primer mensaje SYN de la IP dentro de un cierto período de tiempo; de lo contrario, verifique si reenviar el mensaje si se reenvía, reenvíelo y agréguelo a la lista blanca; si no, deséchelo y agréguelo a la lista negra. Si el mensaje SYN es la primera vez, se descartará, esperará un período de tiempo e intentará aceptar el mensaje de retransmisión SYN desde esta IP. Si el tiempo de espera se agota, se considera que el mensaje de ataque está en la lista negra.
La primera solución a la pérdida de paquetes afectará ligeramente la experiencia del usuario, porque la pérdida y retransmisión de paquetes aumentará el tiempo de respuesta del servicio. En vista de esto, se desarrolló un mejor esquema de proxy TCP. Todos los mensajes de datos SYN son aceptados por el dispositivo desinfectante y procesados de acuerdo con el esquema de cookies SYN. Además de establecer con éxito una dirección IP de protocolo de enlace de tres vías TCP con el dispositivo, se determina que el usuario legítimo se agrega a la lista blanca. El dispositivo disfraza la dirección IP real del cliente y luego completa el protocolo de enlace de tres vías con el servidor real. y luego reenvía los datos. Sin embargo, si no hay una dirección IP que complete el protocolo de enlace de tres vías con el dispositivo dentro del tiempo especificado, se determina que la dirección IP maliciosa estará bloqueada durante un cierto período de tiempo.
Además de la cookie SYN combinada con el proxy TCP, el dispositivo de limpieza también tiene la capacidad de detectar varios paquetes de bits de bandera TCP con formato incorrecto y probar la reacción del cliente devolviendo una respuesta inesperada al mensaje SYN, que puede identificar el acceso normal y el comportamiento malicioso.
El hardware del equipo de limpieza tiene un chip procesador de red dedicado, un sistema operativo especialmente optimizado y una pila de protocolo TCP/IP, que puede manejar un tráfico muy grande y colas SYN. La defensa contra ataques HTTP Flood se lleva a cabo principalmente mediante el almacenamiento en caché. Los resultados se devuelven directamente desde la memoria caché del dispositivo tanto como sea posible para proteger el negocio de back-end. Las grandes empresas de Internet tendrán enormes nodos CDN para almacenar en caché el contenido.
Cuando un atacante avanzado penetra en la memoria caché, el dispositivo de limpieza intercepta las solicitudes HTTP para un procesamiento especial. El método más simple es contar la frecuencia de las solicitudes HTTP desde la IP de origen y poner en la lista negra las direcciones IP que exceden una determinada frecuencia. Este método es demasiado simple, puede provocar fácilmente una muerte accidental y no puede bloquear ataques desde el servidor proxy, por lo que se abolió gradualmente y se reemplazó por la solución de reconocimiento hombre-máquina de salto de JavaScript.
HTTP Flood es un programa que simula solicitudes HTTP. En términos generales, los datos devueltos por el servidor no se analizarán, y mucho menos JS y otros códigos. Por lo tanto, cuando el dispositivo de limpieza intercepta la solicitud HTTP, devolverá un código JavaScript especial. El navegador del usuario normal lo procesará y saltará normalmente sin afectar el uso, mientras que el atacante atacará el lugar vacío. La defensa contra ataques DNS también tiene métodos de defensa similares a HTTP. La primera solución es el almacenamiento en caché. El segundo tipo es la retransmisión, que puede descartar directamente el mensaje DNS y retransmitir la solicitud de nivel UDP, o puede devolver una respuesta especial para obligar al cliente a utilizar el protocolo TCP para retransmitir la solicitud de consulta DNS.
Especialmente para proteger el DNS del dominio autorizado, el dispositivo extraerá la lista de nombres de dominio DNS recibidos y la lista de IP DNS del ISP durante el horario comercial normal para realizar una copia de seguridad. Durante un ataque, todas las solicitudes excepto esta lista se descartarán. reduciendo considerablemente el rendimiento. Para los nombres de dominio, se implementa el mismo mecanismo de lista blanca de nombres de dominio y los nombres de dominio que no están en la lista blanca se analizan y descartan. La defensa contra el ataque de Slowloris es relativamente simple y hay dos soluciones principales.
El primero es contar la duración de cada conexión TCP, calcular el número de mensajes transmitidos por unidad de tiempo y realizar una identificación precisa. En una conexión TCP, tanto muy pocos como demasiados mensajes HTTP son anormales. Muy pocos mensajes HTTP pueden ser un ataque de conexión lenta, mientras que demasiados mensajes HTTP pueden ser un ataque de inundación HTTP que utiliza el protocolo HTTP 1.1 para enviar múltiples solicitudes HTTP en una única conexión TCP.
El segundo es limitar el tiempo máximo permitido para la transmisión del encabezado HTTP. Si la transmisión del encabezado HTTP no se ha completado después del tiempo especificado, se determinará directamente que la dirección IP de origen es un ataque de conexión lenta y la conexión se desconectará y se incluirá en la lista negra.