Tenho recebido essas UDP
inundações com IPs e portas aleatórios.
randomip:randomport -> myip:randomport
Carga útil de 0 bytes
Por algum motivo, ele está usando muita CPU. Aqui estão os resultados de perf top -e cycles:k
.
Existe alguma maneira de otimizar o 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
Responder1
A julgar pela sua perf
produção, aumentando net.ipv4.inet_peer_threshold
e diminuindo ambos net.ipv4.inet_peer_minttl
, net.ipv4.inet_peer_maxttl
pode ajudar um pouco. Presumi que você estivesse usando um kernel recente, por exemplo 3.2
. Você pode ver inet_getpeer
o código-fonte de aqui:http://lxr.linux.no/#linux+v3.2.51/net/ipv4/inetpeer.c#L395
Se o DDoS estiver vinculado à CPU, você provavelmente deverá banir pacotes UDP de tamanho zero, por
netfilter
exemplo:$ iptables -I INPUT -p udp -m length --length NN -j DROP
substituindo
NN
pela carga útil L3 real, provavelmente no seu caso8
(tamanho do cabeçalho UDP).Se o DDoS estiver vinculado à interrupção, você poderá ajustar seu arquivo
e1000e
, consulte:$ modinfo e1000e | grep ^parm:
verifique também o documento da Intel para obter a descrição dos parâmetros:http://downloadmirror.intel.com/9180/eng/README.txt
Se o DDoS estiver vinculado à rede, você deverá pedir ajuda ao seu ISP (operações de datacenter).
Responder2
Você pode usar o ipset em conjunto com o iptables, pois é ultraeficiente no processamento de muitos parâmetros, como endereços IP ou portas.
Aqui está um exemplo de uso de ipset onde os infratores P2P são colocados em um conjunto e recebem um tempo limiteSolução de tempo limite P2P
ou criando uma lista negra ativaUse ipset para lista negra ao vivo
O Ipset é ultraeficiente para muitos endereços IP e portas porque armazena os valores na RAM.
Boa sorte.
Responder3
O que você acha que pode otimizar? Você está enfrentando um ataque DDoS, que tenta sobrecarregar o servidor. Isso geralmente é bem-sucedido se não houver nenhum componente de rede na frente do servidor, que faça roteamento zero para o servidor.
Não é possível prevenir um DDoS diretamente no servidor, apenas através de uma boa infraestrutura de rede com sistemas de prevenção.