Red de conocimiento informático - Aprendizaje de programación - ¿Qué es DOS? ¿Cómo funciona?

¿Qué es DOS? ¿Cómo funciona?

Existen dos conceptos diferentes de lo que comúnmente se llama DOS, a saber, Denegación de Servicio o Sistema Operativo de Disco. Por lo general, DoS (O minúscula) se refiere a denegación de servicio y DOS (O mayúscula) se refiere a un sistema operativo de disco.

Con el desarrollo de la tecnología informática, la red también se está popularizando y desarrollando rápidamente. Si bien las personas disfrutan de las diversas comodidades que ofrece Internet, también son atacadas por muchos piratas informáticos. Entre los muchos tipos de ataques, existe un ataque llamado DoS (Denial of Service), que es una tecnología de ataque de red común y efectiva que explota fallas de protocolo o sistema y adopta estrategias de engaño o disfraz para llevar a cabo ataques de red, lo que en última instancia provoca que la víctima El sistema se paraliza por agotamiento de recursos o por falta de respuesta correcta, imposibilitando la prestación normal de servicios a los usuarios legítimos. Proporcionar servicios normales a usuarios legítimos. Parece poco notable, pero tiene un amplio rango de ataque, un fuerte ocultamiento, simple y efectivo, y se ha convertido en una poderosa tecnología de ataque en la red, lo que ha afectado en gran medida los servicios efectivos de la red y los sistemas host comerciales. Entre ellos, DDoS (Denegación de Servicio Distribuido) es más conocido por su gran escala, su fuerte ocultamiento y su dificultad de prevención.

Después de un estudio en profundidad de los principios del firewall netfilter del kernel de Linux 2.4, se analizó el proceso de diseño, implementación y desarrollo del firewall bajo la arquitectura netfilter. Utilizando kylix 3.0 como entorno de desarrollo, el autor desarrolló y probó un firewall híbrido de filtrado de paquetes y proxy de aplicaciones basado en la arquitectura netfilter. El sistema de firewall consta de un módulo de gestión de filtrado de paquetes, un módulo de grabación de rutas, un módulo de agente de aplicación (agente de sincronización), un módulo de defensa de escaneo y un módulo de registro. El filtrado de paquetes se implementa en base a netfilter iptables, y la traducción de direcciones de red también se implementa en el módulo de administración de filtrado de paquetes. El módulo de registro de enrutamiento se implementa modificando el programa TCP / IP en el kernel de Linux y recompilando el kernel para que el kernel admita; la función de registro de enrutamiento; el proxy HTTP y los servicios de proxy generales se implementan en el módulo de proxy de la aplicación. El programa de agente HTTP se implementa en base a SQUID, mientras que el agente universal se implementa a través de un proceso de proxy; el módulo de defensa de escaneo monitorea principalmente si el escaneo ocurre a través de un proceso de demostración de defensa de escaneo de red, el módulo de registro selecciona principalmente la ubicación del registro; Hay dos opciones: notificación local y notificación por correo electrónico. Los ataques de red comunes, como la suplantación de direcciones IP comunes, la suplantación de rutas de origen de IP, la suplantación de redirección ICMP y el secuestro de IP, se analizan y resuelven en el módulo de gestión de filtrado. El secuestro de IP se logra mediante la inyección de funciones de enlace en la pila de protocolos. Este artículo también analiza cómo reforzar el sistema operativo, cerrar algunos servicios peligrosos y poco comunes, para que el firewall pueda construirse de forma relativamente segura, y también actualizar la compilación del sistema al último kernel estable.

El ataque DoS es uno de los tipos de ataques de red más comunes. Ataca deliberadamente las fallas del protocolo de red o agota directamente los recursos del objetivo por algún medio, con el propósito de hacer que la computadora o red objetivo no pueda capturar servicios normales o acceso a recursos, de modo que el servicio del sistema objetivo deje de responder o incluso falle. En este ataque no compromete el servidor de destino ni el dispositivo de red de destino. Estos recursos de servicio incluyen ancho de banda de red, pilas de sistemas, procesos abiertos o conexiones permitidas. Este ataque provoca el agotamiento de los recursos y ninguna velocidad de procesamiento de la computadora, capacidad de memoria o velocidad del ancho de banda de la red puede evitar las consecuencias de este ataque. Cualquier recurso tiene un límite, por lo que siempre hay una manera de hacer que el valor de la solicitud supere ese límite, provocando el agotamiento de los recursos del servicio proporcionado.

Hay muchos tipos de ataques DoS, incluidos ataques terrestres, pings de muerte, ataques de lágrimas, ataques de pitufos e inundaciones SYN.

Según las estadísticas, entre todos los ataques de piratas informáticos, los ataques de inundación SYN son la tecnología de ataque DoS más común y más fácil de explotar.

1. Principio del ataque

Para comprender el ataque de inundación SYN, primero debemos comprender el protocolo de enlace de tres vías de la conexión TCP. En el protocolo TCP/IP, el protocolo TCP establece una conexión mediante un protocolo de enlace de tres vías para proporcionar servicios de conexión confiables.

Primer apretón de manos: para establecer una conexión, el cliente envía un paquete SYN (SYN = i) al servidor y entra en el estado SYN SEND, esperando la confirmación del servidor;

Segundo apretón de manos: el servidor recibe Datos SYN Después del paquete, se debe confirmar el SYN (ACK = i + 1) del cliente. De manera similar, el propio }Jj' también enviará un paquete SYN ((SYN j)}, es decir, un paquete SYN + ACK. Al mismo tiempo, el servidor ingresa al estado SYN_RECV;

El tercer protocolo de enlace: después de recibir diez paquetes SYN ACK del servidor, el cliente envía un paquete de confirmación ACK (ACK = j + 1) al servidor. Se envía el paquete, el cliente y el servidor ingresan al estado ESTABLECIDO, completa el protocolo de enlace de tres vías y el cliente y el servidor comienzan a transmitir datos.

En el proceso anterior, hay algunos conceptos importantes: <. /p>

Semiconexión: paquete SYN recibido. El estado de la conexión cuando no se ha recibido el paquete ACK se denomina semiconexión, es decir, una conexión TCP que no ha completado completamente el protocolo de enlace de tres vías. /p>

Cola de semiconexión: en el protocolo de protocolo de enlace de tres vías, el servidor mantiene una cola de semiconexión. Esta cola abre una entrada para el paquete SYN de cada cliente (SYN = i), lo que indica que el servidor lo ha recibido. el paquete SYN, ha enviado un acuse de recibo al cliente y está esperando el paquete de acuse de recibo del cliente para la conexión identificada por estas entradas. El servidor está en el estado SYN_RECV. Cuando el servidor recibe el paquete de confirmación del cliente, la entrada se eliminará. y el servidor entrará en el estado ESTABLECIDO.

Parámetro Backlog: Indica el número máximo de medias conexiones que la cola puede acomodar.

p>

Número de retransmisiones SYN-ACK: Después de la. El servidor envía el paquete de datos SYN-ACK, si no recibe el paquete de datos de confirmación del cliente, el servidor realizará la primera retransmisión y esperará un período de tiempo antes de recibir el paquete de datos de confirmación del cliente, se realizará una segunda retransmisión. Si el número de retransmisiones excede el número máximo de retransmisiones especificado por el sistema, el sistema eliminará la información de conexión y eliminará la información de la cola de semiconexión. Tenga en cuenta que la espera de retransmisión para cada retransmisión no es necesaria. necesariamente el mismo

Tiempo de supervivencia de semiconexión: Es el tiempo más largo que puede sobrevivir una entrada en la cola de semiconexión, es decir, el tiempo más largo que puede esperar el servicio desde que recibe el paquete SYN hasta que confirma. Cuando la información no es válida, el valor de este tiempo es la suma del tiempo de espera más largo de todos los paquetes de solicitud de retransmisión. A veces también se le llama tiempo de supervivencia de semiconexión, como tiempo de espera y tiempo de supervivencia SYN_RECV.

Arriba. Los tres parámetros tienen un impacto significativo en el estado de la conexión TCP del sistema.

El ataque de inundación SYN es un tipo de ataque DoS que explota las fallas del protocolo TCP. y consume recursos de CPU y memoria al enviar una gran cantidad de solicitudes de semiconexión. Los ataques SYN no solo afectan a los hosts, sino que también comprometen los sistemas de red como enrutadores y firewalls. De hecho, al ataque SYN no le importa qué sistema sea el objetivo del ataque, siempre que estos sistemas tengan habilitados los servicios TCP, puede llevar a cabo el ataque. Como se muestra en la Figura 4-3, después de que el servidor recibe la solicitud de conexión (SYN=i), agregará esta información a la cola de desconectados y enviará el paquete de solicitud (SYN=j,ACK=i+1) al cliente. , ingrese al estado SYN_RECV. Cuando el servidor no recibe un paquete de confirmación del cliente, reenvía el paquete de solicitud hasta que se agota el tiempo de espera y luego elimina la entrada de la cola de recepción. Los ataques SYN se pueden combinar con la suplantación de IP con gran efecto. Por lo general, el cliente falsifica una gran cantidad de direcciones IP inexistentes en un corto período de tiempo y envía continuamente paquetes SYN al servidor. El servidor responde con paquetes de confirmación y espera la confirmación del cliente. Dado que la dirección de origen no existe, el servidor necesita reenviarla continuamente hasta que se agote el tiempo de espera. Estos paquetes SYN falsificados ocuparán la cola desconectada durante mucho tiempo, las solicitudes SYN normales

se descartarán y la dirección de origen no existe. El sistema de destino se ejecutará lentamente. En casos graves, puede causar congestión de la red o incluso la parálisis del sistema.

El proceso es el siguiente:

Atacar al host C (dirección disfrazada de C') ----- Una gran cantidad de paquetes SYN---->su host atacante

C '<-- -----paquete SYN/ACK----host atacado

Debido a que la dirección C' es inalcanzable, el host atacante agota el tiempo de espera mientras espera el paquete SYN. El host atacante llena la cola desconectada enviando una gran cantidad de paquetes SYN, lo que provoca una denegación de servicio para los paquetes SYN normales. Además, un ataque de inundación SYN también puede realizar un ataque DoS enviando una gran cantidad de paquetes ACK.

2. Algoritmo tradicional

Los métodos más utilizados para defenderse contra ataques de inundación SYN incluyen el método de firewall de puerta de enlace, el método de firewall de retransmisión y las cookies SYN. Para facilitar la descripción, la topología del sistema se simplifica como en la Figura 4-4. En la figura, la red se divide en una red interna y una red externa según si la red está ubicada dentro o fuera del firewall (la red interna está protegida por el firewall). A continuación, configure el temporizador de retransmisión SYN del firewall. El valor del tiempo de espera debe ser lo suficientemente pequeño para evitar que se llene la cola de trabajos pendientes; al mismo tiempo, el valor del tiempo de espera debe ser lo suficientemente grande para garantizar una comunicación normal para los usuarios;

(1) Método de firewall de puerta de enlace

La idea básica del firewall de puerta de enlace para resistir ataques es: para el paquete SYN/ACK enviado por el servidor de intranet, el firewall envía inmediatamente un Paquete ACK en respuesta. Una vez que el servidor de la intranet recibe el paquete ACK, eliminará la semiconexión de la cola de trabajos pendientes, convertirá la conexión en una conexión abierta y completará la conexión TCP. Dado que los servidores son mucho más capaces de manejar conexiones abiertas que medias conexiones, este enfoque puede reducir eficazmente los ataques SYN a los servidores de la intranet, dejando efectivamente la cola de trabajos pendientes sin llenar y permitiendo que las conexiones incompletas se retransmitan por más tiempo.

La siguiente es una descripción completa del algoritmo:

En el primer paso, el firewall intercepta el paquete SYN enviado por el cliente externo al servidor de la intranet y le permite pasar a llegar al servidor de la intranet. Este evento se registrará en la tabla de seguimiento de conexiones.

En el segundo paso, el firewall intercepta el paquete de respuesta SYN/ACK enviado por el servidor al cliente y lo compara con el paquete SYN correspondiente registrado en la tabla de seguimiento de conexiones.

En el tercer paso, el firewall permite que el SYN/ACK interceptado continúe (enviado al cliente). Al mismo tiempo, se envía un paquete ACK al servidor de la intranet. De esta forma se completa el protocolo de enlace de tres vías de la conexión TCP del servidor. El sistema eliminará las semiconexiones en la cola de trabajos pendientes.

El cuarto paso es ver si esta conexión TCP es válida, lo que dará como resultado dos soluciones correspondientes. Si el intento de conexión del cliente es válido, el firewall recibe un paquete ACK del cliente y lo reenvía al servidor. El servidor ignorará este paquete ACK adicional, que está permitido en el protocolo TCP.

Si la dirección IP del cliente no existe, el firewall no recibirá el paquete ACK del cliente y el temporizador de retransmisión expirará. En este punto, el firewall retransmitirá la conexión.

(2) Método del firewall de retransmisión

El principio del ataque del firewall de retransmisión es que el firewall completa un protocolo de enlace de tres vías con la red externa antes de enviar el paquete SYN al servidor interno. , eliminando así las condiciones de ataque de inundaciones SYN.

Aquí hay una descripción completa del algoritmo:

En el primer paso, el firewall intercepta los paquetes SYN enviados por el cliente desde la red externa al servidor de la red interna.

En el segundo paso, el firewall no envía paquetes SYN directamente a la intranet, sino que envía paquetes SYNIACK a la red externa en lugar del servidor de la intranet.

En el tercer paso, el firewall solo envía un paquete SYN a la red interna cuando recibe un paquete ACK de la red externa.

El cuarto paso es que el servidor responda con el paquete SYN/ACK.

Paso 5: El firewall responde al paquete ACK.

(3) Análisis

Primero analice el rendimiento del algoritmo. Se puede ver que para mejorar la eficiencia del algoritmo anterior, se adoptan mecanismos como la detección de estado (. se puede pasar a través del módulo básico de la implementación de la capa del sistema)

Para paquetes que no son SYN (paquetes CSYN/ACK y ACK), si el elemento correspondiente no se encuentra en la tabla de información de seguimiento de conexión, debe coincide con la base de reglas, que requiere más elementos. Hacer coincidir bases de reglas requiere comparar muchos elementos (como direcciones IP, números de puerto, etc.), lo cual es costoso y reduce el tráfico del firewall. Además, en el algoritmo del firewall de retransmisión, la carga en el firewall aumenta debido al uso del proxy de paquetes SYN, que también reduce el tráfico del firewall.

En segundo lugar, este algoritmo tendrá una vulnerabilidad de seguridad cuando el host atacante envíe paquetes ACK en lugar de paquetes SYN. En términos generales, una conexión TCP comienza con un paquete SYN. ​​Una vez que el paquete SYN coincide con la base de reglas, la conexión se agrega a la tabla de seguimiento de conexiones y el sistema le otorga un retraso de 60 segundos. Más tarde, cuando se recibe el paquete ACK, la latencia de la conexión aumenta repentinamente a 3600 segundos. Si una conexión TCP comienza con un paquete ACK y la conexión no está registrada en la tabla de seguimiento de conexiones, el paquete ACK se comparará con la base de reglas. Si la coincidencia tiene éxito, la conexión se agrega a la tabla de seguimiento de conexiones y su retraso se establece en 3600 segundos. Si un atacante envía una gran cantidad de paquetes ACK, la cola de semiconexión se llenará y no se podrán establecer otras conexiones TCP. Este tipo de ataque proviene de la intranet. Porque, para un ataque de paquete ACK desde la red externa, el servidor enviará rápidamente un paquete RST para finalizar la conexión (SO>). Para los paquetes salientes de la red interna, las reglas de restricción son menos estrictas. Una vez que un atacante envía una gran cantidad de paquetes ACK desde la intranet a una velocidad superior a la velocidad de procesamiento del firewall dentro de un cierto período de tiempo, puede causar fácilmente la parálisis del sistema.

(4) Cookies SYN

Linux admite cookies SYN, lo que mejora la capacidad de defenderse contra ataques de inundación SYN modificando el método de generación de números de secuencia del protocolo TCP. En el protocolo TCP, al recibir una solicitud SYN del cliente, el servidor debe responder al cliente con un paquete SYN-SACK, y el cliente también enviará un paquete de confirmación al servidor. Normalmente, el servidor calcula el número de serie inicial del servidor de acuerdo con ciertas reglas o utilizando números aleatorios, pero en SYN Cookie, el número de serie inicial del servidor se calcula comparando la dirección IP del cliente, el puerto del cliente y la dirección IP del servidor. obtenido después de aplicar hash y cifrar el puerto del servidor y algunos otros valores de seguridad. Esta es la llamada cookie. Cuando el servidor sufre un ataque SYN y la cola de trabajos pendientes está llena, el servidor no rechazará la nueva solicitud SYN, pero utilizará la. cookie (datos de respuesta El número de secuencia SYN del paquete) se responde al cliente. Si se recibe el paquete ACK del cliente, el servidor restará 1 del número de secuencia ACK del cliente para obtener el valor de comparación de la cookie y realizará una operación hash en. los elementos anteriores para verlos ¿Es igual a esta cookie? Si es igual, el protocolo de enlace de tres vías se completa directamente (nota: no es necesario verificar si la conexión pertenece a la cola de trabajos pendientes en este momento).

La ventaja de este algoritmo es que cuando la mitad de la cola de conexión está llena, la cookie SYN aún puede manejar nuevas solicitudes SYN. Desventajas: Ciertas opciones de TCP, como las ventanas grandes, deben estar deshabilitadas. Hay una sobrecarga asociada con el cálculo de las cookies.

/*Los fragmentos de un paquete IP se colocan en una lista vinculada, porque cada fragmento del nodo de la lista vinculada está representado por una estructura ipfrag.

*/

La estructura del código del kernel para defenderse contra ataques es la siguiente:

// Extraído de /ctu_85/archive/2008/01/03/2023205.aspx

// // Estructura del fragmento de IP*/

struct ipfrag

{

int offset; //desplazamiento de este segmento en el paquete IP

int end; //posición de la última cepa de este segmento en el paquete ip

int len; //longitud de este segmento

struct sk_buff *skb ; // paquete de corte

sin firmar.....

if(end<= offset)&&(i>skb->len)

return NF_DRDP ;

}

}

return NF_ACCEPT;

Las tres estructuras que componen las reglas se explican a continuación:

(1 )ipt......

unsigned int nfcache; //Utilice este campo de bits para indicar qué partes del datagrama verifica la regla

.. ...

; //contiene el paquete y el valor calculado del paquete que coincide con esta regla

A continuación solo se enumeran las estructuras ipt_entry_match:

struce ipt_entry_match

{

unión

{

estructura{

u_int16_t target_size;

.... ..

......

{

struct list_head list;//lista encadenada

struct

u int32 ipaddr; //dirección

u_ int16 port; //puerto

}src; //información de origen

struct;

{

u_ int32 ipaddr;

u_ int 16 port;

} dst //Información de destino

u_intl6 protonum; //Número de protocolo

`Sintaxis común

dir + * explorar

cls borrar pantalla

cd abrir subdirectorio

p>

cd.+* Salir del subdirectorio

rd +* Eliminar subdirectorio

del +* Eliminar archivo