概要
Access Logも取得可能となります。
ログイン後、Account Management > SIEM Logsから設定します。
以下、各ページの概要です。
Log Configuration
SIEM利用時の接続方法の設定ページ。
ログの収集が可能なサービスは、CloudWAF(Access log/Security log )、Attack Analytics、ABP、ATO、Client Side Protection、
DDoS Protection for Networks/IpsおよびAudit Trail。
Accounts Log Settings
サブアカウント設定時、サブアカウントごとにSIEMの有効/無効を設定。
Websites Log Levels
親アカウント直下にあるサイトのログ設定を管理。サイトごとにDisabled、Security Logs、All Logsの選択が可能。
サブアカウント下のサイトは、サブアカウントのWebsites Log Levelsで設定。
本ページでは、最も利用機会の多いCloudWAFのPullモードでの設定の概要について説明します。
設定方法
Pullモードは、Impervaのクラウドレポジトリにログが集積され、お客様のサーバからのAPIコールでログをダウンロードする方法です。
ログは最大48時間保管(または500MBの上限に達した際は48時間待たず上書き)されます。
動作させるためにはⅠ. CloudWAFコンソールとⅡ. お客様環境双方で設定が必要です。
Ⅰ. CloudWAFコンソール設定
1.コネクションの作成
初回のページアクセス時には、SIEM Logs > Log Configurationページで[Add Connection]をクリックし、
表示されたウィンドウで"Imperva API"をクリックします。
""で、接続名を指定し、[Generate API Keys]でコネクションを設定します。
この際にAPI IDとKeyがウィンドウに表示されますので、Keyを忘れず控えて下さい。
情報を控えたら[Close]でウィンドウを閉じます。
2.コネクションの詳細設定
作成したコネクションの詳細設定を編集します。
[Add Log Type]をクリックすることで収集するログの種類が指定可能です。
ー "Service"では、Imperva APIでログを収集したいサービスを選択します(CloudWAFのみ選択可能)。[Next]で次の設定に移ります。
ー "Default website log level"で、今後新規に追加されるサイトで取得したい、デフォルトのログの種類を設定します。
ー "Format"では、CEF、W3C、LEEFからご希望のログフォーマットを選択してください。
また、Pythonスクリプトを利用してダウンロードする際は、必ずCompress logsオプションを有効にします。
(参考)ログフォーマット例
https://docs.imperva.com/bundle/cloud-application-security/page/more/example-logs.htm
ー "Encryption": イベントはリポジトリ内で共通鍵で暗号化されています(AES128)。
さらにこの鍵を公開鍵で暗号化するオプションが利用できます。
設定には、まずサーバ上で公開鍵・秘密鍵のペアを作成してください。
鍵は2048ビットの鍵長でPEM形式である必要がございます。
# openssl genrsa -out Private.pem 2048
# openssl rsa -in Private.pem -outform PEM -pubout -out Public.pem
コンソールから公開鍵Public.pemをアップロードします。後ほど、サーバに設定するために
秘密鍵Private.pemの拡張子を.keyに変更します。
ー "SIEM Packaged"は、各ベンダのSIEMアプリケーションパッケージです。外部リンクに移動します。
ご入用の際にダウンロードしてください。
全ての項目の内容に問題がないことを確認したら、[Add Log Type]でログタイプを追加します。
3. 各サイトのログレベル設定
SIEM Logs > Websites Log Levelsに移動し、ログを記録したいサイトのログ設定を変更します。
無効・Security Logのみ・Security LogおよびAccess Log全ての3つから選択いただけます。
Ⅱ. お客様環境設定
1. ファイルの取得メーカが公開するGithub*から、Settings.Config、LogsDownloader.py、requirements.txtを取得します。
* メーカGithub: https://github.com/imperva/incapsula-logs-downloader
ー Settings.Config: ログをダウンロードする際の、サーバ側の定義ファイルです。
- APIID : WAF Log SetupページのConnectionセクションのAPI IDに表示された数字を指定します。
- APIKEY : SIEM機能を有効化した際に払い出されたAPIキーを指定します。
- PROCESS_DIR : 取得したCloudWAFのログの保管先を指定します。
- BASEURL : WAF Log SetupページのConnectionセクションのLog Server URIを指定します。
e.g. https://logs1.incapsula.com/1234_1234567/
その他、経由するプロキシやsyslog転送の要否に応じて設定すべき値は以下のドキュメントも参照ください。
(参考)Log Configuration File
https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm
ー LogsDownloader.py: Python3で動作するダウンロードスクリプト。
ー requirements.txt: 動作環境の用意のために必須のモジュールが記載されています。
- certifi==2024.2.2
- charset-normalizer==3.3.2
- idna==3.6
- M2Crypto==0.40.1
- pycryptodome==3.20.0
- requests==2.31.0
- urllib3==2.2.0
次のコマンドで取得可能です。
*お客様環境によっては、ダウンロードのために手動で依存関係を解消する必要があります。
# pip install -r requirements.txt
2. サーバのディレクトリ構造
デフォルト設定に従って環境を用意する場合、以下のディレクトリを作成していただく必要がございます。
お客様環境に併せて変更した場合は、スクリプト実行時のオプションでディレクトリを指定してください。
ー /etc/incapsula/logs/config : 値を設定したSettings.Configを配置します。
ー /etc/incapsula/logs/config/keys/<数字> : 復号化用の秘密鍵Private.keyを配置します。
鍵ペアを更新した場合は、/2/,/3/,...と新たな番号のディレクトリを新規作成し、秘密鍵を再配置します。
ー /var/log/incapsula/logsDownloader/ : システムログの出力先ディレクトリです。
スクリプトの実行
# python3 LogsDownloader.py \
-c path_to_config_folder \
-l path_to_system_logs_folder \
-v system_logs_level
お客様環境に合わせてディレクトリ構造を変更している場合は、各オプションで正しいディレクトリを指定します。
以下は各オプションの説明です。
-c: デフォルトの/etc/incapsula/logs/configに相当するディレクトリを指定します。
-l: デフォルトの/var/log/incapsula/logsDownloader/に相当するディレクトリを指定します。
-v: システムログレベルを指定します。デフォルトはinfoです。その他にはdebugまたはerrorが指定可能です。
エラーが発生したら
・Error -3
- エラーログ例:
zlib.error: Error -3 while decompressing data: incorrect header check
- 原因:
error -3はスクリプトがファイルの解凍に失敗したときに表示されます。
多くの場合、すでに解凍されているファイルを解凍しようとした際に発生します。
- 対処法:
SIEM Logs > WAF Log Setupで圧縮設定が有効になっているかご確認ください。
・404エラー
- エラーログ例:
2023-09-11 00:17:04,792 ERROR Could not find file
https://logs1.incapsula.com/1234_123456/1234_5555555.log. Response code is 404
- 原因:
スクリプトがログをダウンロードする際、
①まずサーバでlogs.indexというインデックスファイルをダウンロードし、
②次にインデックスに記載されたログファイルを順次ダウンロードします。
通常、Pythonスクリプトは連続してファイルをダウンロードしますが、
logs.indexファイルにファイル名が記録されていた場合でも、
遅延によりImperva Cloudストレージにアップロードされていない場合がございます。
そのため、もしダウンロードする時にファイルがまだImperva Cloudストレージにアップロードされていない時は、
Pythonスクリプトは404で応答します。
その他、ログファイル番号が連続しない場合もございます。
- 対処法:
このような事象が発生した際はLastKnownDownloadedFields.txtを編集するか、再起動してご対応ください。
(参考)技術コミュニティ ディスカッション
https://github.com/imperva/incapsula-logs-downloader/issues/46
レファレンス
SIEM設定:
https://docs.imperva.com/bundle/cloud-application-security/page/settings/log-integration.htm
Connector設定:
https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm
メーカGithub:
https://github.com/imperva/incapsula-logs-downloader
更新日:2024年8月29日