私が使用するサーバーの1つは、Amazon EC2クラウドでホストされています。数か月ごとに、このサーバーに対するDDOS攻撃があるようです。これはサーバーを信じられないほど遅くします。約30分後、場合によっては後で再起動すると、すべてが正常に戻ります。
Amazonにはセキュリティグループとファイアウォールがありますが、攻撃を緩和または防止するためにEC2サーバーに他に何を配置する必要がありますか?
私が学んだ同様の質問から:
他に何が欠けていますか?特定のツールや構成オプション(ここでもLinuxを使用)、および/またはAmazon EC2に固有の情報について教えてください。
ps:DDOSの監視についてのメモも歓迎されます-おそらくnagiosで? ;)
DDOS(またはDOS)は、本質的にリソースの枯渇です。あなたはそれらをより遠くにプッシュすることができるだけなので、ボトルネックを排除することは決してできません。
AWSでは、ネットワークコンポーネントが非常に強力であるため、幸運です。アップストリームリンクが飽和していることを知るのは非常に驚くべきことです。ただし、CPUとディスクI/Oはフラッディングがはるかに簡単です。
最善のアクションは、いくつかの監視(SARなどのローカル、Nagiosおよび/またはScoutAppでリモート)といくつかのリモートロギング機能(Syslog-ng)を開始することです。このような設定により、飽和状態になっているリソースを特定できます(Synフラッドによるネットワークソケット、SQLクエリまたはクローラーの不良によるCPU、…によるRAM)。 (リモートログを有効にしていない場合は)ログパーティションをEBSボリュームに置くことを忘れないでください(後でログを調べるため)。
攻撃がWebページを介して行われる場合、アクセスログ(または同等のログ)が非常に役立ちます。
EC2インスタンスをElastic Load Balancerの背後に置き、ELBインスタンスからのトラフィックのみを受け入れることにより、EC2インスタンスをさらに分離することもできます。これにより、DDOS攻撃を管理するための負担がAmazonに課せられます。
私はあなたがまだすべてにSSHを開いていると想定しているため、そのポートをいくつかの静的IPにロックできない限り、そこにまだ不正なトラフィックが届いている可能性があります。 SSHdポートをもっとあいまいなもの(つまり22以外のもの)に変更して、DDOSヒットをさらに減らすことができます(ほとんどのボットは既知のポートのみをチェックします)。
ログを監視し、特定のIPをブロックするためにipテーブルを一時的に変更できるfail2banについても触れます(たとえば、単一のIPアドレスからホストへのSSH試行に6回失敗した場合、30のIPをブロックできます。分程度)。 (ジョーダンが鋭くコメントしたように)fail2banはプロキシのIPをブロックするため、プロキシされたトラフィック(ELBからのトラフィックなど)をブロックするのにはおそらく適切ではないことに注意してください。
私はそれを使用していませんが、Apache mod_evasiveも調査する価値があるかもしれません。ただし、IPベースのブロッキングに関しては、fail2banと同じ弱点がある可能性があります。
Apacheを使用している場合は、 mod_security を使用することをお勧めします。ほとんどのベンダーによってパッケージ化されたコアルールセットは、素晴らしい仕事をします。
もう1つの強化ステップは、リクエストをWebサーバーレベルで制限することです。 Nginx 。、 Apache 着信リクエストを抑制および制限できます。
AWSやその他から出てくるリアルタイムの不正なアクティビティIPをブロックするために使用するソリューションはこれです... CSFファイアウォールでLFD Blocklistsの設定にあるここにあるリストを使用します http://myip.ms/ browse/blacklist/Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real-time
CSFファイアウォールのブラックリストをダウンロード" http://myip.ms/files/blacklist/csf/latest_blacklist.txt
法外に不快なAWSトラフィックはもうありません。
セキュリティプレセールエンジニアとしてコンテンツ配信ネットワークで働いているので、私は偏見があります。
ただし、コンテンツ配信ネットワークでDdos軽減ソリューションを利用すると、Originでリソースが不足することはありません。これは、F5ロードバランサーをサイトの前に配置するのと似ていますが、世界中の何千もの場所に広がっています。
優れたCDNを使用すると、awsファイアウォールにインストールするホワイトリストでオリジンをクローキングできます。したがって、攻撃者がAmazonで偵察を実行すると、すべてがブロックされるため、IPアドレスが空になります。
したがって、トラフィックが攻撃者にできるだけ近いノードに到達すると、Ddos攻撃がブロックされます。これにより、保護しようとしている資産から遠く離れたDdos攻撃を確実に軽減できます。
優れたCDNは、ヘルスチェックを実行し、他の場所へのトラフィックをフェールオーバーすることもできます。 RUDY、slowpost、slowloris、sqli、xss、rfi、lfiなど。
デフォルトでは、cdnはティアドロップ、icmp攻撃、synfloodなどのネットワークレイヤー攻撃もブロックします。treyには大量の要求を受け入れ、不良トラフィックを除外し、良好なトラフィックを渡す能力があるため、cdnはDdos攻撃を軽減できます。そのため、ntp、DNS、ssdp、chargen、およびsnmpボリューム攻撃などの増幅攻撃をブロックできます。
私がこれまでに見た最大の攻撃は、2014年7月に321 Gbpsでした。この攻撃の間に、20 GbpsのDNSプロトコル攻撃もありました。したがって、DNSインフラストラクチャが膨大な数のリクエストに耐えられるように回復力があることを確認する必要があります。
あなたが提供した説明から、攻撃者が大量のスレッドを開いてすべてのスレッドがWebサーバー、アプリサーバー、またはファイアウォールで消費されるような、極度の攻撃を受けているように見えます。これは、slowpost、slowloris、RUDYなどに似ています。
アプリケーション層の枯渇攻撃をブロックするには、Webアプリケーションファイアウォール(WAF)を入手する必要があります。一般的なネットワークファイアウォール(Amazonファイアウォールおよび次世代ファイアウォールを含む)は、それをブロックできません。最近送信された仕事用ファイアウォールは、最近のすべての攻撃の約30%しかブロックできません(2014年11月)。
Apache、ELB、およびACLを使用してawsでFail2Banを使用するために作成したツールを以下に示します。 https://github.com/anthonymartin/aws-acl-fail2ban
DoS攻撃やec2インスタンスの乱用を検出して防止するのに役立ちます。
構成サーバーファイアウォールは、EC2のソフトウェアベースのVMでのDDoS軽減のために私が見た中で最高のものです。 syslog機能を組み合わせると、負荷分散環境から保護できます。