1. 初めに
2022年3月8日のrelease notesによると、HTTP requestやFirewall eventをIBM Cloud Log Analysis(旧称: IBM Log Analysis with LogDNA)にLogPushしてリアルタイム表示をしたりイベント通知することが可能になったようです。この記事ではWAFイベントがLog Analysisに送付されることを確認してみます。
https://cloud.ibm.com/docs/cis?topic=cis-release-notes&interface=ui&locale=en
https://cloud.ibm.com/docs/cis?topic=cis-logpush&interface=cli&locale=en
https://cloud.ibm.com/docs/cis?topic=cis-cli-plugin-cis-cli#log-push-cli-ref&locale=en
2. 前提条件
- CISのEnterprise planを利用していること(そもそもLogPush自体がEnterprise planでのみ利用可能)。
- CISでドメイン登録・WAFの設定がされていること。
- IBM Cloud Log Analysisを利用していること。
3. 設定方法
3.1. CISにおけるDOMAIN_IDの取得
$ ibmcloud cis instances
Retrieving service instances for service 'internet-svcs' ...
OK
Name ID Location State Service Name
CIS-Enterprise-Usage1 crn:v1:bluemix:public:internet-svcs:global:a/039dbe6794084c7cb514a276dd2345da:cf4d8b04-b49e-4bf0-a99d-9303bba2cd90:: global active internet-svcs
$ ibmcloud cis instance-set CIS-Enterprise-Usage1
Setting context service instance to 'CIS-Enterprise-Usage1' ...
OK
Context service instance set succeeded.
$ ibmcloud cis domains
Listing domains for service instance 'CIS-Enterprise-Usage1' ...
OK
ID Name Status Paused Type
a4135402d38fff24e32ef13c82c1ab4a xxxxxx.tk active false full
ここでa4135402d38fff24e32ef13c82c1ab4a
が今回の対象のドメインIDである。
3.2. Log AnalysisのLog転送先URLの確認
Tokyo regionのLog AnalysisのURLは以下になる。
https://logs.jp-tok.logging.cloud.ibm.com
(参考)
https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-endpoints&locale=en
3.3 Log AnalysisのIngestion Keyの確認
Organization -> API Keys -> Ingestion Keysにて登録及び取得。
4. 設定
注意点
- hostnameは、「一連のイベントをLog Analysisにどのようなhost名で登録するか」、を指定する。よって、必ずしもCIS上のFQDNなどと合致する必要はない。
- apikeyは、IBM CloudのAPI Keyではなく、LogDNAのIngestion Key。
-
--name
はCIS上で管理されるLogPushジョブの名称。 -
--fields
は全部の情報を送信するならば、all
を指定する。 -
--dataset
のデフォルトはhttp_requests
なので、WAF Eventを取得したい場合はfirewall_events
を指定する。 - Logpushの頻度を上げるためには、
--frequency high
を利用する。
ibmcloud cis logpush-job-create a4135402d38fff24e32ef13c82c1ab4a --destination 'https://logs.jp-tok.logging.cloud.ibm.com/logs/ingest?hostname=cisibm-waflog&apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxf765' --name waflogpush1 --fields all --dataset firewall_events --frequency high --enable true
Creating logpush job in domain 'a4135402d38fff24e32ef13c82c1ab4a' ...
OK
Dataset firewall_events
Enabled true
Name waflogpush1
ID 69696
Fields ClientRequestQuery,OriginResponseStatus,RuleID,ClientIPClass,ClientRefererQuery,ClientRefererScheme,ClientRequestProtocol,ClientRefererPath,Metadata,EdgeResponseStatus,ClientASNDescription,ClientIP,ClientRequestPath,OriginatorRayID,ClientASN,ClientRequestMethod,RayID,Source,ClientRefererHost,Datetime,Kind,ClientRequestScheme,Action,ClientRequestHost,ClientCountry,ClientRequestUserAgent,EdgeColoCode,MatchIndex
Timestamp format rfc3339
Destination https://logs.jp-tok.logging.cloud.ibm.com/logs/ingest?hostname=cisibm-waflog&apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxf765
Frequency high
Last complete
Last error
Error message
5. 動作確認
ここの方法にしたがってWAFのイベントを生成する。
Log Analysisで確認すると、