Citrix ADC ingress controller

Citrix ingress controller でボット管理ポリシーを構成する

ボットとは、手動タスクを自動化するソフトウェアアプリケーションです。ボット管理ポリシーを使用すると、有用なボットにクラウドネイティブ環境へのアクセスを許可し、悪意のあるボットをブロックできます。

カスタムリソース定義 (CRD) は、クラウドネイティブ展開でポリシーを設定する主な方法です。Citrixが提供するボットCRDを使用して、Citrix ADC VPX上のCitrix ingress controller でボット管理ポリシーを構成できます。ボットCRDにより、Citrix ingress controller とCitrix ADC間の通信が可能になり、ボット管理ポリシーを適用できます。

Kubernetes デプロイメントでは、Bot CRD を使用して、サーバーとの間で送受信されるリクエストとレスポンスにボット管理ポリシーを適用できます。セキュリティの脆弱性について詳しくは、「 ボット検出」を参照してください。

Bot CRD を使用すると、Kubernetes ネイティブアプリケーションの次の種類のセキュリティ脆弱性に対して、ボット管理セキュリティポリシーを設定できます。

  • 許可リスト
  • ブロックリスト
  • デバイスフィンガープリント (DFP)
  • ボット TPS
  • トラップ挿入
  • IPレピュテーション
  • レート制限

必要な保護の種類に基づいて、メタデータを指定し、ボット CRD .yaml ファイルの CRD 属性を使用してボットポリシーを定義できます。

ボット CRD 定義

ボット CRD は、Citrix ingress controller GitHub リポジトリ bot-crd.yamlで入手できます。Bot CRDは、Citrix ADCでボット管理ポリシーを定義するために必要なさまざまなオプションの属性を提供します。

ボット CRD 属性

次の表に、Bot CRD で提供されるさまざまな属性の一覧を示します。

CRD 属性 説明
security_checks 着信トラフィックに適用されるセキュリティー検査のリスト。
allow_list 許可された IP、サブネット、およびポリシー式のリスト。
block_list 許可されない IP、サブネット、およびポリシー式のリスト。
device_fingerprint JavaScript を挿入し、クライアントブラウザとデバイスパラメータを収集します。
trap 非表示の URL をレスポンスに挿入します。
tps 設定されたトランザクションの変化率に基づいて、リクエストに異常なスパイクを引き起こすボットを防ぎます。
reputation 設定されたレピュテーションカテゴリに基づいて、悪い IP へのアクセスを防止します。
ratelimit レート制限に基づいてボットを阻止します。
redirect_url 保護でブロックが有効になっている場合、URL をリダイレクトします。
servicenames ボットポリシーが適用されるサービスの名前。
signatures 外部ボットシグネチャファイルの場所。
target ボットが検査するトラフィックを決定します。対象トラフィックを指定しない場合、デフォルトですべてのトラフィックが検査されます。
paths 検査する HTTP URL のリスト。
method 検査する HTTP メソッドのリスト。
header 検査する HTTP ヘッダーのリスト。

ボット CRD をデプロイする

Bot CRD をデプロイするには、次の手順を実行します。

  1. bot-crd.yamlをダウンロードします。
  2. 以下のコマンドを使用して Bot CRD をデプロイします。

kubectl create -f bot-crd.yaml

たとえば、

root@master:~# kubectl create -f bot-crd.yaml
customresourcedefinition.apiextensions.k8s.io/bots.citrix.com created
<!--NeedCopy-->

Bot 設定の書き方

Citrix が提供するボット CRD を Kubernetes クラスターにデプロイしたら、YAML ファイルでボット管理ポリシー設定を定義できます。YAML ファイルで、kind フィールドに bot を指定します。spec セクションで、ポリシー設定の要件に基づいて Bot CRD 属性を追加します。

YAML ファイルをデプロイした後、Citrix イングレスコントローラーは Ingress Citrix ADC デバイスにボット構成を適用します。

ボットポリシーの設定例をいくつか示します。

既知の IP、サブネット、または ADC ポリシー式を使用して悪意のあるトラフィックをブロックする

Citrix ADCでWebボット管理ポリシーを定義して使用し、ボットが悪意のあるトラフィックをブロックできるようにする場合は、 botblocklist.yaml というYAMLファイルを作成し、適切なCRD属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: botblocklist
spec:
    servicenames:
        - frontend
    security_checks:
        block_list: "ON"
    bindings:
        block_list:
            - subnet:
                value:
                    - 172.16.1.0/12
                    - 172.16.2.0/12
                    - 172.16.3.0/12
                    - 172.16.4.0/12
                action:
                    - "drop"
            - ip:
                value: 10.102.30.40
            - expression:
                value:  http.req.url.contains("/robots.txt")
                action:
                    - "reset"
                    - "log"
<!--NeedCopy-->

ボットのセキュリティチェックなしで既知のトラフィックを許可する**

ステージングトラフィックや信頼できるトラフィックなど、特定のトラフィックのセキュリティチェックを避けたい場合は、セキュリティチェックからそのようなトラフィックを回避できます。botallowlist.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: botallowlist
spec:
    servicenames:
        - frontend
    security_checks:
        allow_list: "ON"
    bindings:
        allow_list:
            - subnet:
                value:
                    - 172.16.1.0/12
                    - 172.16.2.0/12
                    - 172.16.3.0/12
                    - 172.16.4.0/12
                action:
                    - "log"
            - ip:
                value: 10.102.30.40
            - expression:
                value:  http.req.url.contains("index.html")
                action:
                    - "log"
<!--NeedCopy-->

ボットシグネチャを有効にしてボットを検出する

Citrix は、ユーザーエージェントに基づいてボットを検出するために、何千もの組み込みシグネチャを提供しています。Citrix 脅威インテリジェンスチームは、2週間ごとに新しいボットシグネチャの更新とリリースを続けています。最新のボット署名ファイルは、 ボット署名から入手できますbotsignatures.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: botsignatures
spec:
    servicenames:
        - frontend
    redirect_url: "/error_page.html"
    signatures: "http://10.106.102.242/ganeshka/bot_sig.json"
<!--NeedCopy-->

ボットデバイスのフィンガープリントを有効にし、アクションをカスタマイズする

デバイスフィンガープリントでは、クライアントに対する HTML レスポンスに JavaScript スニペットを挿入する必要があります。この JavaScript スニペットは、クライアント上のブラウザによって呼び出されると、ブラウザとクライアントの属性を収集します。そして、その情報を含むPOST要求をCitrix ADCに送信します。これらの属性は、接続がボットから要求されたのか、それとも人間から要求されたのかを判断するために調べられます。botdfp.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: botdfp
spec:
    servicenames:
        - frontend
    redirect_url: "/error_page.html"
    security_checks:
       device_fingerprint:
           action:
               - "log"
               - "drop"
<!--NeedCopy-->

ボット TPS を有効にしてアクションをカスタマイズする

ボット TPS が設定されている場合、リクエストの最大数またはリクエストの増加が設定された時間間隔を超えると、受信トラフィックがボットとして検出されます。 バインディングセクションで位置情報ホスト送信元 IP、および**URL ごとに TPS 制限を設定できます。bottps.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: bottps
spec:
    servicenames:
        - frontend
    redirect_url: "/error_page.html"
    security_checks:
        tps: "ON"
    bindings:
        tps:
            geolocation:
                threshold: 101
                percentage: 100
            host:
                threshold: 10
                percentage: 100
                action:
                    - "log"
                    - "mitigation"
<!--NeedCopy-->

トラップ挿入保護を有効にしてアクションをカスタマイズする

クライアント応答でトラップ URL をアドバタイズすることで、自動ボットを検出してブロックします。この URL は人間の場合、クライアントからは見えず、アクセスできません。この検出方法は、自動化されたボットからの攻撃をブロックするのに効果的です。URL 応答へのトラップ URL の挿入はランダムに行われます。トラップバインディングを設定することで、特定の URL 応答に対してトラップ URL の挿入を強制できます。trapinsertion.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: trapinsertion
spec:
    servicenames:
        - frontend
    redirect_url: "/error_page.html"
    security_checks:
       trap:
         action:
           - "log"
           - "drop"
    bindings:
      trapinsertion:
        urls:
          - "/index.html"
          - "/submit.php"
          - "/login.html"
<!--NeedCopy-->

IP レピュテーションを有効にして特定のカテゴリのリクエストを拒否する

次に、ユーザー環境に適した特定の脅威カテゴリの IP レピュテーションのみを有効にするボット CRD の設定例を示します。botiprepcategory.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
    name: botiprepcategory
spec:
    servicenames:
        - frontend
    redirect_url: "/error_page.html"
    security_checks:
       reputation: "ON"
    bindings:
      reputation:
        categories:
            - SPAM_SOURCES:
                action:
                    - "log"
                    - "redirect"
            - MOBILE_THREATS
            - SPAM_SOURCES
<!--NeedCopy-->

レート制限を有効にしてリクエストレートを制御する

URL、Cookie、IP のパラメーターを使用してリクエストレート制限を適用するボット CRD 設定の例を次に示します。botratelimit.yamlという名前の YAMLファイルを作成し、適切な CRD 属性を使用してボットポリシーを次のように定義できます。

apiVersion: citrix.com/v1
kind: bot
metadata:
  name: botratelimit
spec:
  servicenames:
    - frontend
  redirect_url: "/error_page.html"
  security_checks:
    ratelimit: "ON"
  bindings:
    ratelimit:
      - url:
          value: index.html
          rate: 2000
          timeslice: 1000
      - cookie:
          value: citrix_bot_id
          rate: 2000
          timeslice: 1000
      - ip:
          rate: 2000
          timeslice: 1000
          action:
              - "log"
              - "reset"
<!--NeedCopy-->
Citrix ingress controller でボット管理ポリシーを構成する