最近WafCharmを導入したのですが、公式以外にあまり情報がなかったので、公式サイトに記載がないTipsなどをまとめることにしました。
WafCharmとは何?
WafCharm公式
サイバーセキュリティクラウドが提供する、AWS WAF運用を支援してくれるサービスです。WafCharm自体はWAFではありません。Managed Rulesとも違います。
あくまでAWS WAFの支援サービスなので、利用できるのはAWS WAFに対応しているCloudFront, ALB, API Gatewayのみです。
WAF Classic, v2いずれにも対応しています。
導入の注意
WafCharm以外の費用
WafCharmの利用コスト以外に、
- AWS WAFの利用費用
- CloudFront, ALB, API GatewayアクセスログログのS3保存費用
がかかります。
さらに、攻撃通知メールを受信するために
- Kinesis Data Firehose
- Lambda
を設定する必要があり、こちらも費用がかかります。参考までに1.7億リクエストでKinesis Data Firehoseのコストは25USD程度でした。
AWS WAFに限らず、WAF運用は誤検知や検知漏れの対応が鍵になるため、攻撃通知メールの受信は実質必須といってよいでしょう。
導入作業
作業ドキュメントはありますが、自分でCloudFrontやAWS WAF, Kinesisなどの設定が必要です。基本的にAWSを自分で設定できることが導入の前提になります。
Cyber Security Cloud Managed Rules for AWS WAFとの違い
同じサイバーセキュリティクラウドが提供しているCyber Security Cloud Managed Rules for AWS WAFは全く別のサービスで、OWASP Top 10に準拠したAWS WAF v2/Classic対応のマネージドルールです。なお、WafCharmとの共存も可能で、WafCharmのProfessional以上に契約すると、このマネージドルールのサポートも受けられます。
導入
導入方法はマニュアルを参照してください。
攻撃通知や月次の統計情報設定方法は契約者向けページに記載されているので、ここではリンクしません。
Tips
ACLセットはまとめるべきか?
ACLセットはリージョン単位(CloudFront用ACLはus-east-1(バージニア北部)扱い)で使い回せます。ACLセットごとにAWS WAF, WafCharmそれぞれ課金が発生するので、なるべく使い回したいところ。
現在はサービスごとに1ルールにまとめて運用しています。(本番環境、ステージング環境などすべて1ルール)
脆弱性診断との兼ね合い
WafCharmがブロックモードになっている場合、脆弱性診断を行ってもブロックされてしまい、アプリケーションに脆弱性があるかどうか調べられません。
しかし仮に脆弱性が見つかった場合、WAFでブロックされることの確認が必要です。そこで基本的に脆弱性診断環境はWAFを設定せず、脆弱性が見つかった場合は有効化して攻撃がブロックされることを調べる方針にしています。
攻撃通知と誤検知の対応
WAFによくある現在の攻撃ステータスをリアルタイム表示する機能はありません。月次レポート表示はできますが、月単位で更新されるためリアルタイム性はありません。
リアルタイムな攻撃通知はメール通知で行われます。
メール通知は登録アドレスと、通知用のメールアドレスに送られます。初期は登録したアドレスのみでしたが、今は別に通知用アドレスを設定可能になっています。Slackの投稿用アドレスを指定して、Slack通知を行っています。
ルールの更新
WAF運用で一番大変なルールのチューニングは、アクセスログを分析して自動的に行われます。誤検知があれば、サポートに連絡することで修正してもらえます。幸い今のところ誤検知は起きていませんが。
ルールのチューニングは概ね1日ごとに行われるそうですが、通知はありません。更新を確認したい場合はCloudTrailが使えます。
Web Site ConfigにあるS3 Validationって何?
ドキュメントには何も記載がないこの項目。空欄だったりnormalだったりしますが、実は現在何も意味がありません。
本来は何か機能があるらしいのですが、今は正常に動作していないそうです。