XC Bot 対策機能
※本資料の画面表示や名称は資料作成時点の画面表示を利用しております。アップデート等より表示が若干異なる場合がございます。
XC で Bot 対策機能 を利用する方法や、各種設定について紹介します
マニュアルは以下のページを参照してください
1. XC Bot 対策機能 について
XC Bot 対策機能は、以下の特徴を備えております
従来のBot検出技術を回避する高度なBot (Captchaバイパスや、ブラウザ偽装ツール等を利用したBot)を、独自に開発した人工知能と機械学習モデルを用いて高精度に判定
ログイン、サインアップ画面などの重要なフローを保護します
XC WAAPはこれらの高度なセキュリティをアプリケーションの迅速な展開に合わせて自由にご利用いただける環境を実現します
2. Bot 対策機能 の設定
1. Bot Defense の設定方針
このBot対策機能では、保護対象のPATHへのリクエストに対する応答にJSを挿入し、クライアントの振る舞いが正規のユーザかどうかを評価いたします。 サンプルの手順では最低限の設定パラメータを紹介することを目的としています。
サンプルの設定では想定外の動作となり通信にエラーが発生する場合がありますので、実際のWebサイトを保護する際には以下のような方針を念頭に、PATHやMETHODを指定してください
保護する対象を整理し、適切なPATHを指定する。(/や、/*は非推奨)
ブラウザよりGETメソッドで直接アクセスするパスについては、GET(Document)を指定する
ブラウザよりPOSTメソッドでアクセスを行うパスについては、POSTを指定する
2. Bot Defence Config の設定
作成済みのHTTP Load Balancerに Bot Defence Config を設定します。 HTTP Load Balancer の設定手順は こちら を参照ください
画面左側 Manage欄の Load Balancers 、 HTTP Load Balancers を開き、対象のLoad Balancerを表示し画面右側に遷移します。
すでに作成済みのオブジェクトを変更する場合、対象のオブジェクト一番右側 ‥ から、 Manage Configuration をクリックします
設定の結果が一覧で表示されます。画面右上 Edit Configuration から設定の変更します。
Security Configuration 欄の Bot Defense Config から設定します
Specify Bot Defense Configuration を選択し、 Bot Defense Regional Endopoint に Asia を選択し、その下に表示される Configure をクリックします。
Protected App Endopoints の App Endpoint Type 下に表示される Configure をクリックします。
Add Item をクリックします。
以下のパラメータを入力します。
入力パラメータ
注釈
ANY は GET 、 POST 、 PUT を含みます。保護対象となるPrefixに XMLHttpRequest の宛先となる箇所が含まれる場合、Bot対策機能により想定と動作が異なる場合があります。name |
demo-bot-endpoint |
HTTP Methods |
ANY |
Prefix |
/ |
各種設定を反映するため、画面右下の Apply をクリックし、最後にHTTP load Balancerの Save and Exit をクリックしてください
3. Origin Server の変更
この例ではOrigin Serverとして OWASP Juice Shop を動作させます。OWASPが提供する脆弱なサーバとなりますので本テスト完了後、適切に停止させてください
Origin ServerでDockerを動作させ、以下コマンドでOWASP Juice Shopを 80 で待ち受けるよう設定してください
1 # OWASP Juice-shop を実行してください。初回はDocker Imageの取得のため起動に少し時間がかかります
2
3 $ docker run -d --name dcs-juice-shop -p 80:3000 bkimminich/juice-shop
4 8b69c6f97763b7c08e4afde42942c046dcab400743d756fc36a833d7bb8fa507
5
6 # 正しく起動していることを確認してください
7
8 $ docker ps
9 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10 8b69c6f97763 bkimminich/juice-shop "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:80->3000/tcp, :::80->3000/tcp dcs-juice-shop
11
12 # 利用が完了しましたら、対象のDocker Containerを停止してください
13 $ docker stop $(docker ps -a -f name=dcs-juice-shop -q)
14 $ docker rm $(docker ps -a -f name=dcs-juice-shop -q)
また、HTTP Load Balancer ではこの単一のOrigin Serverへ通信を転送するよう、Origin Pool を指定してください。
Origin Pool の作成
HTTP Load Balancer に Origin Pool の割当
3. 動作確認
1. 正常動作
ブラウザで https://echoapp.f5demo.net にアクセスし、ページを閲覧してください
以下ログインアカウントでAdminとして動作できます。
注釈
正しくブラウザで操作が出来ることを確認してください。
2. ブラウザ自動操作ツールによるアクセス
ブラウザ自動操作ツールによるアクセスを確認します。 利用するツールはお客様環境に適したツールを自由に選択ください。
この例では、ブラウザ自動操作ツール( Selenium ) での動作を確認します。
今回のサンプルでは、 ログイン > 商品をポップアップで表示 > ログアウト を複数回繰り返す動作としております。
それでは通信の結果を確認します。
新たに Bot Defense 、 Bot Traffic Overview のタブが表示されます。
グラフの結果から、自動化ツールを使うことにより多くの通信が怪しいBotとして検知されていることがわかります
3. Curlコマンドによるアクセス
Top ページに対してCurlコマンドを実行します。その結果を確認します
1$ while : ; do sleep 1 ; date ; curl -ks https://echoapp.f5demo.net/ | grep title ; done
それでは通信の結果を確認します。
こちらの場合には、User Agentが curl/7.58.0 と表示され、 Bot と検知されていることが確認できます
4. Bot をブロックする設定に変更 ---
HTTP Load Balancer の設定を変更し、Botをブロックする設定とします。
設定を反映した後、先程実行したCurlコマンドを停止させ、改めて以下コマンドでアクセスしてください
1$ curl -vks https://echoapp.f5demo.net/
2
3** 省略 **
4
5> GET / HTTP/2
6> Host: echoapp.f5demo.net
7> User-Agent: curl/7.58.0
8> Accept: */*
9
10** 省略 **
11
12< HTTP/2 200
13< content-type: text/html; charset=UTF-8
14
15** 省略 **
16
17The requested URL was rejected. Please consult with your administrator.
先程設定変更をした内容の通り、Botに対して通信を拒否し、エラーメッセージが表示されていることを確認できます
4. Bot Defence Config の解除
その他の機能を確認するため設定を解除する手順です。
こちら の手順を参考に、HTTP Load Balancerに割り当てたBot Defence Configを解除してください
5. Terraform を用いた HTTP Load Balancer + Bot対策 の作成
ここで紹介したHTTP load Balancer + Bot対策 を Terraform を使ってデプロイすることが可能です。
Terraform の利用で必要となる事前作業については こちら の手順を参考してください
パラメータの指定
実行に必要なファイル、また実行環境に合わせたパラメータを指定してください
1$ git clone https://github.com/BeF5/f5j-dc-waap-automation
2$ cd f5j-dc-waap-automation/terraform/bot-protection
3
4$ vi terraform.tfvars
5# ** 環境に合わせて適切な内容に変更してください **
6api_p12_file = "**/path/to/p12file**" // Path for p12 file downloaded from VoltConsole
7api_url = "https://**api url**" // API URL for your tenant
8
9# 本手順のサンプルで表示したパラメータの場合、以下のようになります
10myns = "**your namespace**" // Name of your namespace
11op_name = "demo-origin-pool" // Name of Origin Pool
12pool_port = "80" // Port Number
13server_name1 = "**your target fqdn1**" // Target Server FQDN1
14server_name2 = "**your target fqdn1**" // Target Server FQDN2
15httplb_name = "demo-echo-lb" // Name of HTTP LoadBalancer
16mydomain = ["echoapp.f5demo.net"] // Domain name to be exposed
17
18cert = "string///**base 64 encode SSL Certificate**" // SSL Certificate for HTTPS access
19private_key = "string///**base 64 encode SSL Private Key**" // SSL Private Key for HTTPS access
Terraform の利用
以下コマンドを参考に実行および削除をしてください。
1# 実行前事前作業
2$ terraform init
3$ terraform plan
4
5# 設定のデプロイ
6$ terraform apply
7
8# 設定の削除
9$ terraform destroy
6. API を用いた HTTP Load Balancer + Bot対策 の作成
ここで紹介したHTTP load Balancer + Bot対策 を API を使ってデプロイすることが可能です。
API の利用で必要となる事前作業については こちら の手順を参考してください
以下マニュアルを参考に、パラメータを指定して実行してください。
HTTP Load Balancer
Example of creating http_loadbalancer
ページ中段
Request using curlをご覧ください
送付するJSON データの書式は実際に作成したコンフィグのJSONデータからも確認をいただけます。合わせてご確認ください
パラメータの指定
GitHubよりファイルを取得します。 bot-protection-httplb.json をAPIの値として指定します。
**<変数名>** が環境に合わせて変更するパラメータとなります。適切な内容に変更してください。
Originl Pool Object は HTTP Load Balancer の Originl Pool 作成手順に従って作成ください
APIの利用
以下のサンプルを参考にAPIを実行してください。 証明書のファイル名、パスワード情報は適切な内容を指定してください。
ファイル取得
1$ git clone https://github.com/BeF5/f5j-dc-waap-automation
2$ cd f5j-dc-waap-automation/api/bot-protection
オブジェクトの作成
1# Originl Pool の作成 (HTTP LoadBalancer のパラメータを指定)
2$ curl -k https://**tenant_name**.console.ves.volterra.io/api/config/namespaces/**namespace**/origin_pools \
3 --cert **/path/to/api_credential.p12-file**:**password** \
4 --cert-type P12 \
5 -X POST \
6 -d @../http-load-balancer/base-origin-pool.json
7
8# HTTP LB の作成
9$ curl -k https://**tenant_name**.console.ves.volterra.io/api/config/namespaces/**namespace**/http_loadbalancers \
10 --cert **/path/to/api_credential.p12-file**:**password** \
11 --cert-type P12 \
12 -X POST \
13 -d @bot-protection-httplb.json
オブジェクトの削除
1# HTTP LB の削除
2$ curl -k https://**tenant_name**.console.ves.volterra.io/api/config/namespaces/**namespace**/http_loadbalancers/**httplb_name** \
3 --cert **/path/to/api_credential.p12-file**:**password** \
4 --cert-type P12 \
5 -X DELETE
6
7# Origin Pool の削除
8$ curl -k https://**tenant_name**.console.ves.volterra.io/api/config/namespaces/**namespace**/origin_pools/**op_name** \
9 --cert **/path/to/api_credential.p12-file**:**password** \
10 --cert-type P12 \
11 -X DELETE


















