私のウェブサイトには常に複数のユーザーがオンラインにいます。サーバーはApache/PHP、データベース、Memcachedを使用します。通常の使用では、アプリケーションは適切かつ高速に動作します。
ただし、サーバーには「SYNフラッド」攻撃があるように見えることがあります。私は、これらが意図的なものであり、正当なユーザーによって引き起こされたものではないと本当に信じています。 (新しいアカウントを登録して問題を引き起こそうとする個人がいる場合に発生するようです)
Jun 27 22:12:21 xxxxカーネル:[xxxx.xxxx]ポート443でSYNフラッドが発生する可能性があります。Cookieを送信しています。 Jun 27 22:13:22 xxxxカーネル:[xxxx.xxxx]ポート443でSYNフラッドが発生する可能性があります。Cookieを送信しています。 Jun 27 22:14:25 xxxxカーネル:[xxxx.xxxx]ポート443でSYNフラッドが発生する可能性があります。Cookieを送信しています。
残念ながら、それが発生すると、トラフィック全体が影響を受けます。
[Mon Jun 27 22:15:28.842067 2016] [mpm_event:error] [pid 12022:tid 132875292207712] AH00485:スコアボードがいっぱいです。MaxRequestWorkersではありません
私のMaxRequestWorkersは600です。過去に数回増やしました。
最近、私もnet.ipv4.tcp_max_syn_backlog
およびListenBackLog
から5000。
私のサーバーには16GB RAMと1Gbpsの帯域幅があります。
私のウェブサイトが生きているかどうかを簡単に制御できる人がいるように見えるのは本当に嬉しいことではありません。
これを止めるために何ができるでしょうか?
また、netstat
は、現在サーバーに接続されているIPを提供しているようです。
過去の特定の時間に上位のIPを取得することは可能ですか?
SynCookiesを確認する
cat /proc/sys/net/ipv4/tcp_syncookies
無効になっている場合は有効にします(1に設定します)。それは合法的なユーザーが働き続けるのを助けます。
また、set lover/proc/sys/net/ipv4/tcp_synack_retriesを試すこともできます
https://stackoverflow.com/a/26674591/205355
Synfloodは通常、スプーフィングされたランダムなソースIPを使用するため、ソースIPに基づいてフィルタリングすることはできません。
あなたのサービスが公開されている限り、誰でも簡単にその活気をチェックできます
あなたはプロのDDOS保護サービスを購入することができます。地域ごとに配布された巨大なクラスター、ジオロケーション対応DNS、コアレーション、ISP協力などを使用します。クリーンなユーザートラフィックを、パブリック(およびハッカー)に知られていないIP上のサービスにリダイレクトします。しかし、それは多くの費用がかかる可能性があり、生き残り、攻撃を軽減するために必要な力に依存する可能性があります。