VanDyke VShell SFTP ログを収集する

以下でサポートされています。

このドキュメントでは、Syslog で Bindplane を使用するか、ログシッパーで Amazon S3 を使用して、VanDyke VShell SFTP ログを Google Security Operations に取り込む方法について説明します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • VanDyke VShell サーバーまたは管理コンソールへの特権アクセス
  • オプション 1 の場合: Bindplane エージェント用の systemd を備えた Windows 2016 以降または Linux ホスト
  • オプション 2 の場合: S3 アクセス権を持つ AWS アカウントと、VShell サーバー上の NXLog / Fluent Bit

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新規デプロイ: Chronicle API を使用します(オプション 1)。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを ingestion-auth.json として Bindplane コレクタ ディレクトリ(Linux の場合は /opt/observiq-otel-collector/ingestion-auth.json、Windows の場合は C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に保存するか、config.yaml の creds_file_path を更新して、保存先のパスと一致させます。
  12. [IAM と管理] > [設定] に移動し、プロジェクト番号をコピーします。これはエクスポータの構成に必要です。

オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)

  1. Google SecOps コンソールにログインします。
  2. [設定] > [データ管理] > [収集エージェント] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。
  4. Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [Settings] > [Administration] > [Profile] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

オプション 1: Bindplane と Syslog を介した統合

このオプションは、最小限のレイテンシでリアルタイムのログ ストリーミングを提供し、ほとんどのデプロイにおすすめです。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows へのインストール

  1. 管理者として コマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux へのインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

その他のインストール リソース

その他のインストール オプションについては、Bindplane エージェントのインストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように BindPlane エージェントを構成する

  1. 構成ファイルにアクセスします。

    • config.yaml ファイルを見つけます。通常、Linux の場合は /opt/observiq-otel-collector/ ディレクトリ、Windows の場合はインストール ディレクトリにあります。
    • テキスト エディタ(nano、vi、メモ帳など)を使用してファイルを開きます。
  2. config.yaml ファイルを次のように編集します。

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: chronicle.googleapis.com
        # Custom log type - requires parser extension
        log_type: 'VANDYKE_SFTP'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
    • <LOCATION> は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポーターは、chronicle.googleapis.com の先頭にこの値を付加します。
    • <PROJECT_NUMBER> は、[IAM と管理] > [設定] のプロジェクト番号に置き換えます。
    • YOUR_CUSTOMER_ID は、実際のお客様 ID に置き換えます。
    • /path/to/ingestion-authentication-file.json を、サービス アカウント キー ファイル(オプション 1)が保存されたファイルパスに更新します。
    • UDP ではなく TCP の場合は、udplog を tcplog に置き換えます。

以前の Ingestion API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(例: europe-malachiteingestion-pa.googleapis.com)に置き換えます。

    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        # Custom log type - requires parser extension
        log_type: 'VANDYKE_SFTP'
        raw_log_field: body
        ingestion_labels:
    

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
  • Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。

    net stop observiq-otel-collector && net start observiq-otel-collector
    

VanDyke VShell で Syslog 転送を構成する

Windows の VShell の場合

  1. VShell コントロール パネル にサインインします。
  2. [ロギング] 設定に移動します。
  3. リモート syslog ロギングを構成します。
    • リモート syslog サーバーへのロギングを有効にします。
    • サーバー アドレス: Bindplane の IP アドレスを入力します。
    • ポート: 514(または構成済みのポート)を入力します。
    • プロトコル: [UDP](または構成されている場合は TCP)を選択します。
    • メッセージ グループ: [接続]、[認証]、[SFTP]、[FTPS]、[HTTPS]、[エラー]、[警告]、[情報] を選択します。
  4. [Apply] > [OK] をクリックします。

Linux / macOS の VShell の場合

  1. vshelld_config ファイル(通常は /etc/vshell/vshelld_config)を編集します。
  2. 次のパラメータを構成します。

    SyslogFacility LOG_LOCAL3
    LogLevel INFO
    
  3. LOG_LOCAL3 を Bindplane エージェントに転送するようにシステムの syslog を構成します。

    • /etc/rsyslog.conf または /etc/syslog-ng/syslog-ng.conf を編集します。
    • local3.* @bindplane-agent-ip:514(UDP の場合)または local3.* @@bindplane-agent-ip:514(TCP の場合)を追加します。
  4. VShell サービスと syslog サービスを再起動します。

    sudo systemctl restart vshelld
    sudo systemctl restart rsyslog
    

オプション 2: AWS S3 を介した統合

このオプションは、ログのアーカイブが必要な環境や、直接の syslog 転送が不可能な環境で役立ちます。AWS Lambda はオンプレミス ファイルにアクセスできないため、VShell サーバーにログシッパーが必要であることに注意してください。

Google SecOps 用に AWS S3 バケットと IAM を構成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. バケットの名前とリージョンを保存して、後で参照できるようにします(例: vandyke-sftp-logs)。
  3. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  4. 作成したユーザーを選択します。
  5. [セキュリティ認証情報] タブを選択します。
  6. [Access Keys] セクションで [Create Access Key] をクリックします。
  7. [ユースケース] として [サードパーティのサービス] を選択します。
  8. [Next] をクリックします。
    • 省略可: 説明タグを追加します。
  9. [アクセスキーを作成] をクリックします。
  10. [.csv ファイルをダウンロード] をクリックし、[アクセスキー] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
  11. [完了] をクリックします。
  12. [権限] タブを選択します。
  13. [権限ポリシー] セクションで [権限を追加] をクリックします。
  14. [権限を追加] を選択します。
  15. [ポリシーを直接アタッチする] を選択します。
  16. AmazonS3FullAccess ポリシーを検索します。
  17. ポリシーを選択します。
  18. [次へ] をクリックします。
  19. [権限を追加] をクリックします。

VShell サーバーに Log Shipper をインストールして構成する

オペレーティング システムに応じて、次のいずれかのオプションを選択します。

オプション A: NXLog を使用する(Windows)

  1. nxlog.co から NXLog Community Edition をダウンロードしてインストールします。
  2. C:\Program Files\nxlog\conf\nxlog.conf を編集:

    <Extension json>
        Module      xm_json
    </Extension>
    
    <Extension syslog>
        Module      xm_syslog
    </Extension>
    
    <Input vshell_log>
        Module      im_file
        File        "C:\\Program Files\\VanDyke Software\\VShell\\Log\\VShell.log"
        SavePos     TRUE
    
        <Exec>
            # Parse VShell log format
            if $raw_event =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) "(.*)"$/
            {
                $EventTime = $1;
                $Protocol = $2;
                $EventType = $3;
                $SessionID = $4;
                $ClientIP = $5;
                $ClientPort = $6;
                $Username = $7;
                $Filename = $9;
                $BytesDown = $10;
                $BytesUp = $11;
                $ServerIP = $14;
                $ServerPort = $15;
                $EventMessage = $16;
    
                # Convert to JSON
                to_json();
            }
        </Exec>
    </Input>
    
    <Output s3>
        Module      om_exec
        Command     C:\scripts\upload_to_s3.ps1
        Args        %FILEPATH%
    </Output>
    
    <Route vshell_to_s3>
        Path        vshell_log => s3
    </Route>
    
  3. PowerShell スクリプト C:\scripts\upload_to_s3.ps1 を作成します。

    param([string]$FilePath)
    
    $bucket = "vandyke-sftp-logs"
    $key = "vshell/$(Get-Date -Format 'yyyy/MM/dd/HH')/$(Get-Date -Format 'yyyyMMddHHmmss').json"
    
    # Batch logs
    $logs = Get-Content $FilePath | ConvertFrom-Json
    $jsonLines = $logs | ForEach-Object { $_ | ConvertTo-Json -Compress }
    $content = $jsonLines -join "`n"
    
    # Upload to S3
    Write-S3Object -BucketName $bucket -Key $key -Content $content -ProfileName default
    
  4. AWS 認証情報プロファイルを作成します。

    Set-AWSCredential -AccessKey YOUR_ACCESS_KEY -SecretKey YOUR_SECRET_KEY -StoreAs default
    
  5. タスク スケジューラを使用して、PowerShell スクリプトを 5 分ごとに実行するようにスケジュールします。

オプション B: Fluent Bit を使用する(Linux)

  1. Fluent Bit をインストールします。

    curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
    
  2. /etc/fluent-bit/fluent-bit.conf を構成します。

    [SERVICE]
        Flush        5
        Daemon       On
        Log_Level    info
    
    [INPUT]
        Name              tail
        Path              /var/log/vshell/vshell.log
        Parser            vshell_parser
        Tag               vshell.*
        Refresh_Interval  5
        Mem_Buf_Limit     10MB
    
    [PARSER]
        Name        vshell_parser
        Format      regex
        Regex       ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (?<protocol>\S+) (?<event_type>\S+) (?<session_id>\S+) (?<client_ip>\S+) (?<client_port>\S+) (?<username>\S+) (?<dash>\S+) (?<filename>\S+) (?<bytes_down>\S+) (?<bytes_up>\S+) (?<field1>\S+) (?<field2>\S+) (?<server_ip>\S+) (?<server_port>\S+) "(?<event_message>[^"]*)"
    
    [OUTPUT]
        Name                  s3
        Match                 vshell.*
        bucket                vandyke-sftp-logs
        region                us-east-1
        use_put_object        On
        total_file_size       5M
        upload_timeout        10s
        compression           gzip
        s3_key_format         /vshell/%Y/%m/%d/%H/%{hostname}_%{uuid}.json.gz
    
  3. AWS 認証情報を構成します。

    export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
    
  4. Fluent Bit を起動します。

    sudo systemctl enable fluent-bit
    sudo systemctl start fluent-bit
    

VanDyke VShell のログを取り込むように Google SecOps でフィードを構成する

  1. [設定] > [データ管理] > [フィード] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [フィード] に移動します。
  2. [+ Add New Feed] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: VanDyke VShell SFTP logs)。
  4. [ソースタイプ] として [Amazon S3 V2] を選択します。
  5. [ログタイプ](カスタム)として [VanDyke SFTP] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • S3 URI: s3://vandyke-sftp-logs/vshell/
    • Source deletion options: 必要に応じて、[Retain](推奨)または削除オプションを選択します。
    • ファイルの最長存続期間: 過去数日間に変更されたファイルを含めます。デフォルトは 180 日です。
    • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
    • Asset namespace: アセットの名前空間。
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
agent.id read_only_udm.observer.asset_id 「filebeat:」を agent.id フィールドの値と連結します。
agent.type read_only_udm.observer.application agent.type フィールドの値を直接マッピングします。
agent.version read_only_udm.observer.platform_version agent.version フィールドの値を直接マッピングします。
ecs.version read_only_udm.metadata.product_version ecs.version フィールドの値を直接マッピングします。
host.architecture read_only_udm.target.asset.hardware.cpu_platform host.architecture フィールドの値を直接マッピングします。
host.hostname read_only_udm.target.hostname host.hostname フィールドの値を直接マッピングします。
host.id read_only_udm.principal.asset_id 「VANDYKE_SFTP:」を host.id フィールドの値と連結します。
host.ip read_only_udm.target.ip host.ip 配列内の各 IP アドレスを個別の read_only_udm.target.ip フィールドに直接マッピングします。
host.mac read_only_udm.target.mac host.mac 配列内の各 MAC アドレスを個別の read_only_udm.target.mac フィールドに直接マッピングします。
host.os.kernel read_only_udm.target.platform_patch_level host.os.kernel フィールドの値を直接マッピングします。
host.os.platform read_only_udm.target.platform 値に基づいて、host.os.platform の値を WINDOWS、LINUX、MAC、または UNKNOWN_PLATFORM にマッピングします。
host.os.version read_only_udm.target.platform_version host.os.version フィールドの値を直接マッピングします。
log.file.path read_only_udm.principal.process.file.full_path log.file.path フィールドの値を直接マッピングします。
logstash.collect.timestamp read_only_udm.metadata.collected_timestamp logstash.collect.timestamp フィールドからタイムスタンプを解析し、タイムスタンプ オブジェクトに変換します。
logstash.irm_environment read_only_udm.additional.fields.value.string_value logstash.irm_environment フィールドの値を直接マッピングします。キーが「irm_environment」に設定されます。
logstash.irm_region read_only_udm.additional.fields.value.string_value logstash.irm_region フィールドの値を直接マッピングします。キーは「irm_region」に設定されます。
logstash.irm_site read_only_udm.additional.fields.value.string_value logstash.irm_site フィールドの値を直接マッピングします。キーは「irm_site」に設定されます。
logstash.process.host read_only_udm.observer.hostname logstash.process.host フィールドの値を直接マッピングします。
message grok パターンと正規表現を使用してさまざまなフィールドを抽出するために使用されます。
read_only_udm.metadata.event_type 「NETWORK_FTP」に設定
read_only_udm.metadata.log_type 「VANDYKE_SFTP」に設定します。
read_only_udm.metadata.product_event_type Grok パターンを使用してメッセージ フィールドから抽出されます。
read_only_udm.metadata.product_name 「VANDYKE_SFTP」に設定します。
read_only_udm.metadata.vendor_name 「VANDYKE SOFTWARE」に設定
read_only_udm.network.application_protocol 説明フィールドに「SSH2」または「SSH」が含まれている場合は「SSH」に設定します。それ以外の場合、メソッド フィールドが HTTP メソッドと一致する場合は「HTTP」に設定します。
read_only_udm.network.http.method 一般的な HTTP メソッドに一致する場合にのみ、grok パターンを使用してメッセージ フィールドから抽出されます。
read_only_udm.network.http.referral_url Grok パターンを使用してメッセージ フィールドから抽出されます。
read_only_udm.network.http.response_code Grok パターンを使用してメッセージ フィールドから抽出され、整数に変換されます。
read_only_udm.network.ip_protocol 説明フィールドに「TCP」が含まれている場合は「TCP」に設定されます。
read_only_udm.principal.ip Grok パターンを使用してメッセージ フィールドから抽出されます。
read_only_udm.principal.port Grok パターンを使用してメッセージ フィールドから抽出され、整数に変換されます。
read_only_udm.security_result.description Grok パターンを使用してメッセージ フィールドから抽出されます。
read_only_udm.security_result.severity syslog_severity が「error」または「warning」の場合は「HIGH」、「notice」の場合は「MEDIUM」、「information」または「info」の場合は「LOW」に設定します。
read_only_udm.security_result.severity_details syslog_severity フィールドの値を直接マッピングします。
read_only_udm.target.ip Grok パターンを使用してメッセージ フィールドから抽出されます。
read_only_udm.target.port Grok パターンを使用してメッセージ フィールドから抽出され、整数に変換されます。
read_only_udm.target.process.pid Grok パターンを使用してメッセージ フィールドから抽出されます。
syslog_severity security_result の重大度を判断するために使用されます。
username event.idm.read_only_udm.target.user.userid 変更履歴からマッピング
username event.idm.read_only_udm.target.user.user_display_name 変更履歴からマッピング
id event.idm.read_only_udm.additional.fields 変更履歴からマッピング
reason security_result.summary 変更履歴からマッピング
srcip principal.ip 変更履歴からマッピング
username principal.user.user_display_name 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。