ランダム IP/ポート UDP DDoS での CPU 使用率が高い

ランダム IP/ポート UDP DDoS での CPU 使用率が高い

UDPランダムな IP とポートでこのようなフラッドが発生しています。

randomip:randomport -> myip:randomport

0 バイトのペイロード

何らかの理由で CPU を大量に使用しています。 の結果は次のとおりですperf top -e cycles:k

カーネルを最適化する方法はありますか?

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

答え1

perf出力から判断すると、と のnet.ipv4.inet_peer_threshold両方を上げ下げすると少しは効果があるかもしれません。 などの比較的新しいカーネルを使用していると想定しています。のソースコードはここで確認できます:net.ipv4.inet_peer_minttlnet.ipv4.inet_peer_maxttl3.2inet_getpeerhttp://lxr.linux.no/#linux+v3.2.51/net/ipv4/inetpeer.c#L395

  • DDoS が CPU に依存している場合は、たとえば次のようにしてサイズがゼロの UDP パケットを禁止するだけでよいでしょうnetfilter

    $ iptables -I INPUT -p udp -m length --length NN -j DROP
    

    実際の L3 ペイロードに置き換えることによってNN、おそらくあなたのケースでは8(UDP ヘッダーのサイズ)。

  • DDoS が割り込みバウンドである場合は、を調整できますe1000e。以下を参照してください。

    $ modinfo e1000e | grep ^parm: 
    

    パラメータの説明については、Intel のドキュメントも確認してください。http://downloadmirror.intel.com/9180/eng/README.txt

  • DDoS がネットワークに限定されている場合は、ISP (データセンターの運用者) に支援を依頼する必要があります。

答え2

ipset は、IP アドレスやポートなどの多数のパラメータの処理に非常に効率的であるため、iptables と組み合わせて使用​​できます。

これは、P2P違反者をセットに入れてタイムアウトを割り当てるipsetの使用例です。P2Pタイムアウトソリューション

またはライブブラックリストを作成するライブブラックリストにipsetを使用する

Ipset は、値を RAM に保存するため、多数の IP アドレスとポートに対して非常に効率的です。

幸運を。

答え3

何を最適化できると思いますか? サーバーに過負荷をかけようとする DDoS 攻撃が発生しています。サーバーへのゼロ ルーティングを実行するネットワーク コンポーネントがサーバーの前に存在しない場合、通常、この攻撃は成功します。

サーバー上の DDoS を直接防ぐことはできません。防ぐには、防御システムを備えた優れたネットワーク インフラストラクチャを介してのみ可能です。

関連情報