コンテンツにスキップ

Fluentd

Fluentdは、柔軟かつ軽量なデータ集約および転送機構を備えたオープンソースのデータ収集ソフトウェアです。Wallarmを適切な統合設定をWallarm Consoleで作成することで、検出されたイベントの通知をFluentdに送信するよう設定できます。

通知フォーマット

WallarmはJSON形式のwebhooksを通じてFluentdに通知を送信します。送信されるJSONオブジェクトのセットは、Wallarmが通知するイベントによって異なります。

新しいヒットが検出された通知の例:

[
    {
        "summary": "[Wallarm] New hit detected",
        "details": {
        "client_name": "TestCompany",
        "cloud": "EU",
        "notification_type": "new_hits",
        "hit": {
            "domain": "www.example.com",
            "heur_distance": 0.01111,
            "method": "POST",
            "parameter": "SOME_value",
            "path": "/news/some_path",
            "payloads": [
                "say ni"
            ],
            "point": [
                "post"
            ],
            "probability": 0.01,
            "remote_country": "PL",
            "remote_port": 0,
            "remote_addr4": "8.8.8.8",
            "remote_addr6": "",
            "tor": "none",
            "request_time": 1603834606,
            "create_time": 1603834608,
            "response_len": 14,
            "response_status": 200,
            "response_time": 5,
            "stamps": [
                1111
            ],
            "regex": [],
            "stamps_hash": -22222,
            "regex_hash": -33333,
            "type": "sqli",
            "block_status": "monitored",
            "id": [
                "hits_production_999_202010_v_1",
                "c2dd33831a13be0d_AC9"
            ],
            "object_type": "hit",
            "anomaly": 0
            }
        }
    }
]

要件

Fluentdの設定は次の要件を満たす必要があります:

  • POSTまたはPUTリクエストを受け付ける

  • HTTPSリクエストを受け付ける

  • パブリックURLを持つ

Fluentdの設定例:

<source>
  @type http # HTTPおよびHTTPSトラフィック用のインプットプラグイン
  port 9880 # 受信リクエスト用のポート
  <transport tls> # 接続ハンドリング用の設定
    cert_path /etc/ssl/certs/fluentd.crt
    private_key_path /etc/ssl/private/fluentd.key
  </transport>
</source>
<match **>
  @type copy
  <store>
     @type stdout # コマンドラインにFluentdログを出力するためのアウトプットプラグイン
     output_type json # コマンドラインに出力されるログのフォーマット
  </store>
</match>

詳細は公式Fluentdドキュメントをご参照ください。

統合の設定

  1. Wallarm Console→Integrations→FluentdでFluentd統合の設定に進みます。

  2. 統合名を入力します。

  3. ターゲットのFluentd URL(Webhook URL)を指定します。

  4. 必要に応じて、詳細設定を構成します:

    • Request method: POST or PUT. By default, POST requests are sent.
    • Request header and its value if the server requires a non-standard header to execute the request. The number of headers is not limited.
    • CA certificate: certificate of CA that signed a server certificate. If CA is publicly trusted, this field is optional. If a server certificate is self-signed, this field is required and must contain a certificate of your own CA that signed a server certificate.
    • Verify TLS certificate: this setting allows to disable verification of the specified server certificate. By default, Wallarm verifies whether a server certificate is signed by a publicly trusted CA. We do not recommend disabling the verification of production server certificates. If your server uses a self-signed TLS certificate, you can add a self-signed CA certificate to allow sending requests to this server.
    • Request timeout, in seconds: if the server does not respond to the request within the specified time, the request fails. By default: 15 seconds.
    • Connection timeout, in seconds: if the connection to the server cannot be established during the specified time, the request fails. By default: 20 seconds.
    • Wallarm data format: either a JSON Array (default) or a New Line Delimited JSON (NDJSON).
  5. 通知をトリガーするイベントタイプを選択します。

    Fluentd integration

    利用可能なイベントの詳細:

  6. Test integrationをクリックして、設定内容の正しさ、Wallarm Cloudの稼働状況、通知フォーマットを確認します。

    テスト用Fluentdログ:

    [
        {
            summary:"[Test message] [Test partner(US)] New vulnerability detected",
            description:"Notification type: vuln
    
                        New vulnerability was detected in your system.
    
                        ID: 
                        Title: Test
                        Domain: example.com
                        Path: 
                        Method: 
                        Discovered by: 
                        Parameter: 
                        Type: Info
                        Threat: Medium
    
                        More details: https://us1.my.wallarm.com/object/555
    
    
                        Client: TestCompany
                        Cloud: US
                        ",
            details:{
                client_name:"TestCompany",
                cloud:"US",
                notification_type:"vuln",
                vuln_link:"https://us1.my.wallarm.com/object/555",
                vuln:{
                    domain:"example.com",
                    id:null,
                    method:null,
                    parameter:null,
                    path:null,
                    title:"Test",
                    discovered_by:null,
                    threat:"Medium",
                    type:"Info"
                }
            }
        }
    ]
    
  7. Add integrationをクリックします。

Wallarm Cloud IP addresses

To provide Wallarm Cloud access to your system, you may need a list of its public IP addresses:

35.235.66.155
34.102.90.100
34.94.156.115
35.235.115.105
34.94.85.217
34.94.51.234
34.102.59.122
34.94.238.72
34.141.230.156
34.91.138.113
34.90.114.134
35.204.127.78

追加アラートの設定

Besides the notifications you have already set up through the integration card, Wallarm triggers allow you to select additional events for notifications:

For condition detailing, you can add one or more filters. As soon, as condition and filters are set, select the integration through which the selected alert should be sent. You can select several integrations simultaneously.

Choosing an integration

中間データ収集ツールとしてFluentdを利用する

The most common logging scheme in complex systems consists of the following components:

  • Data collector: accepts logs from several sources and forwards logs to the SIEM system

  • SIEM system or log management systems: used to analyze logs and monitor the system status

例:

Webhook flow

このスキームを使用してWallarmイベントをログするには:

  1. 受信したwebhookを読み取り、ログを次のシステムに転送するようデータ収集ツールを設定します。Wallarmはwebhookを通じてデータ収集ツールにイベントを送信します。

  2. SIEMシステムを設定して、データ収集ツールからログを取得し読み取ります。

  3. Wallarmがデータ収集ツールにログを送信するように設定します。

Wallarmはwebhookを通じて任意のデータ収集ツールにログを送信できます。

WallarmをFluentdまたはLogstashと統合するには、Wallarm Console UIにある対応する統合カードを利用できます。

Wallarmを他のデータ収集ツールと統合するには、Wallarm Console UIにあるwebhook統合カードを利用できます。

ログをSIEMシステムに転送する人気のデータ収集ツールとの統合設定例をいくつか紹介します:

WallarmはDatadog API経由のDatadogとのネイティブ統合もサポートします。ネイティブ統合では中間のデータ収集ツールを使用する必要がありません。

統合の無効化および削除

You can delete or temporarily disable the integration. While deleting stops sending notificatioins and completely deletes all configuration, disabling just stops sending notifications which you can at any moment re-enable with the same settings.

If for the integration the System related events are selected to trigger notifications, Wallarm will notify about both of these actions.

システムの利用不可および統合パラメータの不正

Notifications to the system are sent via requests. If the system is unavailable or integration parameters are configured incorrectly, the error code is returned in the response to the request.

If the system responds to Wallarm request with any code other than 2xx, Wallarm resends the request with the interval until the 2xx code is received:

  • The first cycle intervals: 1, 3, 5, 10, 10 seconds

  • The second cycle intervals: 0, 1, 3, 5, 30 seconds

  • The third cycle intervals: 1, 1, 3, 5, 10, 30 minutes

If the percentage of unsuccessful requests reaches 60% in 12 hours, the integration is automatically disabled. If you receive system notifications, you will get a message about automatically disabled integration.