ご注意くださいないサーバーを保護する方法を尋ねるDDoSつまり、誰かが自分の VPS で実行する場合ですsiege -c 1000 www.example.com
。その結果、私のサーバーは数千のリクエストを処理し、速度が低下します。共有ホスティングをターゲットにした Siege を実行すると、自分のマシンで見られるような応答性の極端な低下 (60 ミリ秒から 2000 ミリ秒/リクエスト) は見られません。大規模な DDoS を軽減できるとは思いませんが、最初のスクリプト キディが Siege を発見しても安全でありたいと思っています :) 一方、正当なソースから大量のトラフィックが来ると、応答が遅くなる可能性があるという事実は問題ありません。
答え1
ファイアウォールを使用すると、同時接続数とネットワークからの新規接続の速度を制限できます (例: IPv4 の場合は /32、IPv6 の場合は /64)。ファイアウォールの使用例iptables
:
# Limit number of concurrent connections
-A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 50 -j DROP
# Limit rate of new connections
-A INPUT -i eth0 -p tcp --syn -m hashlimit --hashlimit-name tcp --hashlimit-mode srcip --hashlimit-above 3/sec --hashlimit-burst 7 --hashlimit-srcmask 32 -j DROP
( については、最初の にip6tables
追加して2 番目の に変更する以外は同じです。)--connlimit-mask 64
--hashlimit-srcmask
64
HTTPリクエストのレートを制限することもできます。たとえば、nginx の limit_req モジュール。
答え2
基本的なファイアウォールの他に、TCP の負荷の高い処理は haproxy に任せています。 slowdos 攻撃に関しては、haproxy はそのまま使用できる Apache HTTPd インスタンスよりはるかに優れていることがわかりました。
-A INPUT -p tcp -m tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j SYNFLOOD
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j HTTPDGUARD
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j HTTPDGUARD
-A HTTPDGUARD -m connlimit --connlimit-above 25 --connlimit-mask 32 -j HTTPDENY
-A HTTPDENY -j LOG --log-prefix "HTTP Flood: "
-A HTTPDENY -p tcp -m tcp -j REJECT --reject-with tcp-reset
-A SYNFLOOD -m state --state NEW -m recent --set --name SYNRATE --rsource
-A SYNFLOOD ! -s 150.156.24.0/24 -m state --state NEW -m recent --update \
--seconds 5 --hitcount 200 --name SYNRATE --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
しかし、基本的には、攻撃をブロックするか、エクスプロイトを修正するか、またはその両方を行う必要があります。
答え3
失敗2バンこのような状況に対処するために設計された多くのツールの 1 つです。fail2ban は、SSH に対するいくつかのブルート フォース攻撃を阻止するのに役立ちました。サーバーは Linux であると想定しています。