Ana içeriğe geç

Istio Ingress için Wallarm Filtresi

Wallarm, Istio tarafından yönetilen API’leri güvence altına almak için trafiği satır içi veya bant dışı analiz eden bir filtre sağlar. Wallarm node’u harici olarak dağıtırsınız ve gRPC tabanlı external processing filtresi aracılığıyla analize yönelik trafiği Wallarm node’una yönlendirmek için Envoy ayarlarında Wallarm tarafından sağlanan yapılandırmayı uygularsınız.

OOB modu (aynalanmış trafik)

observability_mode Envoy parametresini burada açıklandığı şekilde ayarlayarak Wallarm filtresini bant dışı (OOB) trafik analizi için de kullanabilirsiniz.

Kullanım senaryoları

Bu, Envoy proxy ile çalışan ve Istio tarafından yönetilen API’leri gerçek zamanlı olarak güvenceye almak için en uygun seçimdir.

Sınırlamalar

  • When deploying the Wallarm service with the LoadBalancer type using the Helm chart, a trusted SSL/TLS certificate is required for the domain. Self-signed certificates are not yet supported.

  • Custom blocking page and blocking code configurations are not yet supported.

    All blocked malicious traffic is returned with status code 403 and the default block page.

  • Rate limiting by Wallarm rules is not supported.

    Rate limiting cannot be enforced on the Wallarm side for this connector. If you need rate limiting, use the features built into your API gateway or cloud platform.

  • Multitenancy is not supported.

    All protected APIs are managed under a single Wallarm account; separating protection across multiple accounts for different infrastructures or environments is not yet supported.

Gereksinimler

Dağıtıma devam edebilmek için aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • Istio teknolojilerine hakimiyet

  • API trafiğini yöneten Envoy proxy ile Istio

Dağıtım

1. Bir Wallarm Node dağıtın

Wallarm node’u, dağıtmanız gereken Wallarm platformunun temel bileşenidir. Gelen trafiği inceler, kötü amaçlı aktiviteleri tespit eder ve tehditleri azaltacak şekilde yapılandırılabilir.

Self-hosted node dağıtımı için bir yapıt seçin ve envoy-external-filter modu için ekli talimatları izleyin:

2. Envoy’u trafiği Wallarm node’una proxy’lemek için yapılandırın

  1. envoy.yamlhttp_filters bölümünüzde, istek ve yanıtları analiz için harici Wallarm Node’a gönderecek external processing filtresini yapılandırın. Bunun için aşağıdaki şablonu kullanın:

    ...
    
    http_filters:
    - name: ext_proc
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor
        grpc_service:
          envoy_grpc:
            cluster_name: wallarm_cluster
        processing_mode:
          request_body_mode: STREAMED
          response_body_mode: STREAMED
        request_attributes: ["request.id", "request.time", "source.address"]
    
  2. envoy.yamlclusters bölümünüzde, verileri Wallarm Node’a iletmek için kullanılan Wallarm kümesini yapılandırın. Bunun için aşağıdaki şablonu kullanın:

    clusters:
    - ...
    - name: wallarm_cluster
      connect_timeout: 30s
      load_assignment:
        cluster_name: wallarm_cluster
        endpoints: # Wallarm Node'un uç noktası
        - lb_endpoints:
          - endpoint:
              address:
                socket_address:
                  address: 127.0.0.1
                  port_value: 5080
      http2_protocol_options: {} # http2'yi etkinleştirmek için ayarlanmalıdır
      transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
          common_tls_context:
            validation_context:
              trusted_ca:
                filename: /path/to/node-ca.pem # Node örneği tarafından kullanılan sertifikayı veren CA
    

Olası 500 hatalarından kaçınma

Harici filtrede sorunlar oluştuğunda olası 500 hatalarından kaçınmak için yapılandırmaya failure_mode_allow parametresini ekleyebilirsiniz.

Test

Dağıtılan filtrenin işlevselliğini test etmek için şu adımları izleyin:

  1. Istio Gateway’e test amaçlı Yol Geçişi saldırısı içeren isteği gönderin:

    curl https://<ISTIO_GATEWAY_IP>/etc/passwd
    
  2. Wallarm Console → Attacks bölümünü US Cloud veya EU Cloud üzerinde açın ve saldırının listede görüntülendiğinden emin olun.

    Arayüzdeki Attacks