TCPまたはUDPを使用して同等に実装できるサービスを構築しています。TCPを使用している場合、SYNフラッドおよびTCP =プロトコル。UDPを使用する場合、正当なトラフィックをブロックせずにアップストリームのUDPフラッドをブロックすることは困難です。ここで明確な選択肢はありますか?帯域幅枯渇攻撃がネットワーク上の他のユーザーに影響を与えるため、UDPに傾倒しているため、たとえば、アドレスのなりすましに対する許容度が低くなり、トラフィックを増幅するために利用できるサービスが少なくなるなど、ますます困難になります。
TCPおよびUDPを選択する場合は、単にセキュリティを超えて考える必要があります。設計しようとしているものの詳細を知らなければ、どのプロトコルを使用するかを推奨することは不可能です。
これらの基本的な事実を考慮してください。
TCPは、接続をセットアップするために3ウェイハンドシェイクを必要とし、IPアドレスに基づく多くのスプーフィング攻撃を防ぎます。
暗号化を追加する必要がある場合、TCPはSSL接続を使用できます。
UDPは、追跡するためにサーバー側で必要なリソースが少なくなります。
ソケット。
UDPとTCPのどちらを選択するかは、ユースケースとDDoの種類によって異なります。単純な帯域幅を消費するDDosの場合、攻撃によってすべての帯域幅が使用される場合、UDPまたはTCPに基づくかどうかに関係なく、アプリケーションのトラフィックがなくなるため、問題はありません。この場合、UDP自体が接続の確立に複数のパケットを必要としないため、UDPにはわずかな利点があります(ただし、アプリケーションプロトコルで必要になる場合があります)。
システム上のリソースを食べる攻撃(SYNフラッディングまたは単に多数の接続を開いたままにするなど)に関心がある場合、UDPはシステムでTCPほど多くのリソースを使用しないため、最初は見栄えが良いかもしれません。しかし、アプリケーションが接続、信頼性、および順序付けられたデータ転送について何らかのアイデアを必要とする場合、アプリケーション内にすでにTCPが持っているすてきなものすべてを実装することになります。また、OSカーネル内の最適化された実装よりも多くのリソースを使用することになるため、単にTCPを使用する場合よりも、DDoの影響を受けやすくなります。
また、独自のアプリケーションレベルのネットワーク処理を行う代わりに、確立されたテクノロジーを使用することで、既存のAnti-DDosソリューションを使用できます。代わりに独自の特別なプロトコルを使用する場合は、独自の特別なAnti-DDosソリューションも発明する必要があります。
私は、TCPまたはUDPのどちらでも同等に実装できるサービスを構築しています。
UDPとTCPで同じサービスを実装できる場合同じ信頼性でであり、UDP実装はTCP実装(つまりカーネルユーザー空間のリソースを組み合わせた場合)DDosに直面した場合は、使用するリソースを少なくすることをお勧めします。
私はあなたが考えすぎていると思います。 DDOSに関しては、UDPかTCPのどちらかを選ぶのは面倒です。フラッドをサービスに到達する前に止めるアンチDDOSアプライアンスまたはサービスがない場合、ローカルでパケットをドロップする以外にできることはありません。アプリケーションの要件を指定しなかったため、一般的な答えを提供しました。
すべてに適合するワンサイズはありません。私があなたに提供したソリューションでさえ、十分に一般的ではありません。UDPを使用して、HTTPを使用して通信することができます(なぜでしょうか)。
私が提案するのはあなたの毒を選ぶことです:TCPまたはUDP、次にファイアウォールを使用して制限を使用してSynリクエストの量を制限します: http://www.cyberciti.biz/ tips/howto-limit-linux-syn-attacks.html 。
Linuxで有効にできるこの種の問題を防ぐために、SYN Cookieと呼ばれる手法があります。 http://www.cyberciti.biz/faq/enable-tcp-syn-cookie-protection/
それでも、私が言ったように、DDOSトラフィック(ブラックホール)をシンクしている外部アプライアンスがないか、ISP /サービスプロバイダーがフラッドを防止している場合は、自分でアプリケーション/マシンを保護することさえ気にしないでください。パケットをドロップしてもアプリケーションがクラッシュしないように保護しますが、DDOS(Distributed Denial of Service)の本質である要求に応えることはできません。
おげんきで ;)