シンプルで高機能なSaaS型のWAF、F5 Essential App Protect ServiceがGAされました!

2020.04.06

ども、もこ@札幌オフィスです。

つい先日、F5よりクラウドに特化したSaaS型WAF、「F5 Essential App Protect」がGAされましたので、ご紹介していきます!

特徴

なんと言ってもすぐに設定できて、シンプルな従量課金、SaaSサービスのためインフラを自前で運用することなく、ネットワークやセキュリティーの知識が浅い方でも簡単に高機能なアプリケーション保護機能を使えるのが特徴です。

以前Advanced WAFをご紹介しましたが、こちらはプライベートなネットワークに置けるなどでネットワークの自由度が高かったり、ロードバランサーなどの機能もついてより高機能で自由度が高い反面、インスタンスを自前で維持運用しなければならず、帯域に対するライセンス料金でそこそこにお高かったりしますが、今回GAされたEssential App Protect Serviceは簡単かつ高速に設定を行えて、見やすいUIでログを眺めることができます!

構成は下記のようになっており、ポータルからオリジン側のエンドポイントを指定してWAFの設定をするとエンドポイントが払い出されるので、Route53やその他のDNSでCNAMEレコードを登録する形となります。

https://devcentral.f5.com/s/articles/F5-Essential-App-Protect-Go より参照

使える機能

標準的なSQLインジェクションやバッファオーバーフローなどの不正なリクエストを防ぐWAFの他、複数のBot(IP)リストからブロックしたいBotを選択できたり、F5 Labから提供される今ホットな攻撃をまとめた攻撃キャンペーン(Threat Campaign)機能で自動でルールをアップデートして遮断する機能などがあります。

初めてWAFを利用される方でも簡単に設定でき、UIもみやすく万一誤検知などが発生してチューニングを行う際も簡単にログを追うことができます。

料金

料金は下記のようなシンプルな従量課金モデルとなっており、数十分でWAFの設定を行えるため、PoCなどが必要な場合でも安価に検証することができます。

料金モデル 料金
エンドポイント料金 1エンドポイント1時間/0.25$
トラフィック料金 1GB/0.63$

AWS Marketplaceからの登録も可能で、利用料金をAWSの支払いとまとめることが可能です!

AWS Marketplace: F5 Essential App Protect Service

おすすめの人

従量課金で比較的安価なため、「現在はWAFなどの製品を導入していないが、よりセキュリティーを強固にするためにWAFを触ってみたい」などの需要にも応えた製品になっています。

また、インスタンスを自前で管理するタイプのWAFを挟むために複雑なアーキテクチャをとっている場合でも、Essential App ProtectにHTTPサーバーを開けるだけでサービスを利用できるので、構成をよりシンプルにしたい場合などでも有効かと思います。

使ってみる

早速F5 Essential App Protect Serviceを利用して、このような物を作ってみたいと思います。

※AWS環境はすでに出来ている物と想定して、ALBのエンドポイントの前段にF5を設定していきます。

公式サイトからクレジットカードを登録して利用することもできますが、今回はAWS MarketplaceでF5 Essential App Protect Serviceをサブスクライブして、実際にどんな感じの機能があるのかを触っていきたいと思います!

AWS Marketplaceからサブスクライブする

AWS MarketplaceのF5 Essential App Protect Serviceを開き、「Continue to Subscribe」を開き、次のページで「Subscribe」をクリックするだけでOKです!

「Subscribe」ボタンを押すとF5のポータルに飛ばされ、アカウントへのログイン(もしくは登録)を行います。

正常に処理が完了しなかった場合は、AWS Marketplaceの画面で下記の「Having issues signing up for your product?」の「click here」を押すことでリトライすることができます。

アカウントを登録する

登録が完了すると、F5のポータルで「Subscribed」になっていて、支払い方法がAWS Marketplaceになっていることを確認できます!

F5ポータルからEssential App Protectを設定する

では早速、F5のポータルからEssential App Protectを設定してきます。

と言っても、初期設定はめちゃめちゃ簡単で、5ステップ弱ですぐに完了します。

まず初めに、Essential App Protectの画面から"Start protecting your app"で、保護するドメインを指定します。(名前解決できる必要があるので、設定していない場合は設定しておきましょう!)

次の画面へ行くと、前のページで指定したドメインに設定しているレコードを元に、一番近いリージョンが自動で選択され、次に進みます

次のステップでは、証明書をインポートするか尋ねられます。

ちょうどLet's Encryptで発行したDV証明書があったので、こちらをインポートしておきます。

なお、Certbotを叩いて生成されるprivate.pemではエラーが出てしまっていたため、下記のようにしてあげた上で貼り付けています。

openssl rsa -inform pem -in privkey.pem | pbcopy

続きまして、Essential App Protectのデフォルト設定を聞かれます。

全て推奨と記載されていますので、今回は全てチェックを入れて次に進みます。

ここまで設定が完了したら、F5よりCNAME用のレコードが払い出されます。

払い出されたドメインに対してCNAMEレコードを追加した上で、Test updated DNSを押して"Success"と出てくれれば設定は完了です!

ここまで15分ほどで作ることができました!

使ってみる

早速使ってみましょう。

さくっと検知させるためにTor Browserを利用してアクセスしてみました。

F5ポータルを見ると、10秒~30秒程度でリクエストURI、アタックタイプ、アクセス元IPなどが可視化され、検知されていることを確認できます!

View Eventsを見ると、イベントの詳細を確認することができ、ログを自力でパースしたりせずにWebUI上でサクッと見ることがで、ロケーション別、重症度別、カテゴリー別などでソート、検索することもできます。

攻撃キャンペーン(Threat Campaign)という機能で、組織化された攻撃などの"今ホットな攻撃"をF5 Labsの調査に基づいてリストアップしてくれていて、ほぼリアルタイムに適用されるそうです!

また、先程触れたTor Browserからのアクセスの検知についてですが、こちらはMalicious IPからブロックするIPリストを設定することができ、柔軟に切り替えが可能になっています!

ブロックを有効にして実際に攻撃を防いでみる

それでは実際にブロック設定をして動作を確認してみましょう。

High-risk Attack Mitigation、Malicious IP、Threat CampaignsのタブでMonitoringのスイッチをBlocking Modeに切り替え、右下のUpgdateを押すだけで設定が完了します。

Tor Browserを利用してアクセスしてみます。

ブロックされると上記のようにSupport IDが発行され、このIDをベースにお問い合わせが来た際などに何が原因でブロックされたかのログを確認することができます。

/etc/password周りの検出はこんな感じで、"View full request"を開くと詳細を見ることもできます。

シンプルなUI上で検知した攻撃を特定して詳細なログも見れて、すごく重宝できそうです。

AWS環境のSecurity Groupを更新する

Essential App Protectを経由しない不正なアクセスを防ぐため、Essential App Protect経由でのリクエストのみをオリジンに流すよう設定することができます。

今回の構成でいくとALBのSecurity Groupを下記のように更新してあげます。

東京リージョンは上記の3IPですが、東京リージョン以外で利用する場合は公式ドキュメントのIPアドレス一覧をご覧ください。

まとめ

リッチなUIで初めてWAF製品を触るような方でも5ステップですぐに設定でき、カスタマイズも柔軟にでき、WAFのインフラを考える必要がないSaaSサービスのため、ノンストレスでWAFを設定することができました。

価格も時間あたり0.25$、1GBあたり0.63$と従量課金制で、扱うトラフィックにもよりますが比較的安価に始めることができ、AWS Marketplaceからのサブスクライブもできるので、是非触ってみてください!

参考

About the F5 Essential App Protect Service

F5 Essential App Protect: Go !