Prevenir ataques DDos limitando la frecuencia ICMP

Prevenir ataques DDos limitando la frecuencia ICMP.

Los ataques ddos es un tema que ya tratamos en varios artículos, todos sabemos que los ataques distribuidos de denegación de servicio son unos de los principales motivos por lo que puede caer cualquier servidor.

En este articulo veremos lo sencillo que es variar la frecuencia ICMP de manera que filtraremos las conexiones de forma que limite la velocidad de la red. De esta forma evitaremos tanto emitir como recibir un ataque DDos.

Al filtrar la red evitaremos que si por ejemplo quieres enviar un paquete a una IP local, esta misma conexión y paquete, salgan de la red local al exterior sin nuestro consentimiento.

Prevenir ataques DDos limitando la frecuencia ICMP 1

 

Realizaremos este proyecto sobre un organigrama similar a:

[Internet] ------ [Linux router] --- [Oficina+ISP]
                                      eth1          eth0

 

Por ejemplo… y como requisito previo partimos de:

# tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000
# tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \
  10Mbit allot 1514 prio 5 maxburst 20 avpkt 1000

Si tu red tiene un mínimo de 100mbit, este ejemplo te servirá.

Primero determinaremos cuanto trafico ICMP queremos permitir, todo dependerá de tus necesidades, te recomiendo que utilices «tcpdump» para hacer las comprobaciones correspondientes.  Haz que escriba en un archivo por un tiempo determinado, y viendo cuánto ICMP circula por la red, podrás hacerte una idea de tus necesidades.

 

Si no puedes determinar el trafico real ICMP que te resultaría útil, te recomiendo que configures más o menos sobre el 5% de tu ancho de banda real.

Configuramos así:

# tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \
  100Kbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 250 \
  bounded

Prevenir ataques DDos limitando la frecuencia ICMP 2

 

Con el ejemplo anterior hemos limitado el ICMP a 100 Kbits.

Ahora necesitamos un filtro para asignar el tráfico ICMP, es así de sencillo:

# tc filter add dev eth0 parent 10:0 protocol ip prio 100 u32 match ip
  protocol 1 0xFF flowid 10:100

 

Agregar comentario