Ich habe diese UDP
Überflutungen mit zufälligen IPs und Ports bekommen.
randomip:randomport -> myip:randomport
0 Byte Nutzlast
Aus irgendeinem Grund wird sehr viel CPU-Leistung verbraucht. Hier sind die Ergebnisse von perf top -e cycles:k
.
Gibt es eine Möglichkeit, den Kernel zu optimieren?
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
Antwort1
Gemessen an Ihrer perf
Ausgabe kann das Erhöhen net.ipv4.inet_peer_threshold
und Verringern von net.ipv4.inet_peer_minttl
und net.ipv4.inet_peer_maxttl
etwas helfen. Ich bin davon ausgegangen, dass Sie einen relativ neuen Kernel verwenden, z. B. 3.2
. Sie können inet_getpeer
den Quellcode von hier sehen:http://lxr.linux.no/#linux+v3.2.51/net/ipv4/inetpeer.c#L395
Wenn DDoS an die CPU gebunden ist, sollten Sie wahrscheinlich einfach UDP-Pakete mit der Größe Null verbieten,
netfilter
beispielsweise über:$ iptables -I INPUT -p udp -m length --length NN -j DROP
durch Ersetzen
NN
durch die tatsächliche L3-Nutzlast, in Ihrem Fall wahrscheinlich8
(Größe des UDP-Headers).Wenn DDoS an Unterbrechungen gebunden ist, können Sie Ihre Einstellungen optimieren
e1000e
, siehe:$ modinfo e1000e | grep ^parm:
eine Parameterbeschreibung finden Sie auch in der Dokumentation von Intel:http://downloadmirror.intel.com/9180/eng/README.txt
Wenn DDoS netzwerkgebunden ist, sollten Sie Ihren ISP (Rechenzentrumsbetreiber) um Unterstützung bitten.
Antwort2
Sie können ipset in Verbindung mit iptables verwenden, da es viele Parameter wie IP-Adressen oder Ports äußerst effizient verarbeiten kann.
Hier ist ein Beispiel für die Verwendung von ipset, bei dem P2P-Straftäter in ein Set eingeteilt und mit einer Auszeit belegt werden.P2P-Timeout-Lösung
oder Erstellen einer Live-BlacklistVerwenden Sie ipset für Live-Blacklist
Ipset ist für viele IP-Adressen und Ports äußerst effizient, da es die Werte im RAM speichert.
Viel Glück.
Antwort3
Was denkst Du, kannst Du optimieren? Du erlebst einen DDoS-Angriff, der versucht den Server zu überlasten. Dies gelingt in der Regel, wenn keine Netzwerkkomponente vor dem Server sitzt, die Zero-Routing zum Server betreibt.
Einen DDoS-Angriff auf den Server können Sie nicht direkt verhindern, sondern nur durch eine gute Netzwerkinfrastruktur mit Abwehrsystemen.