Web アプリケーションファイアウォール (WAF)(2020)

重要

発表の通り、本日、Fastly WAF (WAF Legacy および WAF 2020) は正式に廃止されました。 Fastly 次世代 WAF も同様の機能を提供します。疑わしい Web トラフィックや異常な Web トラフィックを監視し、指定したアプリケーションやオリジン サーバーに向けられた攻撃からリアルタイムで保護します。

Fastly の Web アプリケーションファイアウォール (WAF) は、悪意のあるリクエストを検出し、Web アプリケーションに到達する前にログに記録したり、ブロックすることが可能なセキュリティプロダクトです。Fastly WAF は潜在的な攻撃を検出してブロックするルールを提供します。これらのルールはポリシーとしてまとめられ、エッジに配置された Fastly のサービスにデプロイされます。WAF 機能の利用をご希望の場合は、詳細について Fastly のセールスチームまでメールでお問い合わせください。

Fastly WAF の仕組み

Fastly WAF は、HTTP または HTTPS で実行される Web アプリケーションを、既知の脆弱性に加え、クロスサイトスクリプティング (XSS) や SQL インジェクションなどの一般的な攻撃から保護します。Fastly WAF は、分散アプリケーションのクライアントエッジに戦略的に保護レイヤーを配置し、Web アプリケーションおよび API の脆弱性を悪用した悪質なアクティビティを検出してブロックします。

攻撃者が Fastly WAF でブロックされる様子を示した図

ネットワークやトランスポートレイヤーでトラフィックを検査する従来のファイアウォールとは異なり、Fastly WAF は主に HTTP アプリケーションレイヤーで Web トラフィックを分析します。Fastly WAF は、お客様の特定のサービス環境に合わせて選択・調整されたポリシーに基づいて、すべての HTTP および HTTPS ヘッダーと POST リクエストのボディを検査します。

Fastly WAF がご利用中のサービスのバージョンに適用されると、ルールを追加または削除することができます。WAF に追加した後に WAF ルールのステータスを変更することは可能です。アクティブルールのステータスを更新する場合は、ファイアウォールのバージョンをクローンし、更新したいアクティブルールのステータスを変更してから、新しいファイアウォールのバージョンをデプロイする必要があります。

注意

Fastly WAF は、トラフィックが Fastly を経由する場合にのみ機能します。サービスのご利用には、Fastly アカウントを作成し、サービスを作成した後、ドメイン名の CNAME DNS レコードを追加してトラフィックを Fastly に向け、Fastly WAF を経由するようにする必要があります。

Fastly WAF を有効にする

Fastly WAF を利用するために Web アプリケーションやオリジンサーバーの設定を変更する必要はありません。

有効化後のデフォルト WAF ポリシーの調整

WAF サービスをご購入頂くと、Fastly のカスタマーサポートチームが、ご指定のサービスに対してデフォルトの WAF ポリシーを有効化します。カスタマーサポートチームは、その後以下を含む追加設定の調整をサポートします。

上記の設定が完了後、ログの監視を開始し、正当なリクエストと、ブロックすべきリクエストを見分けることができます。

ログエンドポイントの設定

悪意のあるアクティビティのリクエストをモニタリングするため、リモートログストリーミングを設定して WAF 変数をログに取得します。既存のログエンドポイントだけでなく、Fastly WAF 用の新規のログエンドポイントを追加して使用することも可能です。ログで提供された情報を使用して WAF イベントを監視することができます。

プリフェッチ条件の追加

プリフェッチ条件とは、オリジンにリクエストを送信する前に Fastly がコードブロックを実行する条件のことです。すべてのリクエストを WAF に対して実行することを避けるために、WAF ポリシーにデフォルトのプリフェッチ条件 (req.backend.is_origin) を追加します。これにより、サービスにオリジンシールドが適用されているかどうかにかかわらず、オリジンに送信されるトラフィックのみが Fastly WAF によって確実に検査されます。

プリフェッチ条件の変更は可能ですが、作成後は条件のタイプを変更 (type:request から type:prefetch) できないのでご注意ください。WAF 向けに type:prefetch の条件が作成されていない場合、POST メソッドを使って作成することができます。例:

$ curl -s -X POST https://api.fastly.com/service/$service_id/version/$version/condition -H "Fastly-Key:$token" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"name": "Waf_Prefetch","priority": "10","statement": "req.backend.is_origin", "type": "prefetch"}'

PUT メソッドを使用して、既存のプリフェッチステートメントを変更できます。例えば、プリフェッチ条件のステートメントを更新して、ホワイトリストに登録されていない IP アドレスからのリクエストとオリジンへのトラフィックを WAF の検査の対象として設定することが可能です。

$ curl -s -X PUT https://api.fastly.com/service/$service_id/version/$version/condition/Waf_Prefetch -H "Fastly-Key:$token" -H "Content-Type: application/json" -d '{"statement": "req.backend.is_origin && !(client.ip ~ allowlist)"}' -H "Accept: application/json"

レスポンスのカスタマイズ

WAF を有効にする前に、Fastly WAF がブロックするすべてのリクエストに返すカスタムレスポンスを作成し、 HTTP ステータスコードを割り当てる必要があります。Fastly WAF がリクエストをブロックするように設定されている場合、リクエストがルールに一致するとキャッシュから直接レスポンスが配信されます。レスポンスをカスタマイズしたい場合は、コントロールパネルを使用して変更を行ってください。

ヒント

Fastly WAF のレスポンスオブジェクトによってブロックされたユーザーに表示されるカスタム HTML エラーページを作成することができます。詳細については、カスタム HTML エラーページの作成に関するガイドを参照してください

警告

カスタマーサポートによって WAF が作成された場合、Fastly WAF レスポンス の Status または Description を変更しないでください。

ルールの選択

Fastly WAF では、Fastly 独自のルール、Trustwave ModSecurity Rules、OWASP Top 10 をベースとするルールのご利用が可能です。これらのルールにより、Web アプリケーションのトラフィックを監視して、一般的な攻撃を幅広くチェックすることができます。ルールはデフォルトでは有効になっていないため、明示的に有効化する必要があります。オリジンを保護するのに必要なルールを特定したら、WAF に追加します。追加したルールでトラフィックを検査する準備ができたら、WAF をデプロイすることができます。

Fastly では、WAF での適用が可能な特定のアプリケーションやテクノロジー (例:WordPress、Drupal、PHP、.NETなど) 向けのルールも追加することも可能です。ルールを追加すると、公開された WAF ポリシーに対して審査されるリクエストのレイテンシが長くなることにご留意ください。

WAF ポリシーのルールを選択した後、ご都合に合わせて Fastly が提供するアップデートを適用することができます。オリジンで使用されているアプリケーションやテクノロジーを変更する場合、利用可能なルールを確認し、関連するルールを WAF に適用する必要があります。

Fastly WAF のモニタリング

Fastly WAF ダッシュボードでは、Fastly サービスにデプロイされている Fastly WAF をモニタリングできます。

Fastly WAF の無効化

スーパーユーザーのアクセストークンを持つユーザーは、Fastly サービスで使用されている WAF を無効にすることができます。

1$ curl -s -X PATCH \
2 -H "Fastly-Key:$token" \
3 -H "Content-Type: application/vnd.api+json" \
4 -d @-
5 https://api.fastly.com/service/waf/firewalls/$firewall_id \
6<<JSON
7{
8 "data": {
9 "type": "waf_firewall",
10 "attributes": {
11 "disabled": true
12 }
13 }
14}
15JSON

翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合はお問い合わせください : support@fastly.com