当記事では、A10ネットワークス社 Thunder シリーズを、フォワードプロキシ(Forward Proxy/Explicit Proxy)として設定している環境においてアクセスログをSYSLOGを用いて転送し収集する方法について記載します。
目次
対象バージョン
ACOS 4.1.4
※当記事は、VMware ESXi 7上に構築したvThunderによる検証結果をもとに執筆しております。
前提条件
ManagementインターフェースにIPアドレスが設定されており、WebベースのGUIで操作できることとします。
設定するSNMPのバージョンはv2cのみとします。
GUIの基本的な操作(設定のsave等)については記載を割愛しております。
構成の概要
当記事でのA10 Thunderの構成は以下の通りです。
ワンアーム構成のFoward Proxyとして設定しています。
HTTP Forward Proxyの設定
詳細についてはA10ネットワーク社のマニュアルをご参照いただくか購入元の販売店様へお問い合わせください。
今回は、単純なフォワードプロキシとして以下のような設定をしています。
GUIでの設定手順はおおよそ以下のようなものとなります。
- [Security]-[Forward Proxy]にて新規Forward Proxyを作成します。
- サービス用のバーチャルIPとポートを設定します。([ADC]->[SLB]の[Virtual Server]が追加されます。)
- 「Service Group」を作成します。インターネット向けのForward Proxyとする場合は、ダミーでデフォルトゲートウェイ等のIPアドレスをメンバーに登録し、ヘルスチェックを無効("Disable Health Check"を有効)にします。([ADC]->[SLB]の[Servers]が追加されます。)
- 「Policy Template」を作成します。
今回は最低限の設定のため以下のように設定しました。
すべてのクライアントからのリクエストを特に制限なくインターネットに転送します。
【Action Policies】
Action(Type): Forward Request to Internet
Service Group : 「3」で作成したもの。
SNAT Pool : 新規に作成
Logging : 有効 ※当記事ではこちらの機能により出力されるログを対象としています。
【Source Policies】
Match Type : Any
Action : 【Action Policies】で作成したポリシー - 「Dynamic Service」を作成します。
今回は、8.8.8.8と8.8.4.4をDNSサーバとして設定しました。
CLIでの設定は以下の通りです。
※各設定の命名が少しわかり難くなっておりますがご容赦ください。
(前略) ! ip nat pool test-snat2 192.168.128.50 192.168.128.50 netmask /32 ! (中略) ! slb server ingernet-gateway 192.168.128.254 health-check-disable user-tag Security port 80 tcp health-check-disable conn-limit 8000000 port 443 tcp health-check-disable conn-limit 8000000 ! slb service-group test-sg tcp health-check-disable user-tag Security member ingernet-gateway 80 member ingernet-gateway 443 ! slb template policy test-policy user-tag Security forward-policy action gointernet forward-to-internet test-sg snat test-snat2 log source test match-any destination any action gointernet ! slb template dynamic-service test dns server 8.8.8.8 dns server 8.8.4.4 user-tag Security ! slb virtual-server test-fps 192.168.128.11 user-tag Security port 8080 http template policy test-policy aflex test-aflex service-group test-sg template dynamic-service test user-tag Security ! (後略)
SYSLOGの設定
SYSLOGの設定では「SYSLOGサーバの設定」「ログレベルの設定」を行います。
SYSLOGサーバの設定
ログの転送先となるSYSLOGサーバを設定します。
[System]->[Settings]の[Logging]タブから「Logging Host」を設定します。
CLIでは以下のような設定となります。
logging host 192.168.123.81
ログレベルの設定
ログの出力レベルは、[System]->[Settings]の[Logging]タブの「Logging」にて設定します。
※当記事で対象とするアクセスログをSYSLOGサーバへ転送するには"Information"に設定する必要があります。
CLIでは以下のような設定となります。
logging syslog information
A10 Thunderから出力されるHTTPログの種類
少し複雑ですが、A10 Thunderでは複数のログの出力設定があり、送信元のインターフェースもデータインターフェース、Managementインターフェース等違いがあります。
HTTP Log Message
当記事で取り扱うログはこちらです。
Policy TemplateのAction PolicyでLoggingを有効化することで出力されます。
データインターフェース、Managementインターフェース両方から送信可能です。
Managementインターフェースから送信するには、Loggingのレベルを"Information"に設定する必要があります。
データインターフェースから送信する場合、ログに日付情報などが含まれません。
※なお、データインターフェースからの送信を停止することはできないようです。
当社LogStare Reporter/LogStare Quintで解析、レポート化するには、ログに日付情報が含まれている必要があるため、当記事では、Loggingレベルを下げて、Managementインターフェース経由でログを転送する必要があります。
※LogStare Collectorでの収集のみの場合は、日付情報は不要です。(SYLOG受信日時を記録します。)
(参考)送信元インターフェースによるログの違い
-- Managementインターフェース -- <134>Aug 19 22:04:26 vThunder a10logd: [ACOS]<6> Proxy CONNECT[internet- (test priority#0)]:xxx.co.jp:443 url xxx.co.jp:443 client 192.168.126.1:56708, snat 192.168.128.50:3044 server x.x.x.x:443 out-bytes:227 -- データインターフェース -- <134> Proxy CONNECT[internet- (test priority#0)]:xxx.co.jp:443 url xxx.co.jp:443 client 192.168.126.1:58559, snat 192.168.128.50:3003 server x.x.x.x:443 out-bytes:217
Web Logging
こちらは、データインターフェースからのみ出力されます。
なお、SSL/TLS復号化を行っていない場合、SSL/TLS通信のログは出力されないようでした。
設定方法については、少々複雑ですが、以下のような設定となります。
- [ADC]->[SLB]の[Service Groups]で、転送先のSYSLOGサーバをサービスグループとして追加します。
- [ADC]->[Template]の[General]で、「Logging」テンプレートを作成します。
ここで、「Service Group」に、「1」で作成したSYSLOGサーバを設定します。
また、「Format」を指定すると詳しくカスタマイズすることも可能です。詳細はマニュアルをご参照ください。
※Formatを空白とした場合は、標準の形式となります。標準フォーマットのログ例<6> 192.168.126.1 - - Thu Aug 19 20:41:10 2021 "POST http://xxx.xxx.com/ HTTP/1.1" 471 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0" test-fps:8080
フォーマットの指定例
%{%Y-%m-%d %H:%M:%S}t %a %u %A %p %r %m %U %q %s "%{USER-AGENT}i" "%{REFERER}i" %H %v %b
上記カスタムフォーマットを指定した場合のログ出力例
2021-08-19 20:50:14 192.168.126.1 - 192.168.128.11 8080 ingernet-gateway GET http://xxx.xxx.com/test.html 200 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0" "-" HTTP/1.1 test-fps 8
- [ADC]->[Template]の[L7 Protocols]で「HTTP」テンプレートを作成します。
「Logging Template」に「2」で作成したテンプレートを指定します。 - [ADC]->[SLB]の[Virtual Servers]で、HTTP Proxy用のVirtual ServerをEditします。
- 「Virtual Port」の設定をEditし、「Template HTTP」に、「3」で作ったテンプレートを適用します。
Web Logging関連のCLIでの設定は以下の通りです。
(前略) ! slb server syslog-sv 192.168.123.81 port 514 udp ! (中略) ! slb service-group syslog-service-group udp health-check-disable member syslog-sv 514 ! (中略) ! slb template logging logging-syslog format %{%Y-%m-%d %H:%M:%S}t %a %u %A %p %r %m %U %q %s "%{USER-AGENT}i" "%{REFERER}i" %H %v %b service-group syslog-service-group ! slb template http http-template template logging logging-syslog ! (中略) slb virtual-server test-fps 192.168.128.11 user-tag Security port 8080 http template policy test-policy aflex test-aflex service-group test-sg template dynamic-service test template http http-template #当記事「HTTP Forward Proxyの設定」記載の設定から追加 user-tag Security !
aFleX スクリプト
A10 ThunderシリーズはaFleXというスクリプト言語を備えており、動作を柔軟にカスタマイズできます。
aFleXスクリプトは、[ADC]->[aFleX]でスクリプトを作成し、[ADC]->[SLB]の[Virtual Servers]で、HTTP Proxy用のVirtual Serverの「Virtual Port」の設定内のAdvanced Fieldsで指定します。
詳細については当記事では割愛させていただきますが、aFleXスクリプトの「log」コマンドを利用してログを生成することが可能です。
aFleXのログは、データインターフェース、Managementインターフェース両方から送信可能です。
Managementインターフェースから送信するには、Loggingのレベルを"Information"に設定する必要があります。
※なお、データインターフェースからの送信を停止することはできないようです。
※HTTP Log Messaageと同様にデータインターフェースから送信される場合は、ログに日付情報が含まれませんが、aFleXスクリプト内で「$timestamp」等を用いてログメッセージに日付を含ませることが可能です。
ログフォーマット
前項で紹介した「HTTP Log Message」について、詳細にご紹介します。
ログは以下の3つのアクションごとにフォーマットが決まっています。
アクションについては、冒頭でご説明した「Policy Template」のアクションに対応しています。
- Drop
- Forward to service-group
- Forward to internet
インターネットに転送された場合の実際のログ例は以下の通りです。
Aug 13 18:10:13 vThunder a10logd: [ACOS]<6> Proxy GET[internet- (test priority#0)]:xxx.xxx.com url http://xxx.xxx.com/test.html?test client 192.168.126.1:61210, snat 192.168.128.50:2304 server x.x.x.x:80 out-bytes:343
それぞれ以下のような意味合いとなります。(詳細およびその他アクションのログフォーマットはマニュアルをご参照ください。)
メソッド(GET/POST/CONNECTなど)、アクション(drop-/server-/select-server-/internet-のいずれか)、ルール名、プライオリティ、宛先ホスト、URL、クライアントのIPアドレス/ポート、送信元NATアドレス/ポート
LogStare Collectorでの収集
上記で設定したSYSLOGは当社LogStare Collectorでも受信することが可能です。
以下の記事をご参照ください。
- syslogにて転送されたメッセージは「SYSLOG収集」にてLSCで受信します。「SYSLOG収集」につきましては、以下の記事をご参照ください。
SYSLOG収集 - 「SYSLOG収集」にて利用されるポート番号はデフォルトでtcp/udp共に514となっています。環境設定より「SYSLOG収集」にて利用されるポート番号を変更することで514以外のポートで「SYSLOG収集」が可能となります。環境設定につきましては、以下の記事をご参照ください。
LogStare Collector における環境設定について
LogStare Reporter / LogStare Quintでのレポート例
当社のLogStare ReporterおよびLogStare QuintはA10 Thunderのアクセスログの可視化に対応しています。
※当記事で紹介した「HTTP Log Message」形式のログを対象としています。
※「LogStare Reporter / LogStare Quint」につきまして詳しくはラインアップをご覧ください。
クラウド型だから必要な機能だけ契約できるLogStareの製品ラインアップ
以下はレポートの一例です。
PDFレポート
最後に、これらのレポートは、日次、週次、月次でメールによるPDF配信も可能です。
A10 Thunderシリーズは、設定がとても柔軟でたくさんのことができます。一部のログのみのご紹介でしたが、ご活用いただけますと幸いです。
以上です。
※LogStare Collectorにつきまして詳細はこちらをご覧ください
LogStare Collector(ログステアコレクター)システム監視とログ管理を併せ持つセキュリティ運用ソフトウェア
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。