WebアプリケーションファイアウォールのBIG-IP ASM(Application Security Manager)の
設定に関する個人用メモ(v11.5.x)です。ちなみに、BIG-IP ASMはWebアプリケーション特有の攻撃に対する防御機能だけでなく、L7のDoS攻撃に対する防御機能も備えています。
なお、ASMポリシー作成方法には、自動的にパラメータ、URL、拡張子などを学習して自動的にポリシー作成するPolicy Builder機能がありますが、Learningに時間がかかるだけでなくASMの深い理解が必要となるので、一般的にRDSP(Rapid Deployment Security Policy)をベースポリシーとして利用されることが多いです。
※ 本記事では詳細な設定方法や体系的な解説は行いません。あくまでもメモとなります。
F5 ASMで利用するセキュリティ機能の優先度
◆ 推奨設定
⇒ RDSP(Rapid Deployment Security Policy)
⇒ シグネチャ
⇒ ホワイトリスト(File Typeのみ)
◆ 適用することが望ましい設定
⇒ DoS:膨大なリクエストによりアプリへの影響が懸念される場合に適用
⇒ Brute Force:不正ログインを防止したい場合に適用
⇒ CSRF:CSRFによるアタックを防止したい場合に適用
◆ 必要に応じて設定
⇒ ホワイトリスト(URI、Parameter、Header)
⇒ Web Scraping:ボットによる情報収集を拒否したい場合に適用
⇒ Data Guard:通信上、クレジットカード番号漏洩の可能性がある場合に適用
⇒ Session管理:ログイン後にしか表示しない画面を制限したい場合に適用
RSDPを利用することで有効になる機能
◆ RFC Violations
・ Cookie not RFC-Compliant
・ Evasion technique detected
・ HTTP protocol compliance failed
・ Mandatory HTTP header is missing
◆ Access Violations
・ Access from disallowed Geolocation
・ Access from disallowed User/Sessoin/IP
・ Access from malicious IP address
・ illegal HTTP status in response
・ illegal method
・ illegal redirection attempt
・ Request length exceeds defined buffer size
◆ Input Violations
・ Disallowed file upload content detected
・ Failed to convert character
・ GWT data does not comply with format settings
・ illegal Base64 value
・ Malformed GWT(Google web toolkit)data
◆ Cookie Violations
・ Modified ASM cookie
◆ Negative Security Violations
・ Attack Signature detected
・ Data Guard:Information leakage detected
RDSP機能のうち無効化を検討するべき項目
◆ Failed to convert character:コンバート失敗時の文字のチェック
⇒ 日本語のWebサイトの場合、誤検知が多くなってしまうケースがある。
◆ Data Guard:クレジットカード番号などの情報漏洩の停止
⇒ パフォーマンスが低下するため、スペックが低い機種の場合は要注意。
Step1:Blocking Settingの設定変更
設定場所:Security ⇒ Application Security ⇒ Blocking ⇒ Settings
Step2:Data Guardの無効化
設定場所:Security ⇒ Application Security ⇒ Data Guard
⇒ Data Guardの「Enabled」のチェックを外します。「Save」します。
Step3:ポリシーの適用
画面右上に「Changes have not been applied yet」とあるので「Apply Policy」を押す。
Blocking Setting:Learn、Alarm、Blockの意味
ASMのセキュリティ機能の有効化(ON)と無効化(OFF)の設定の多くはBlocking Settingsで行います。
・ Learn:「Manual Traffic Learning画面」で検知した攻撃を学習するモード
・ Alarm:「Event Logs画面」で攻撃を検知したことを示すログを出力するモード
・ Block:攻撃をブロックするモード(悪意あるトラフィックに通信影響が発生します)
クレジットカード番号のマスキング関連の3つの設定
1. Security ⇒ Application Security ⇒ Security Policies ⇒ Properties
⇒ Mask Credit Card Numbers in Request log( for Request data )
2. Security ⇒ Application Security ⇒ Data Guard
⇒ Data Guard・Credit Card Numbers・Mask Data( for Response data )
3. Security ⇒ Application Security ⇒ Blocking ⇒ Settings
⇒ Data Guard:Information leakage detected
これらの設定がどの方向のトラフィックに対し適用されるのか動作確認することが大切です。
シグネチャセットを割り当てる上でのチューニング
◆ Step1:シグネチャのチューニング:誤検知が発生した場合の対策
・ 誤検知したパラメータをホワイトリスト化する
・ シグネチャの誤検知が発生したパラメータは、そのシグネチャを無効化する
・ 誤検知したシグネチャ全体を無効化し、そのシグネチャで守りたいパラメータだけに適用
◆ Step2:File Typeの設定:強制ブラウジングの対策
・ Webアプリケーションページの巡回でFile Typeを学習する
・ File Typeの学習結果を見て、以下のどちらの対応をするのかを判断して設定する
⇒ Allow File Typeで対応(利用するFile Typeを全て指定する)
⇒ Disallow File Typeで対応(利用しないFile Typeで、危険と判断されるものを指定する)
◆ Step3:追加機能の検討:情報秘匿・攻撃対策
・ 以下の機能が必要であるかどうかを判断して、必要なものを有効化する
⇒ Data Guard、L7 DoS対策、Brute Force対策、CSRF対策
◆ Step4:最終的なチューニング
・ Step1~3で対応できない攻撃対策には、カスタマイズしたシグネチャ作成による対策や、iRule作成による攻撃回避対策などを講じることを検討します。
◆ 動作検証に際して・・・
実際にツールなどを使用し、ASMの設定前は攻撃を防げないこと、設定後は攻撃を防げていることを確認することが重要です。最低限、DoS、Brute Force、CSRF、SQLインジェクションなどの仕組みを理解して、動作検証のためにその攻撃を自身で行えるようになりましょう。