ヘッダーをスキップ
Oracle® Audit Vault and Database Firewall管理者ガイド
リリース12.1.1
B71711-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 BIG-IP ASMとの統合の構成

この章の内容は、次のとおりです。

Oracle AVDFとBIG-IP ASMの統合の概要

この章では、Audit Vault and Database Firewall (Oracle AVDF)、BIG-IP Application Security Manager (ASM)、WebクライアントおよびWebアプリケーション・サーバーの統合について説明し、統合による動作とその主な利点についても説明します。

F5 Networks社のBIG-IP Application Security Manager (ASM)は高度なWebアプリケーション・ファイアウォール(WAF)で、Webベースの様々な攻撃に対してネットワークのエッジで包括的な保護を実現します。

図8-1に示すように、BIG-IP ASMはWebクライアントとWebアプリケーション・サーバーの間にデプロイされます。これによって、各HTTPおよびHTTPSリクエストが分析され、攻撃がWebアプリケーション・サーバーに達する前に潜在的な攻撃をブロックします。BIG-IP ASMは様々なBIG-IPプラットフォームにインストールできます(「Oracle AVDFとBIG-IP ASMの統合のデプロイ」を参照)。

図8-1 Oracle AVDFとF5 BIG-IP ASMのデータ・フロー・ユニット

図8-1の説明が続きます
「図8-1 Oracle AVDFとF5 BIG-IP ASMのデータ・フロー・ユニット」の説明

Database FirewallはWebアプリケーション・サーバーとデータベースの間にデプロイされます。これによって、データベースに送信されたSQL文の目的が分析され、ネットワーク内外からの攻撃に対してデータベースが保護されます。セキュリティ上の既知の脅威の構文を認識するだけでなく、それまで認知されていなかった攻撃(組織を標的にした攻撃を含む)もブロックします。

BIG-IP ASMとDatabase Firewallの両方を含むデプロイメントによって、両方の製品が持つセキュリティ機能の利点をすべて利用でき、2つのシステムが連携して機能して比類なきレベルのデータ・セキュリティを実現します。

この統合の主な利点は、BIG-IP ASMからDatabase Firewallに、データベースに送信されたSQL文に関する追加情報(SQL文を送信したWebユーザーの名前やIPアドレスを含む)を渡すことができることです。この情報は、Webアプリケーション・サーバーで生成されたSQL文からは通常取得できません。

BIG-IP ASMおよびDatabase Firewallシステム自体から取得された情報は、Database Firewallによって該当する文の属性としてログに記録されます。データがログに記録されるとトラフィック・ログのビューに取り込むことができるため、あらゆる攻撃のソースと特性を完全に視覚化できます。

主な利点の概要

この統合の主な利点は、次のとおりです。

  • 2つのシステムが連携することによってセキュリティが向上します。

  • Oracle AVDFでは、Webアプリケーション層からのSQL文の作成元と内容に関する詳細情報を提供できます。

  • Oracle AVDFは、BIG-IP ASMで生成されたデータのログ・ストアとして機能できます。

  • ネットワークのエッジ、およびデータベース周りにおいて階層化されたセキュリティを提供できます。

統合による動作

統合によって、syslogメッセージ・システムを使用してBIG-IP ASMからアラートを配信できます。標準のBIG-IP ASM syslogメッセージは、ASMロギング・プロファイルを使用して有効になり、セキュア・ターゲット・クライアントのIPアドレス、セッションのその他の属性など各アラートの詳細を提供します。

BIG-IP ASM iRule(tm)が設定されるため、ユーザーのログイン中にsyslogメッセージが生成され、Webユーザー名が特定されます。Oracle AVDFにはサンプルのiRuleが用意されていますが、Webアプリケーションの特定のログイン手順に一致するようにカスタマイズする必要があります。「BIG-IP ASM iRuleの開発」を参照してください。

デプロイ手順中に、BIG-IP ASMはすべてのsyslogメッセージをOracle AVDFにルーティングするように設定されます。Oracle AVDFでは、関連する各BIG-IP ASM syslogメッセージと、Webアプリケーション・サーバーで生成された該当するSQL文が照合されます。一致が検出されると、BIG-IP ASM syslogメッセージに含まれている情報が抽出され、ログに記録されたSQL文の属性としてその情報が格納されます。一致が検出されなかった場合は、別のレコードがトラフィック・ログに追加され、syslogメッセージに含まれる属性が格納されます。

このソフトウェアでは、Cookieを使用してSQL文とWebユーザーが照合されます。ユーザーがログインすると、BIG-IP ASMでは一意のCookieがそのユーザーに割り当てられます(通常、Cookieの名前は「TS」で始まります)。そのCookieとユーザー名は、ASM上のiRuleで生成されたsyslogメッセージによってOracle AVDFに送信されます。ユーザーのアクションによってアラートまたは他のイベントが発生した場合、BIG-IP ASMでは同じ識別Cookieを含む追加のsyslogメッセージが生成され、ソフトウェアでそのsyslogメッセージと特定のユーザーを照合できます。Oracle AVDFシステムでもsyslogメッセージとSQL文を照合できるため、潜在的な脅威に関連するSQL文を特定のWebユーザーに結び付けることができます。

Oracle AVDFでは、BIG-IP ASMから受信したすべてのsyslogメッセージを外部のsyslogサーバーに自動的にリレーできます(最大サイズは各2KB)。必要な場合は、Oracle AVDF自体で生成されたsyslogメッセージも同じ宛先にルーティングできます。Oracle AVDFがBIG-IP ASM syslogのトラフィックを変更することはありません。

Oracle AVDFではBIG-IP ASMとの接続の状態を監視し、接続が検出されない場合または接続が失われた場合は、syslogメッセージが2分ごとに生成されます。

Oracle AVDFとBIG-IP ASMの統合のデプロイ

この項の内容は次のとおりです。

デプロイメントの概要

Oracle AVDFを使用してBIG-IP ASMをデプロイするには、両方のシステムで簡単な設定をいくつか構成し、Webアプリケーションの構成に一致するように、iRuleをカスタマイズする必要があります。

システム要件

統合には次の製品が必要です。

  • Oracle AVDF

  • F5 BIG-IP ASMバージョン9.4.5、バージョン10またはバージョン11。FirePass®、BIG-IP LTM(tm)、BIG-IP GTM(tm)、WebAccelerator(tm)、WANJet®など他のF5製品は、現在サポートされていません。

F5のWebサイト(http://www.f5.com/)でBIG-IP ASMの最新情報を閲覧してください。

F5と連携して機能するためのOracle AVDFの構成

Oracle AVDFは、セキュア・ターゲットの強制ポイントを構成した後にのみ、F5 BIG-IP ASMと連携して動作するように構成できます。

セキュア・ターゲットのF5 BIG-IP ASMと連携して動作するようにOracle AVDFを構成する手順は、次のとおりです。

  1. 強制ポイントがこのセキュア・ターゲットに定義されていることを確認します。

    「強制ポイントの構成」を参照してください。

  2. Audit Vault Serverコンソールに管理者としてログインします。

  3. 「セキュア・ターゲット」タブをクリックした後、「監視」メニューから「強制ポイント」をクリックします。

  4. このセキュア・ターゲットを監視する強制ポイントの名前をクリックします。

  5. 「詳細」をクリックします。

  6. オプションを設定します。

    • システム・アドレス: この読取り専用情報は、この強制ポイントに関連付けられたDatabase FirewallのIPアドレスを示します。BIG-IP ASMは、syslogメッセージをこのアドレスとポートに送信する必要があります。

    • WAFアドレス: 単語DISABLEDを削除し、syslogメッセージを生成してDatabase Firewallに送信する各BIG-IP ASMシステムのIPアドレスを入力します。各IPアドレスは空白で区切ります。

    • WAFアラート転送の無効化: Database Firewallでsyslogメッセージの転送を停止する場合は、このチェック・ボックスを選択します。アラート転送の現在のステータスがこのオプションの下に表示されます。

    • 宛先ホストおよび宛先ポート: Database Firewallから転送されたBIG-IP ASM syslogメッセージを受信するsyslogサーバーのIPアドレスとポート番号を指定します。Database Firewallは、これらのメッセージを変更せずにリレーします。

      このIPアドレスは、Database Firewall自体で生成されるsyslogメッセージのsyslog宛先と同じである必要はありません。

    • WAFログ・データによるレポートの拡張: syslogメッセージから取得したBIG-IP ASM属性(IPアドレス、Webアプリケーション・ユーザーの名前など)をDatabase Firewallで記録できるようにする場合は、このチェック・ボックスを選択します。このチェック・ボックスを選択しない場合、Database FirewallはF5とDatabase Firewall SQLのメッセージの照合を試みません。

    • Cookie接頭辞: F5では、Cookieに標準の接頭辞を付けて、提供するページに追加します。必要に応じて、このフィールドでこれらのCookieの接頭辞を変更します。Database Firewallでは、この接頭辞を使用してCookieを検索します。

    • Session Idle Timeout: このフィールドに指定した時間の長さだけユーザーのCookieが保存されます。このため、ここで指定した時間が経過すると、同じCookieを別のユーザーが使用できるようになります。

    • Exclude Addresses: レポート作成の目的で無視する、Webアプリケーション・サーバーまたは他のSQL生成ソースのIPアドレスのリストを指定できます。たとえば、内部Webアプリケーション・サーバーのIPアドレスを追加できます。

BIG-IP ASMの構成

この項では、ロギング・プロファイルの作成方法とポリシー設定の記述方法について説明します。

ロギング・プロファイル

BIG-IP ASM syslogメッセージをOracle AVDFに送信するように、Webアプリケーションのロギング・プロファイルを構成します。サーバーIPとサーバー・ポート(たとえば、5514)を使用して、Database FirewallのIPアドレス(ファイアウォールの管理コンソールへの接続に使用するIPアドレスと同じ)を指定します。プロトコルは「TCP」を選択します。

「Selected Items」には、次の属性が含まれている必要があります。

  • violations

  • unit_hostname

  • management_ip_address

  • policy_name

  • policy_apply_date

  • x_forwarded_for_header_value

  • support_id

  • request_blocked (F5バージョン9の場合)またはrequest_status (F5バージョン10およびバージョン11の場合)

  • response_code

  • method

  • protocol

  • uri

  • query_string

  • ip (F5バージョン9の場合)またはip_client (F5バージョン10およびバージョン11の場合)

  • web_application_name

  • request


注意:

属性は、ここに示した順序で「Selected Items」ボックスに表示される必要があります。

ポリシー設定

ポリシー設定によって、必要なイベントを有効にしてsyslogを送信します(この方法が不明な場合は、ASMのヘルプを参照してください)。

Oracle AVDFでは、次のイベントが認識されます。

  • Evasion technique detected

  • Request length exceeds defined buffer size

  • Illegal dynamic parameter value

  • Illegal meta character in header

  • Illegal meta character in parameter value

  • Illegal parameter data type

  • Illegal parameter numeric value

  • Illegal parameter value length

  • Illegal query string or POST data

  • Illegal static parameter value

  • Parameter value does not comply with regular expression

  • Attack signature detected

  • Illegal HTTP status in response

BIG-IP ASM iRuleの開発

オプションで、iRuleを使用すると、ログイン・ページを監視し、ユーザーがWebアプリケーションにログインするたびにsyslogメッセージを生成できます。syslogメッセージには、Webアプリケーション・ユーザーのユーザー名、およびそのユーザーに関連付けられたCookieが含まれます。メッセージはDatabase Firewallにルーティングされ、Webアプリケーション・サーバーで生成されたSQL文に対してユーザー名がログに記録されます。

Oracle AVDFに用意されているサンプルのiRuleには、syslogメッセージの必要な形式が含まれていますが、使用するWebアプリケーションの特定のログイン要件に合せてカスタマイズする必要があります。

# F5 BIG-IP example iRule
# Description: Capture username and cookies from user login to web application
#
# Global variable definitions and other initialisation logic goes here
when RULE_INIT {
        ### Customise this to suit your application
        # The page that user logins from
        set ::login_page "/login.asp"
        # The name of the field holding the user name
        set ::login_parameter_name "Uname"
        # The method of authentiaction which will be sent to  Oracle Database Firewall
        set ::auth_method "webforms"
        # HTTP protocol methods that is used by the login form
        set ::login_method "POST"
        ### Don't change these
        # Limit the length of the HTTP request for safety
        set ::max_header_content_length 5242880
        # Log iRule trace messages to /var/log/ltm? 1=yes, 0=no
        # Must be set to 0 for production systems
        set ::payload_debug 0
}
# HTTP request received, check if it's a login request and start assembling the
# data
when HTTP_REQUEST {
        # Log the debug message if trace is enabled
        if {$::payload_debug}{log local3. "[IP::client_addr]:[TCP::client_port]:
                 New HTTP
        [HTTP::method] request to [HTTP::host][HTTP::uri]"}
        # Reset cookies to empty, later used as an indicator of the fact that
        # login HTTP
        request has been received
        set cookie_all ""
        # If the request is to the login page populate cookie_all variable with
        # all the cookies received
        if {[HTTP::path] starts_with $::login_page and [HTTP::method] eq
                $::login_method}
        {
                set cookie_name [HTTP::cookie names]
        for {set c 0}{$c < [HTTP::cookie count]}{incr c}{
                set cookie_string [split [lindex $cookie_name $c] " "]
                set cookie_list $cookie_string=[HTTP::cookie [lindex
                $cookie_string 0]]
                append cookie_all "," $cookie_list
        }
        # Log the debug message if trace is enabled
        if {$::payload_debug}{log local3. "[IP::client_addr]:[TCP::client_port]:

        Matched path and method check"}
        # Validate the Content-Length value and set the content_length variable
        if {[HTTP::header value Content-Length] > $::max_header_content_length }
            {set content_length $::max_header_content_length
        } else {
        set content_length [HTTP::header value Content-Length]
        }
        # Get the payload data
        if {$content_length > 0}{
        HTTP::collect $content_length
        # Log the debug message if trace is enabled
        if {$::payload_debug}{log local3.
        "[IP::client_addr]:[TCP::client_port]: Collecting $content_length
        bytes"}
}
       }
}
# Got the data, parse them and generate the syslog message
when HTTP_REQUEST_DATA {
        # If cookies are present this is a login request, get the user name
        if {$cookie_all != "" } {
                # Log the debug message if trace is enabled
                if {$::payload_debug}{log local3. "[IP::client_addr]:
                        [TCP::client_port]:
        Collected request data: [HTTP::payload]"}
        # Reset the error flag to 0
        set uname_logged 0
        # Find the $::login_parameter_name among the parameters in the request and
        extrat its value
        set param_value_pairs [split [HTTP::payload] "&"]
        for {set i 0} {$i < [llength $param_value_pairs]} {incr i} {
                set params [split [lindex $param_value_pairs $i] "="]
                if { [lindex $params 0] equals $::login_parameter_name } {
                        # User name was found, generate the syslog message
                        # which includes IP, port, all the cookies, user name and
                        # the auth_method string
                        set username [lindex $params 1]
                        log local3. "DBFIREWALL:CLIENT=[IP::client_
                             addr]:[TCP::client_port]$cookie_all,
                             USERNAME=$username,AUTHMETHOD=$::auth_method"
                        # Set the flag so not to trigger the error reporting log
                        message below
                        set uname_logged 1
                        break
                }
        }
        # If user name has not been found in parameters log an error
        if {$uname_logged == 0 } {
                log local0. "ERROR: iRule failed to extract user name from
                page $login_page with parameter $login_parameter_name"
       }
}
}

syslogメッセージの必要な形式

カスタムiRuleで生成されるsyslogメッセージの必要な形式は、次のとおりです。

Rule [iRuleName] HTTP_REQUEST_DATA: 
DBFIREWALL:CLIENT=[ClientIPAddress]:[ClientPort],[Cookies],
USERNAME=[Name],AUTHMETHOD=[AuthMethod]

詳細は、次のとおりです。

  • [iRuleName]は、iRuleの名前です。

  • [ClientIPAddress]は、Webクライアントのセキュア・ターゲットIPアドレスです。

  • [ClientPort]は、Webクライアントのセキュア・ターゲット・ポート番号です。

  • [Cookies]は、BIG-IP ASM HTTPオブジェクトから使用可能なCookieのリストです。

  • [Name]は、ユーザー名です。

  • [AuthMethod]は、F5 WebサーバーとそのWebクライアントの間で使用される認証の方法で、BIG-IP ASMで設定されます。Oracle AVDFでは、使用される認証方法をレポートするとき以外はこの情報を使用しません。

    次に例を示します。

    Rule capture_login_rule HTTP_REQUEST_DATA:
    DBFIREWALL:CLIENT=10.190.0.1:443,ASPSESSIONIDSASSBSCD=1234,TS10da7b=23545,
      USERNAME=FredBloggs,AUTHMETHOD=webforms
    

syslog-ng.confの構成

iRule syslogメッセージがOracle AVDFに転送されるようにするには、BIG-IPハードウェア・プラットフォームにログインし、次のBIG-IP ASMコマンドを実行して/etc/syslog-ng /syslog-ng.confを変更する必要があります(システムの再起動後に変更が保持されないため、ファイルを直接変更しないでください)。

bigpipe syslog include "destination d_dbfw { tcp(\"dbfw_ip_address\" port(dbfw_port));};log { source(local); filter(f_local3); destination(d_dbfw);};"

dbfw_ip_addressdbfw_portは、Database FirewallのIPアドレスとポート番号です(手順6で指定)。次に例を示します。

bigpipe syslog include "destination d_dbfw { tcp(\"192.168.0.181\" port(5514));};log { source(local); filter(f_local3); destination(d_dbfw);};"

syslog宛先名(d_dbfw)の2つのインスタンスを変更する必要があるのは、万一宛先名がすでに使用されている場合のみです。

Oracle AVDFレポートでのF5データの表示

Audit Vault Serverコンソールからは、様々なレポートを生成できます。これらのレポートは、『Oracle Audit Vault and Database Firewall監査者ガイド』のDatabase FirewallのF5レポートに関する表を参照してください。