He estado recibiendo estas UDP
inundaciones con IP y puertos aleatorios.
randomip:randomport -> myip:randomport
carga útil de 0 bytes
Por alguna razón, utiliza mucha CPU. Aquí están los resultados de perf top -e cycles:k
.
¿Hay alguna forma de optimizar el kernel?
10.42% [kernel] [k] inet_getpeer
7.59% [kernel] [k] inet_getpeer.part.4
6.15% [kernel] [k] peer_avl_rebalance.isra.2
3.38% [kernel] [k] fib_table_lookup
2.77% [ip_tables] [k] ipt_do_table
1.98% [e1000e] [k] e1000_clean_rx_irq
1.82% [kernel] [k] md5_transform
1.69% [kernel] [k] __ip_route_output_key
1.36% [kernel] [k] check_leaf.isra.7
1.34% [kernel] [k] __udp4_lib_lookup
1.31% [kernel] [k] kmem_cache_free
1.09% [kernel] [k] __netif_receive_skb_core
1.01% [kernel] [k] __slab_free
1.00% [kernel] [k] __ip_append_data.isra.38
0.99% [kernel] [k] memcpy
0.98% [kernel] [k] kmem_cache_alloc
0.91% [kernel] [k] icmp_send
0.89% [xt_multiport] [k] multiport_mt
0.83% [kernel] [k] update_blocked_averages
0.79% [kernel] [k] kfree
0.79% [kernel] [k] __switch_to
0.78% [kernel] [k] skb_release_data
0.72% [kernel] [k] csum_partial_copy_generic
0.71% [kernel] [k] _raw_spin_lock_irqsave
0.67% [kernel] [k] ip_route_input_noref
0.63% [kernel] [k] __udp4_lib_rcv
0.61% [kernel] [k] dev_gro_receive
0.59% [kernel] [k] __schedule
0.59% [kernel] [k] __ip_make_skb
0.57% [kernel] [k] __copy_skb_header
0.56% [kernel] [k] sock_alloc_send_pskb
0.55% [kernel] [k] nf_iterate
Respuesta1
A juzgar por su perf
rendimiento, subir net.ipv4.inet_peer_threshold
y bajar ambos net.ipv4.inet_peer_minttl
puede net.ipv4.inet_peer_maxttl
ayudar un poco. Supuse que estás usando un kernel algo reciente, por ejemplo 3.2
. Puedes ver inet_getpeer
el código fuente de aquí:http://lxr.linux.no/#linux+v3.2.51/net/ipv4/inetpeer.c#L395
Si DDoS está vinculado a la CPU, entonces probablemente debería prohibir los paquetes UDP de tamaño cero mediante,
netfilter
por ejemplo:$ iptables -I INPUT -p udp -m length --length NN -j DROP
reemplazándolo
NN
con la carga útil L3 real, en su caso probablemente8
(tamaño del encabezado UDP).Si DDoS está vinculado a interrupciones, puede ajustar su archivo
e1000e
, consulte:$ modinfo e1000e | grep ^parm:
Consulte también el documento de Intel para obtener una descripción de los parámetros:http://downloadadmirror.intel.com/9180/eng/README.txt
Si DDoS está vinculado a la red, debe solicitar ayuda a su ISP (operaciones del centro de datos).
Respuesta2
Puede utilizar ipset junto con iptables, ya que es ultra eficiente a la hora de procesar muchos parámetros como direcciones IP o puertos.
A continuación se muestra un ejemplo del uso de ipset en el que los delincuentes P2P se colocan en un conjunto y se les asigna un tiempo de espera.Solución de tiempo de espera P2P
o crear una lista negra en vivoUtilice ipset para la lista negra en vivo
Ipset es ultra eficiente para muchas direcciones IP y puertos porque almacena los valores en la RAM.
Buena suerte.
Respuesta3
¿Qué crees que puedes optimizar? Está experimentando un ataque DDoS que intenta sobrecargar el servidor. Esto suele tener éxito si no hay ningún componente de red delante del servidor, lo que realiza un enrutamiento cero al servidor.
No se puede prevenir un DDoS en el servidor directamente, sólo a través de una buena infraestructura de red con sistemas de prevención.