【AWS発表】新サービス: AWS WAF
Webサーバでスクロールしていくアクセスログとエラーログを追いかける時間をとられていますか?ユーザやスパイダーからの正当な形式のリクエストに加えて、おそらく頻繁に見苦しく恐ろしいリクエストあらゆるリクエストを目にしているでしょう。
例えば、私のあるサーバをチェックしたところ、何者かがよく知られた場所にインストールされている有名なパッケージを探していることがわかりました。(以下の図では、ソースアドレスを10.11.12.217に置き換えています)
これらのプローブのいずれかが成功した場合、攻撃者は私のサーバに侵入するための幾つかの方法を試すことができます。一般的な(あるいはデフォルトの)ユーザ名とパスワードのリストを試し、次のステップとしては、SQLインジェクションやクロスサイトリクエストフォージェリ等を使用して、システムや言語あるいはアプリケーションの脆弱性をついてきます。
好むと好まざるにかかわらず、これらの不正なリクエストは24x7でやってきます。パッチを適用し攻撃にさらされる部分を可能な限り小さくしていたとしても、防御レイヤを追加する余地はあります。
New AWS WAF
防御レイヤを追加するために、AWS WAFを本日から開始します。AWS WAFは、上に述べたようなアプリケーションレイヤでの攻撃から、AWS上で動作しているWebアプリケーションを守ることができます。
数分あればAWS WAFを設定し、アプリケーション保護をはじめることができます。アクセス可能あるいは不可能なIPアドレスを含む1つ以上のWebアクセス制御リスト(web ACL)とルールを作成するだけです。そして、アプリケーションごとのweb ACLをAmazon CloudFrontのディストリビューションにひも付けます。
その時点から、そのディストリビューションを経由してやってくるHTTPおよびHTTPSのリクエストは紐付けられたweb ACLのルールと照合されます。ルールの条件は特定のリクエストやIPアドレスだけを許可するポジティブにも、特定のリクエストやIPアドレスのみを不許可とするネガティブにも設定することができます。
多くの異なる方法でルールと条件を使用することができます。例えば、上に示したIPアドレスからの全てのアクセスをブロックするルールを作成することができます。例えば、/typo3/ や /xampp/ を含むURLへ、多くの異なるIPアドレスからの同様の要求がやってきたとき、ブロックすることができます。また、自分のアプリケーションに特有のURIだけを許可し、他のURIは不許可とすることもできます。また、SQL injectionを防ぐルールも作成することができます。
AWS WAF Concepts
条件(conditions)、ルール、web ACL、アクションについてお話しましょう。コンソールのスクリーンショットをつかって説明します。
条件(Conditions)はやってくるリクエストを調べます。リクエストURI, クエリ文字列、HTTPヘッダ、HTTPメソッドを見ることができます。
攻撃者は多くの場合、不正な方法で彼らの要求をカモフラージュしようとしているので、conditionsは、コンテンツを検査する前に、要求に応じて実行される変換を含めることができます。
conditionsはIPアドレスをみることもできます。/8, /16, /24を使ったアドレスレンジあるいは。/32をつかった個別のIPアドレスを指定できます。
ルール(Rules)は1つか複数のconditionsを参照します。例えば、特定のコンテンツへのアクセスをブロックするために、IPベースのルールとリクエストベースのルールを参照することができます。ルールは Amazon CloudWatchメトリクスを作成します。
アクション(Actions)はルールの一部であり、リクエストがルール内の全ての条件に一致した場合に実行するアクションを示しています。許可、ブロックまたは単にルールに一致する回数のカウントを選ぶことができます。カウントは、新しいルールを実際に適用する前に評価するための良い方法です。
Web ACLは順番に各ルールのアクションと一緒に1つ以上のルールを参照します。ディストリビューションにやってくるリクエストはルール内の全ての条件に一致するまで連続したルールに対して評価され、そのルールに関連付けられたアクションが実行されます。ルールが一致しない場合、デフォルトのアクション(ブロックまたは許可)がとられます。
WAF in Action
条件、ルールおよびWeb ACLの作成プロセスを見てみましょう。以下ではコンソールから実行しますが、AWS Command Line Interface (CLI), AWS Tools for Windows PowerShell, あるいは Web Application Firewall APIからでも行なえます。
コンソールではいくつかのステップでリードします。ここでは、ProtectSiteというweb ACLをつくることにします。
許可またはコンテンツをブロックする条件を作成します。
は私のサーバーのログから(偽の)IPアドレスをブロックするBadIPと呼ばれるIPの一致条件を作成することができます。
そして私はBadCompanyと呼ばれるルールを作成するために条件を使用しました。
そして今、ルールを選択し、アクションを選択しました。
上にある通り、デフォルトのアクションはAllowです。この条件、ルール、web ACLの組み合わせは、10.11.12.217からの着信トラフィックをブロックし、他のすべては通過することを可能にします。
次のステップはCloudFrontのディストリビューション(時間をかけて、多くのサービスに対応させる予定です)とweb ACLとの関連付けです。
1つのweb ACLは複数のdistributionに関連付けることができます。しかし、1つのディストリビューションは1つのweb ACLに関連付けることができます。
web ACLは数分で有効となります。CloudWatchのメトリクスを通じてweb ACLが使われた頻度を調べることができます。
API Power
これら全ては、コードからアクセスできます。
CreateIPSet
、CreateByteMatchSet
、およびCreateSqlInjectionMatchSetは
条件を作成するために使用されています。CreateRuleは
条件からルールを作成するために使用されます。CreateWebACLは
ルールからのウェブのACLを作成するために使用されます。UpdateWebACLはディストリビューション
とウェブACLを関連付けるために使用されます。
この他、一覧表示、更新、および条件、ルール、およびWeb ACLを削除する機能もあります。
GetSampledRequests
機能を使用すると、指定した期間内に特定のルールに対して評価された要求について最大5000にアクセスすることができます。 応答が実行されたアクション(ブロックを認め、またはCOUNT)などの要求のそれぞれについての詳細な情報が含まれています。Available Now
AWS WAFは、CloudFrontが動作するどこでも使うことができます。価格は、web ACLにつき$5, ルールごとに$1, 100万リクエスト毎に $0.60です。
— Jeff;
本記事はhttps://aws.amazon.com/blogs/aws/new-aws-waf/の翻訳です。翻訳担当:荒木
コメント