こんにちは。かじです。
今回はDoS/DDoS攻撃をAWS WAFでブロックする方法を紹介します。
DoS攻撃、DDoS攻撃とは
DoS攻撃とは、特定のサーバーに対して過剰にアクセスを集中させることでサーバーが機能を提供できないようにする攻撃です。また、DoS攻撃を複数のIPアドレスからすることで、よりサーバーに負荷をかける攻撃をDDoS攻撃といいます。複数のIPアドレスを使用されている分対応もイタチごっこになるため、攻撃の複雑性が増します。
DoS/DDoSを受けた際の対応
特定のIPをブロックする
まず挙げられるのは特定のIPをブロックする方法です。
攻撃を受けたら、そのIPをブラックリストに手動で追加する方法になります。
追加する方法は下記になります。
特定時間当たりの過度なアクセスをブロックする
続いてはDoS攻撃を検知したら自動でブロックする方法です。
5分間で100アクセスなど、同一IPからのアクセスがあった場合、そのIPを自動でブロックすることができます。
実現方法としては下記を参照ください。
DoS/DDoSへの予防
とはいえ、上記2つの方法だと攻撃されないとブロックすべきIPが分かりませんし、防御が後手になってしまいます。
次は予めDoS/DDoS攻撃への防御する方法を紹介します。
基本的に攻撃への予防としてはカスタムルールを使用します。DoS/DDoS攻撃への対応に有効なものとしては、下記の3つがあります。
Amazon IP 評価リストマネージドルールグループ
Amazonが独自に過去事例を元に作成した攻撃に使用されたIPアドレスのブラックリストをブロックするルールになります。こちらを使用することで、予め攻撃に利用されたIPアドレスをブロックすることができます。
匿名 IP リストマネージドルールグループ
こちらのルールはVPNやプロキシ、クラウドプロバイダーのIPをブロックすることで、発信者を秘匿にするアクセスをブロックすることができます。
この匿名 IP リストマネージドルールグループについては、直接的にDoS/DDoS攻撃を防ぐというよりは、攻撃者が自分のIPを隠したり、踏み台的に他のネットワーク、サーバーを攻撃に使用している場合にブロックできます。
ただ、直接的に攻撃を防ぐ訳ではないと伝えたように、インターネットを使用するのに、VPNやプロキシ、クラウドプロバイダーを普段から利用しているユーザーもブロックしてしまう可能性があるため、このルールの利用には注意が必要です。
AWS WAF Bot Control
AWS WAF Bot Controlはリクエストのユーザーエージェントを見て、リクエストの対象がBotか否かを判断し、更にBotであった場合、有害なのか無害なのかを検証し有害であった場合はブロックします。これによってBotを使用して大量のHTTPリクエストをブロックすることができます。
Googleのクローラーなどの場合は、WAFが検証し、無害であることが確認されたらアクセスが許可されます。
海外からのアクセスをブロックする
次は海外からのアクセスをブロックすることです。DoS/DDoS攻撃では海外のIPアドレスが使用されることが多いため、海外からのIPアドレスをブロックすることで防御することもできます。ただ、海外からのアクセスを想定している場合は、好ましくないかもしれません。
海外からのアクセスをブロックする方法は下記になります。
AWS Shieldを使用する
ここまではWAFを使用したDoS/DDoS攻撃への防御を紹介しておりましたが、AWS Shieldを使用することも一つの方法です。WAFがネットワークの7層によるファイアウォールであるのに対して、Shieldは3,4層に対するファイアウォールサービスになります。
StandardとAdvancedの二つのプランがあり、Standardは追加料金なしで自動で、ELBやCloudFornt、Route53などのサービスに適用され、DDoS攻撃の検知や軽減を行ってくれます。
Advancedは更にネットワーク7層と連動して更に強力な防御を行うサービスとなっております。
Shieldについては下記を参照ください。
まとめ
個人的には、
・AWS Shield Standardで無料でDDoS攻撃を検知/防御
・Amazon IP 評価リストマネージドルールグループで脅威の可能性があるIPをブロック
・一定時間内の過剰なアクセスをするIPをブロック
・攻撃を認識したIPはブラックリストに追加
という方法がDoS/DDoS攻撃に対する防御と対応は十分なのかなと思います。若干防御範囲が被っているかもしれませんが。
攻撃を検知した際に、ブラックリストへの追加は何らかの方法で自動化できる方法があるといいですね。