攻撃の内訳:SYNフラッド

スプーフィングされたSYN-パケットのヘッダーが偽造され、任意のまたは存在しないIPアドレスが実際の送信者の場所を奪う攻撃。


本質的に、SYNは「 激しい競争 」のための頻繁なツールであり、同時に、ほとんどのDDoS緩和ソリューションはこの特定のタイプの攻撃で印象的な効果を示すため、なりすまし攻撃タイプを最も多く考慮して、SYNフラッドから始めます。それらの恐ろしい。



免責事項



免責事項1


このトピックおよび以降のトピックで説明するすべては、本質的にノウハウではありません。 すべてのメソッドはオープンであり、かつて(2003年の一部)はオープンソースで公開されていました。 私はそれらを1つに減らすために苦労し、保護の「 グローバル戦略 」を説明し、専用サーバー上にある小さなプロジェクトにサービスを提供するシステム管理者に焦点を当てました(説明した戦略は共有プロジェクトでも使用できますが、実装はひどく恐ろしいでしょうそれについて書いて欲望がない)



免責事項2


このトピックでは、ハードウェア保護ソリューションを考慮していません -まず、これらのソリューションのメーカーによる多数の記事でよく検討されています。次に、1台のサーバーを使用するプロジェクトでは十分な余裕がない場合があります(大まかに言って、実用的なソリューションの価格は2万ユーロから)、第三に-著者は、そのような保護の方法と有効性についてグローバルな結論を引き出すために、そのような特殊なハードウェアを操作するのに十分なデータと経験を持っていません-誰もが2つのベンダーのソリューションの概要に興味を持つことはまずありません ダースの、それらの使用のための主要なオペレーティング統計によってサポートされていません。 しかし、私が使用しなければならなかった両方のハードウェアソリューションが通常、多くの条件下でのSYN攻撃に対して非常に効果的であることは注目に値します



免責事項3


このトピックで 、DDoS攻撃に対する保護のプロバイダーについては考慮していません。これらの組織のサービスエンジニアは、作業方法をより良く、より詳細に説明できます。 クライアントの観点からは、プロバイダー自体を確認する価値があるでしょう(私が参加したプロジェクトは、Dragonara、Blacklotus、Gigenet、Vistnet(現時点)、Prolexic(現時点)、上記の企業のサービスの販売者の数)、それはトピックの範囲外である、それについて後で話してみてください。 繰り返しますが、作者のプロジェクトが動作または動作するすべてのセキュリティプロバイダーが、SYN攻撃の問題に対処し、優れた効率を示していることは注目に値します。



少しの仕組みとウィキペディア



トピックを一種のRFCに変えて、よく知られている真実を引用したくないので、SYN攻撃の観点からTCPが興味深いものに自分自身を制限し、上に行きます。



まず、TCPは最もよく使用されるトランスポートプロトコルの1つであり、その上にほとんどのアプリケーションプロトコルがあります。 第二に、多くの特別な機能(接続の開始と終了、フロー制御などによって明確に確認されます)があり、その実装は比較的複雑でリソース集約的です。



この記事の文脈では、TCP接続を確立するメカニズム(3方向ハンドシェイク)を検討することは興味深いです。 クライアントサーバーレベルでの最初の近似では、クライアントはSYNパケットをサーバーに送信し、SYN + ACKが応答します。クライアントは応答としてSYNサーバーにACKを送信し、接続は確立された状態になります。



SYN攻撃-何らかの理由で実際の接続の確立につながらない大量のSYNパケットをオープンサーバーポートに送信します。これは、接続キューを圧倒する「ハーフオープン接続」の作成を伴い、サーバーに将来のクライアントへのサービスを拒否させます。 さらに、TCP RFCは、サーバーが各着信SYNに応答することを強制します。これは、サーバーリソースとデータ伝送チャネルの両方にさらに影響を与えます。 他の事項では、すでに-実際に-DDoS攻撃に遭遇したことがあるなら、あなたは私なしで上記のことを知っています。 特定の推奨事項に進みます。



フィールドで一人で



あなたの脇の下のものを使用し、他のものを探してはいけません-攻撃で一人でいるときに何ができますか? 正直なところ、それほどではありませんが、これで十分なことが起こります。 以下は、FreeBSDで何をすべきかを説明しています。なぜなら、私たちのプロジェクトでは、90%のケースでこのシステムが使用されているからです。 ただし、OSごとに違いはわずかです-原則は同じです。



最初に 、サーバーにアクセスする必要があります(はい、これは特に攻撃が大きい場合や長い場合-サーバーがすべてのバッファーを選択したか、CPU負荷が100%の場合は困難です)。 通常、攻撃されたサービスをファイアウォールで閉じるか、サービスに返済するだけで十分です(ただし、攻撃が検出された場合は、サーバーで何か他のことを実行できる場合にのみ、これを行う必要があります)。



2番目は、攻撃に関する最初の情報を取得することです。 着信トラフィックの監視をすでに完了している場合-正常な場合は問題ありません-ファイアウォールを開いてサービスを上げ、古き良きtcpdumpとnetstatを使用して、攻撃が何であり、攻撃のサイズが1秒あたりのパケット数であるかを正確に調べます 途中で、バルクリクエストの発信元であるネットワークを、サービスの典型的な対象者に含まれているかどうかをすばやく表示できます。 これらはすべて将来的に役立ちます。



第三 -攻撃されたIPアドレスが配置されているインターフェイスでは、1つだけが残るはずです。 各エイリアスは、システムのパフォーマンスを低下させます。 これはシステムごとに異なる数値で表されますが、これらの数値は深刻であり、各エイリアスは1秒あたり2〜3 000パケットの追加コストがかかる可能性があります。



4番目 -攻撃されたアドレスへの着信トラフィックに何らかのファイアウォールを使用する場合-ブロックを除くすべてのルールを無効にする必要があります-たとえば、なりすましSYN攻撃では、PFからのSYNプロキシによって支援される可能性はゼロになる傾向があり、 CPU非常に真剣に受け止めています。



5番目 -システムを構成します。 奇跡はありません。準備されたドライバーと特別に購入したネットワークカードの形で茂みの中にピアノが必要です。SYN攻撃を受ける能力に深刻な影響を与える2つの一般的な推奨事項は、誰もが知っています。

-サーバープロセッサの割り込み処理を汚す。

-syn-cookieを有効にし、syn-cacheを無効にします。



チューニングシステムの残りの部分は、追加の5〜1万個のパケットを絞り出すのに役立ちます。これは、攻撃の状況では決定的になる可能性は低いです。 誰かにとって便利な場合、最も一般的な構成を以下に示します(カーネルまたは専用ドライバーの再構築が必要なオプションは含まれません)。



net.isr.direct=1 kern.ipc.nmbclusters=400000 net.inet.tcp.nolocaltimewait=1 net.inet.tcp.recvspace=16384 net.inet.tcp.sendspace=32768 net.inet.tcp.msl=5000 net.inet.tcp.blackhole=1 net.inet.ip.intr_queue_maxlen=3000 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 net.inet.icmp.log_redirect=1 net.inet.ip.redirect=0 net.inet.icmp.maskrepl=1 net.inet.tcp.syncookies_only=1 net.route.netisr_maxqlen=4096 kern.ipc.maxsockbuf=83886080 net.inet.ip.intr_queue_maxlen=10240
      
      





これらの推奨事項に従って構成されたデスクトップコンピューターシステム:



 first# netstat -w1 -h -d      input     (Total)      output packets  errs idrops    bytes   packets  errs    bytes colls drops   260K  0   0     15M    230K   0     13M   0   0
      
      





以下の推奨事項に従って構成されたシステムレベルIBM System x3630 M3:



 second# netstat -w1 -h -d      input     (Total)      output packets  errs idrops    bytes   packets  errs    bytes colls drops   477K  0   0     36M    457K   0     25M   0   0
      
      





OSとマシンの詳細な構成、および実際にどのようにそれらに到達したかについては、次のトピックで説明します。



私たちは一つのことをします



システムのチューニング以外にすべきこと原則として、やるべきことがあります。



ここで少し余談する価値があります-ほとんどのホスティング会社は、攻撃との闘いを非常にしぶしぶながらもしますが、それを非難することは困難です。 しかし、少なくとも彼らは攻撃に関する情報を提供します-セキュリティプロバイダーと協力しなければならない場合、これは攻撃中に収集した情報とともに、生活を楽にします。



ホスティング事業者が理解に出くわした場合(これは実際には珍しいことです )-次のアルゴリズムに従って作業します-parallel およびblock、blockおよびparallel

複数のネットワークカードがある場合(インストールされていない場合) -LACPモードでそれらをオンにします (このため、ホストスイッチで同じオプションを有効にする必要があります)-これにより、パフォーマンスがほぼ1.5倍向上します(プロセスの微妙な点については後で説明します-トピックはまったく機能しません)そのようなパフォーマンスを実現しましょう:



 second# netstat -w1 -h -d      input     (Total)      output packets  errs idrops    bytes   packets  errs    bytes colls drops   1.2M  16K   0     65M    1.1M   0     59M   0   0
      
      





未使用のポートとプロトコルをすべてブロックしてください-SYN攻撃はUDP攻撃に簡単に置き換えることができます。

事実上、すべてのホスティング会社がこれらのアクションを実行できます。 しかし、もしあなたが真剣な会社と仕事をするのに十分幸運なら-あなたのプロジェクトの観客のほとんどが住んでいない地域(例えば中国)からのトラフィックをブロックするよう頼んでください-通常これは特定の地域のバックボーンプロバイダーのためのあなたのネットワークのブラックホールアナウンスを意味します 原則として、SYN攻撃はその安価さと大衆的性格のためにアジアから行われます。したがって、そのような発表は攻撃との闘いに真剣に役立ち、その可能性を排除することさえできます。



上記の対策に加えて、GeoDNSのようなサービスを使用することをお勧めします-特定の条件(たとえば、ドメインで攻撃が実行される)で、これは特定のネットワークのブラックホールのアナウンスと同様に機能します。



最後に



この記事が、アフリカ諸国の年間予算を超えることなく、SYNフラッドの問題に対処するのに役立つことを願っています。 もちろん、ここでは最も一般的な推奨事項のみを示しますが、信じてください-ケースの90%で十分です。 そして最も重要なこと-パニックにならないでください!



UPD。 継続は執筆中です。間もなくここに投稿されます。 私たちと一緒にいてください!



All Articles