2013-02-07 13 views
10

私はnodejsを使って、高度にスケーラブルなブラウザベースのWebチャットサーバを書いています。このコンセプトは簡単です。まずWebSocketのサポートをブラウザでチェックします。サポートされていないか、そうでなければサーバーの仕様と互換性がない場合、従来の長いポーリングに正常にダウングレードされます。DOSJ攻撃に対するnodejsサーバ

非常に多量のI/Oモデルを利用しているので、これまでのところ、他のフレームワークを見つけることができませんでした。しかし、私は簡単な解決策を思いつくことを決めたDOS攻撃に関する問題があります。しかし、私はそれが大規模な洪水攻撃と戦う最も理想的な方法であるかどうかはわかりません。

- 50リクエスト以上が1つのIPアドレスから発信され、特定の時間(たとえば1秒)以内にサーバーにヒットした場合は、時間間隔が経過するなどになります。

これは問題ありませんか?

+0

+1 - たぶん私は見ていませんが、誰もNode DoS攻撃の問題に触れていないようです。 – Bojangles

+0

私が知ったことの1つは、setTimeout関数を使用してすべての着信および発信接続のタイムアウトを下げることです。デフォルトは2分です。何かがうまくいかない場合は、接続リソースを放棄するだけでよい場合は、接続リソースを保持しなければならない2分です。 10-20秒ははるかに良く機能します。 – download

答えて

5

これは、多くのIPが使用されているDDoS攻撃(Distributed Denial of Service)や、攻撃に関与するマシンと同じファイアウォール内にあるマシンのサービスを継続する必要がある場合に対処していません。

多くの場合、DDOSで使用されるマシンは、引き継がれたゾンビマシンです。大規模なターゲットに対するDDoSが開始されると、IP単位のスロットリングによって、同じファイアウォールLANのすべてのマシンが禁止されることがあります。たとえば、ニューヨークタイムズのコンピュータがDDOSに感染して使用され、Timesの記者が同社のウェブサイトがダウンしているかどうかをチェックしてブロックされていると報告した攻撃は実際よりもはるかに成功しました。

DDoSに直面してサービスを提供し続けるには、本当にIPだけでなく、リクエスト自体の共通要素に基づいてリクエストをブロックする必要があります。 security.seは、それを行う方法に関する具体的なアドバイスのための最良のフォーラムかもしれません。

+0

実際には、サーバーは起源固有です。つまり、サーバーですでに指定されているドメイン以外のドメインからの要求は完全に拒否されます。 これが何かの意味ならば! – spaceman12

+0

@ spaceman12、 "origin origin"の意味を拡大できますか?サーバが、IPで許可されたグループからのリクエストを既に拒否しており、それらのマシンの破壊や機能不全を心配していますか? –

+0

'origin origin'によって、これはブラウザベースのWebアプリケーションであるため、実際にはどういう意味ですか、サーバーは特定のドメイン(ヘッダーの起点)からの要求にのみサービスを提供する意図で書かれています。たとえば、私はstackoverflow.comからのリクエストにのみサービスを提供し、他のものは無視します。 – spaceman12

関連する問題