Juniper Junos のログを収集する

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

このドキュメントでは、Bindplane を使用して Juniper Junos ログを Google Security Operations に取り込む方法について説明します。

Juniper Junos OS は、Juniper Networks のルーター、スイッチ、セキュリティ デバイスに搭載されているオペレーティング システムです。ネットワーク インフラストラクチャの管理、ルーティング、スイッチング、セキュリティ機能のための統合プラットフォームを提供し、システム イベント、セキュリティ イベント、ネットワーク トラフィックの包括的なロギングを行います。パーサーは、Juniper Junos Syslog と Key-Value 形式のログからフィールドを抽出します。grok または kv を使用してログ メッセージを解析し、これらの値を統合データモデル(UDM)にマッピングします。また、イベントのソースとタイプのデフォルトのメタデータ値も設定します。

始める前に

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

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Junos OS を実行している Juniper デバイスへの特権アクセス

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

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

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

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

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

Windows のインストール

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

サービスは RUNNING と表示されます。

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
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

サービスが [アクティブ(実行中)] と表示されます。

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

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

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

構成ファイルを見つける

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'JUNIPER_JUNOS'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

構成パラメータ

  • 各プレースホルダを次のように置き換えます。

    • レシーバーの構成:

      • udplog: UDP Syslog には udplog、TCP Syslog には tcplog を使用します。
      • 0.0.0.0: リッスンする IP アドレス(すべてのインターフェースでリッスンする場合は 0.0.0.0
      • 514: リッスンするポート番号(標準の syslog ポート)
    • エクスポータの構成:

      • creds_file_path: 取り込み認証ファイルのフルパス:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: 「顧客 ID を取得する」セクションの顧客 ID
      • endpoint: リージョン エンドポイント URL:
        • 米国: malachiteingestion-pa.googleapis.com
        • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
        • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
        • 完全なリストについては、リージョン エンドポイントをご覧ください。
      • log_type: Chronicle に表示されるログタイプ(JUNIPER_JUNOS

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+OEnterCtrl+X の順に押します。
    • Windows: [ファイル>保存] をクリックします。

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

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

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

        sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

        sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。

      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Juniper Junos で Syslog 転送を構成する

  1. SSH またはコンソール経由で Juniper デバイスに接続します。
  2. 構成モードに入ります。

    configure
    
  3. 次のコマンドを使用して syslog ホストを構成します。

    set system syslog host BINDPLANE_IP any info
    set system syslog host BINDPLANE_IP port 514
    set system syslog host BINDPLANE_IP facility-override local7
    set system syslog host BINDPLANE_IP log-prefix JUNOS
    
    • BINDPLANE_IP は、Bindplane エージェント ホストの IP アドレスに置き換えます。
  4. 追加のログソースを構成します(省略可、推奨)。

    set system syslog host BINDPLANE_IP authorization info
    set system syslog host BINDPLANE_IP daemon info
    set system syslog host BINDPLANE_IP kernel info
    set system syslog host BINDPLANE_IP firewall any
    set system syslog host BINDPLANE_IP interactive-commands info
    
  5. 構造化された syslog データを構成する(拡張解析では省略可):

    set system syslog host BINDPLANE_IP structured-data
    
  6. 構成を commit します。

    commit and-quit
    
  7. syslog 構成を確認します。

    show system syslog host BINDPLANE_IP
    
  8. Bindplane エージェントのログを確認して、syslog メッセージが送信されていることを確認します。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
DPT target.port ネットワーク接続の宛先ポートを整数に変換したもの。
デジタル サービス税 target.ip ネットワーク接続の宛先 IP アドレス。
FLAG additional.fields{}.key: "FLAG"、additional.fields{}.value.string_value: FLAG の値 ネットワーク接続に関連付けられた TCP フラグ。
ID additional.fields{}.key: "ID", additional.fields{}.value.string_value: ID の値 IP ID フィールド。
IN additional.fields{}.key: "IN"、additional.fields{}.value.string_value: IN の値 受信ネットワーク インターフェース。
LEN additional.fields{}.key: "LEN"、additional.fields{}.value.string_value: LEN の値 IP パケットの長さ。
MAC principal.mac MAC フィールドから抽出された MAC アドレス。
OUT additional.fields{}.key: "OUT"、additional.fields{}.value.string_value: OUT の値 発信ネットワーク インターフェース。
PREC additional.fields{}.key: "PREC"、additional.fields{}.value.string_value: PREC の値 IP ヘッダーの優先順位フィールド。
PROTO network.ip_protocol ネットワーク接続で使用される IP プロトコル。
RES additional.fields{}.key: "RES", additional.fields{}.value.string_value: RES の値 TCP ヘッダーの予約済みフィールド。
SPT principal.port ネットワーク接続のソースポートを整数に変換したもの。
SRC principal.ip ネットワーク接続のソース IP アドレス。
TOS additional.fields{}.key: "TOS"、additional.fields{}.value.string_value: TOS の値 IP ヘッダーのサービスタイプ フィールド。
TTL network.dns.additional.ttl 有効期間(TTL)値を符号なし整数に変換したもの。
URGP additional.fields{}.key: "URGP"、additional.fields{}.value.string_value: URGP の値 TCP ヘッダーの緊急ポインタ フィールド。
WINDOW additional.fields{}.key: 「WINDOW_SIZE」、additional.fields{}.value.string_value: WINDOW の値 TCP ウィンドウ サイズ。
アクション security_result.action CEF メッセージから抽出された、ファイアウォールによって実行されたアクション。
agt observer.ip エージェントの IP アドレス。
amac target.mac ターゲットの MAC アドレスを小文字に変換し、ハイフンをコロンに置き換えたもの。
アプリ target.application イベントに関与したアプリケーション。
artz observer.zone オブザーバーのタイムゾーン。
atz target.location.country_or_region 対象のタイムゾーン。
categoryBehavior additional.fields{}.key: "Category Behavior"、additional.fields{}.value.string_value: スラッシュを削除した categoryBehavior の値 カテゴリの動作。
categoryDeviceGroup additional.fields{}.key: "Category Device Group"、additional.fields{}.value.string_value: categoryDeviceGroup の値からスラッシュを削除したもの カテゴリ デバイス グループ。
categoryObject additional.fields{}.key: "Category Object"、additional.fields{}.value.string_value: categoryObject の値からスラッシュを削除したもの カテゴリ オブジェクト。
categoryOutcome additional.fields{}.key: "Category Outcome"、additional.fields{}.value.string_value: categoryOutcome の値からスラッシュを削除したもの カテゴリの結果。
categorySignificance additional.fields{}.key: "category Significance"、additional.fields{}.value.string_value: categorySignificance の値 カテゴリの重要度。
コマンド target.process.command_line 実行されたコマンド。
cs1Label additional.fields{}.key: cs1Label、additional.fields{}.value.string_value: 対応する CEF フィールドの値 CEF メッセージのカスタム文字列フィールド 1 のラベルと値。
cs2Label additional.fields{}.key: cs2Label、additional.fields{}.value.string_value: 対応する CEF フィールドの値 CEF メッセージのカスタム文字列フィールド 2 のラベルと値。
cs3Label additional.fields{}.key: cs3Label、additional.fields{}.value.string_value: 対応する CEF フィールドの値 CEF メッセージのカスタム文字列フィールド 3 のラベルと値。
cs4Label additional.fields{}.key: cs4Label、additional.fields{}.value.string_value: 対応する CEF フィールドの値 CEF メッセージのカスタム文字列フィールド 4 のラベルと値。
cs5Label additional.fields{}.key: cs5Label、additional.fields{}.value.string_value: 対応する CEF フィールドの値 CEF メッセージのカスタム文字列フィールド 5 のラベルと値。
cs6Label additional.fields{}.key: cs6Label、additional.fields{}.value.string_value: 対応する CEF フィールドの値 CEF メッセージのカスタム文字列フィールド 6 のラベルと値。
dhost target.hostname 宛先ホスト名。
deviceCustomString1 additional.fields{}.key: cs1Label, additional.fields{}.value.string_value: Value of deviceCustomString1 デバイス カスタム文字列 1。
deviceCustomString2 additional.fields{}.key: cs2Label, additional.fields{}.value.string_value: Value of deviceCustomString2 デバイス カスタム文字列 2。
deviceCustomString3 additional.fields{}.key: cs3Label、additional.fields{}.value.string_value: deviceCustomString3 の値 デバイス カスタム文字列 3。
deviceCustomString4 additional.fields{}.key: cs4Label, additional.fields{}.value.string_value: Value of deviceCustomString4 デバイス カスタム文字列 4。
deviceCustomString5 additional.fields{}.key: cs5Label, additional.fields{}.value.string_value: Value of deviceCustomString5 デバイス カスタム文字列 5。
deviceCustomString6 additional.fields{}.key: cs6Label, additional.fields{}.value.string_value: Value of deviceCustomString6 デバイス カスタム文字列 6。
deviceDirection network.direction ネットワーク トラフィックの方向。
deviceEventClassId additional.fields{}.key: "eventId", additional.fields{}.value.string_value: Value of deviceEventClassId デバイス イベント クラス ID。
deviceFacility observer.product.subproduct デバイス ファシリティ。
deviceProcessName about.process.command_line デバイス プロセス名。
deviceSeverity security_result.severity デバイスの重大度。
deviceTimeZone observer.zone デバイスのタイムゾーン。
deviceVendor metadata.vendor_name デバイス ベンダー。
deviceVersion metadata.product_version デバイスのバージョン。
dpt target.port 宛先ポート。
dst target.ip 宛先 IP アドレス。
duser target.user.user_display_name 宛先ユーザー。
eventId additional.fields{}.key: "eventId", additional.fields{}.value.string_value: Value of eventId 予定 ID。
event_time metadata.event_timestamp メッセージから解析されたイベントの発生時刻。
firewall_action security_result.action_details 実行されたファイアウォール アクション。
ホスト principal.hostname、intermediary.hostname ログを生成するデバイスのホスト名。さまざまなケースでプリンシパルと仲介者の両方で使用されます。
msg security_result.summary イベントに関連付けられたメッセージ。セキュリティ結果の要約として使用されます。
name metadata.product_event_type イベントの名前。
process_name additional.fields{}.key: "process_name", additional.fields{}.value.string_value: Value of process_name プロセスの名前。
p_id target.process.pid プロセス ID を文字列に変換したもの。
sha256 principal.process.file.sha256 ファイルの SHA256 ハッシュ(SSH2 鍵情報から抽出されたもの)。
shost principal.hostname ソースのホスト名。
source_address principal.ip ソース IP アドレス。
source_port principal.port ソースポートを整数に変換したもの。
src principal.ip ソース IP アドレス。
src_ip principal.ip ソース IP アドレス。
src_port principal.port ソースポートを整数に変換したもの。
ssh2 security_result.detection_fields{}.key: "ssh2", security_result.detection_fields{}.value: Value of ssh2 SSH2 鍵情報。
subtype metadata.product_event_type イベントのサブタイプ。
task_summary security_result.description タスク要約。セキュリティ結果の説明として使用されます。
timestamp metadata.event_timestamp イベントのタイムスタンプ。
ユーザー target.user.userid イベントに関連付けられているユーザー。
ユーザー名 principal.user.userid イベントに関連付けられたユーザー名。
user_name principal.user.userid ユーザー名。
metadata.vendor_name 「Juniper Firewall」にハードコードされています。「Juniper Firewall」にハードコードされています。「JUNIPER_JUNOS」にハードコードされています。ログの内容に基づいてパーサー ロジックによって決定されます。CEF メッセージではなく、他の具体的なイベントタイプが特定されていない場合のデフォルトは「STATUS_UPDATE」です。CEF メッセージの場合は「NETWORK_HTTP」に設定されます。desc フィールドが存在しない場合、このフィールドには未加工ログメッセージから抽出された message_description が入力されます。

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