AlgoSec Security Management のログを収集する
このドキュメントでは、Bindplane エージェントを使用して AlgoSec Security Management ログを Google Security Operations に取り込む方法について説明します。パーサーはフィールドを抽出し、CEF 形式と CEF 以外の形式の両方のログを処理します。タイムスタンプ、IP アドレス、イベントの詳細などの一般的なフィールドを解析し、プロダクト(Suite、Firewall Analyzer、FireFlow)とイベント ID に基づいて UDM にマッピングし、適切なメタデータとセキュリティ結果フィールドを設定します。また、ログイン/ログアウト、管理アラート、分析レポートなどの特定のイベントタイプを処理し、関連する詳細情報を抽出して重大度レベルを設定します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Windows 2016 以降、または systemdを使用する Linux ホストを使用していることを確認します。
- プロキシの背後で実行している場合は、ファイアウォール ポートが開いていることを確認します。
- AlgoSec Firewall Analyzer、FireFlow、AppViz への特権アクセス権があることを確認します。
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
- 次のコマンドを実行します。 - msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
- 次のコマンドを実行します。 - sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
- その他のインストール オプションについては、こちらのインストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
- 構成ファイルにアクセスします。 - config.yamlファイルを見つけます。通常、Linux では- /etc/bindplane-agent/ディレクトリに、Windows ではインストール ディレクトリにあります。
- テキスト エディタ(nano、vi、メモ帳など)を使用してファイルを開きます。
 
- config.yamlファイルを次のように編集します。- receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: ALGOSEC raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。 
- <customer_id>は、実際の顧客 ID に置き換えます。
- /path/to/ingestion-authentication-file.jsonの値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
- Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。 - sudo systemctl restart bindplane-agent
- Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。 - net stop BindPlaneAgent && net start BindPlaneAgent
Firewall Analyzer の Syslog を構成する
- SSH を使用して AFA アプライアンスにログインします。
- syslog-ng 構成ディレクトリに移動します。 - cd /etc/syslog-ng
- 既存の構成をバックアップします。 - cp syslog-ng.conf syslog-ng.conf.orig
- syslog-ng 構成ファイルを編集します。 - vi syslog-ng.conf
- 次の行を追加して、リモート syslog サーバーを定義します。 - destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };- <bindplane-server-ip>は、Bindplane エージェントの IP アドレスに置き換えます。
 
- 保存してエディタを終了します。 
- syslog-ng サービスを再起動して変更を適用します。 - service syslog-ng restart
- 省略可: Syslog 構成を確認します。 - [Administration] > [Syslog Server Settings] に移動します。
- [接続をテスト] をクリックします。
 
FireFlow の Syslog を構成する
- FireFlow マシンに root としてログインします。
- 編集する - /etc/syslog.confファイルを開きます。- vi /etc/syslog.conf
- ファイルに - local0.*@<BindplaneAgent>という行を追加します。- <BindplaneAgent>は、Bindplane エージェント サーバーの IP アドレスに置き換えます。
 
AppViz の Syslog を構成する
- SSH 経由で AppViz アプライアンスにログインします。
- syslog-ng 構成ディレクトリに移動します。 - cd /etc/syslog-ng
- 既存の構成をバックアップします。 - cp syslog-ng.conf syslog-ng.conf.orig
- syslog-ng 構成ファイルを編集します。 - vi syslog-ng.conf
- リモート syslog サーバーを定義するには、次を追加します。 - destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };- <bindplane-server-ip>は、Bindplane エージェントの IP アドレスに置き換えます。
 
- 保存してエディタを終了します。 
- syslog-ng サービスを再起動して変更を適用します。 - service syslog-ng restart
- Syslog 構成を確認します。 - AppViz インターフェースで、[Administration > Syslog Server Settings] に移動します。
- [接続をテスト] をクリックします。
 
ログイン イベントとログアウト イベントの Syslog を構成する
- SSH 経由で ASMS アプライアンスにログインします。
- syslog-ng 構成ディレクトリに移動します。 - cd /etc/syslog-ng
- 既存の構成をバックアップします。 - cp syslog-ng.conf syslog-ng.conf.orig
- syslog-ng 構成ファイルを編集します。 - vi syslog-ng.conf
- リモート syslog サーバーを定義するには、次を追加します。 - destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };- <bindplane-server-ip>は、Syslog サーバーの IP アドレスに置き換えます。
 
- 保存してエディタを終了します。 
- syslog-ng サービスを再起動して変更を適用します。 - service syslog-ng restart
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック | 
|---|---|---|
| by_user | principal.user.user_display_name | 未加工ログの by_userフィールドの値がこの UDM フィールドに割り当てられます。 | 
| collection_time | metadata.event_timestamp | seconds フィールドと nanos フィールドが組み合わされてタイムスタンプが作成されます。 | 
| comm | target.process.command_line | grok を使用して descフィールドから抽出されたcommフィールドの値が、この UDM フィールドに割り当てられます。 | 
| datetime | metadata.event_timestamp | 日付と時刻は未加工ログから抽出され、イベント タイムスタンプの入力に使用されます。 | 
| desc | metadata.description | 他の説明がない場合、未加工ログの descフィールドの値がこの UDM フィールドに割り当てられます。 | 
| dest_ip | target.ip | 未加工ログの dest_ipフィールドの値がこの UDM フィールドに割り当てられます。 | 
| dest_port | target.port | 未加工ログの dest_portフィールドの値がこの UDM フィールドに割り当てられます。 | 
| details | security_result.summary | 未加工ログの detailsフィールドの値がこの UDM フィールドに割り当てられます。 | 
| device | principal.asset.hostname | 未加工ログの deviceフィールドの値がこの UDM フィールドに割り当てられます。 | 
| dst_ip | target.ip | 未加工ログの dst_ipフィールドの値がこの UDM フィールドに割り当てられます。 | 
| dst_port | target.port | 未加工ログの dst_portフィールドの値がこの UDM フィールドに割り当てられます。 | 
| event_id | metadata.product_event_type | 未加工ログの event_idフィールドの値がこの UDM フィールドに割り当てられます。また、パーサー ロジックでmetadata.event_typeなどのフィールドを特定するためにも使用されます。 | 
| event_name | metadata.product_event_type | 未加工ログの event_nameフィールドの値がこの UDM フィールドに割り当てられます。 | 
| firewall | target.hostname | 未加工ログの firewallフィールドの値がこの UDM フィールドに割り当てられます。 | 
| host | principal.hostname | 未加工ログの hostフィールドの値がこの UDM フィールドに割り当てられます。 | 
| host_type | principal.asset.category | 未加工ログの host_typeフィールドの値がこの UDM フィールドに割り当てられます。 | 
| iporhost | principal.ip/principal.hostname/target.ip/target.hostname/observer.ip/observer.hostname | 値が IP アドレスの場合、ログソースとイベントタイプに応じて principal.ip、target.ip、またはobserver.ipにマッピングされます。ホスト名の場合は、principal.hostname、target.hostname、observer.hostnameにマッピングされます。 | 
| IP | principal.ip | 未加工ログの IPフィールドの値がこの UDM フィールドに割り当てられます。 | 
| kv_data | security_result.summary | 未加工ログの kv_dataフィールドの値がこの UDM フィールドに割り当てられます。 | 
| log_type | metadata.log_type | ALGOSECにハードコードされています。 | 
| metric | security_result.action_details | 未加工ログの metricフィールドの値がこの UDM フィールドに割り当てられます。 | 
| msg | security_result.summary/security_result.description | 未加工ログの msgフィールドの値は、コンテキストに応じて、セキュリティ結果の概要または説明のいずれかを入力するために使用されます。また、risk_level、risk_count、risk_code、risk_titleフィールドの抽出にも使用されます。 | 
| pid | target.process.pid | grok を使用して descフィールドから抽出されたpidフィールドの値が、この UDM フィールドに割り当てられます。 | 
| product | metadata.product_name | 未加工ログの productフィールドの値がこの UDM フィールドに割り当てられます。 | 
| report | security_result.description | 未加工ログの reportフィールドの値が、セキュリティ結果の説明に含まれます。 | 
| report_data.Device IP | target.ip | 解析された JSON データの Device IPフィールドの値が、この UDM フィールドに割り当てられます。 | 
| report_data.Highest Risk Level | security_result.description | 解析された JSON データの Highest Risk Levelフィールドの値は、セキュリティ結果の説明に含まれます。セキュリティ結果の重大度を判断するためにも使用されます。 | 
| report_data.Security Rating Score | security_result.description | 解析された JSON データの Security Rating Scoreフィールドの値は、セキュリティ結果の説明に含まれます。 | 
| Requestor.Email | principal.user.email_addresses | 解析された JSON データの Requestorオブジェクト内のEmailフィールドの値がこの UDM フィールドに割り当てられます。 | 
| Requestor.Name | principal.user.user_display_name | 解析された JSON データの Requestorオブジェクト内のNameフィールドの値がこの UDM フィールドに割り当てられます。 | 
| RequestType | target.resource.attribute.labels | 未加工ログの RequestTypeフィールドの値が、ターゲット リソースのラベルとして追加されます。 | 
| risk_title | security_result.summary | 未加工ログの risk_titleフィールドの値がこの UDM フィールドに割り当てられます。 | 
| src_ip | principal.ip | 未加工ログの src_ipフィールドの値がこの UDM フィールドに割り当てられます。 | 
| src_port | principal.port | 未加工ログの src_portフィールドの値がこの UDM フィールドに割り当てられます。 | 
| status | security_result.description/security_result.action_details | 未加工ログの statusフィールドの値は、コンテキストに応じて、セキュリティ結果またはアクションの詳細の説明に含まれます。セキュリティ結果の重大度を判断するためにも使用されます。 | 
| target_app | target.application | 未加工ログの target_appフィールドの値がこの UDM フィールドに割り当てられます。 | 
| TemplateName | metadata.description | 未加工ログの TemplateNameフィールドの値がこの UDM フィールドに割り当てられます。 | 
| url | security_result.url_back_to_product | 未加工ログの urlフィールドの値がこの UDM フィールドに割り当てられます。 | 
| user | principal.user.userid | 未加工ログの userフィールドの値がこの UDM フィールドに割り当てられます。 | 
| vendor | metadata.vendor_name | 未加工ログの vendorフィールドの値がこの UDM フィールドに割り当てられます。 | 
| version | metadata.product_version | 未加工ログの versionフィールドの値がこの UDM フィールドに割り当てられます。 | 
| WorkFlow | target.resource.attribute.labels | 未加工ログの WorkFlowフィールドの値が、ターゲット リソースのラベルとして追加されます。 | 
| (パーサー ロジック) | extensions.auth.type | MACHINEにハードコードされています。 | 
| (パーサー ロジック) | security_result.action | event_idなどのフィールドに基づいて決定されます。通常はALLOWまたはBLOCKに設定します。 | 
| (パーサー ロジック) | security_result.category | Firewall Analyzer イベントの場合は POLICY_VIOLATIONにハードコードされています。 | 
| (パーサー ロジック) | security_result.description | 他のフィールドに基づいて構築され、イベントのコンテキストと詳細を提供します。 | 
| (パーサー ロジック) | security_result.severity | event_id、msgなどのフィールドに基づいて決定されます。通常はLOW、MEDIUM、HIGHのいずれかに設定します。 | 
| (パーサー ロジック) | metadata.event_type | event_idなどのフィールドに基づいて決定されます。例:USER_LOGIN、USER_LOGOUT、USER_RESOURCE_ACCESS、GENERIC_EVENT、STATUS_UNCATEGORIZED、SCAN_HOST、NETWORK_CONNECTION、STATUS_UPDATE。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。