Ana içeriğe geç

Kong Ingress Controller için Wallarm Connector

Kong Ingress Controller tarafından yönetilen API’leri korumak için Wallarm, Kubernetes ortamınıza sorunsuzca entegre olan bir connector sağlar. Wallarm filtreleme düğümünü dağıtıp özel bir Lua eklentisi aracılığıyla Kong’a bağlayarak, gelen trafik gerçek zamanlı analiz edilir ve istekler hizmetlerinize ulaşmadan önce Wallarm kötü amaçlı istekleri engelleyebilir.

Kong Ingress Controller için Wallarm connector yalnızca in-line modunu destekler:

Wallarm eklentisi ile Kong

Kullanım senaryoları

Bu çözüm, Kong API Gateway çalıştıran Kong Ingress Controller tarafından yönetilen API’lerin güvenliğini sağlamak için önerilir.

Sınırlamalar

Bu kurulum, Wallarm’ın yalnızca Wallarm Console UI üzerinden ince ayar yapılmasına izin verir. Dosya tabanlı yapılandırma gerektiren bazı Wallarm özellikleri bu uygulamada desteklenmez, örneğin:

Gereksinimler

Dağıtıma devam etmeden önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

  • Kubernetes kümesinde dağıtılmış ve API trafiğinizi yöneten Kong Ingress Controller

  • Helm v3 paket yöneticisi

  • https://us1.api.wallarm.com (US Wallarm Cloud) veya https://api.wallarm.com (EU Wallarm Cloud) erişimi

  • Wallarm Helm chart’ını eklemek için https://charts.wallarm.com erişimi

  • Docker Hub üzerindeki Wallarm depolarına https://hub.docker.com/r/wallarm erişimi

  • Saldırı tespit kurallarının güncellemelerini indirmek ve allowlisted, denylisted veya graylisted ülkeleriniz, bölgeleriniz veya veri merkezleriniz için kesin IP’leri almak amacıyla aşağıdaki IP adreslerine erişim

    node-data0.us1.wallarm.com - 34.96.64.17
    node-data1.us1.wallarm.com - 34.110.183.149
    us1.api.wallarm.com - 35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    node-data1.eu1.wallarm.com - 34.160.38.183
    node-data0.eu1.wallarm.com - 34.144.227.90
    api.wallarm.com - 34.90.110.226
    
  • US Cloud veya EU Cloud için Wallarm Console’a Administrator erişimi

  • Node örneği alan adı için güvenilir bir SSL/TLS sertifikası gereklidir. Öz imzalı sertifikalar henüz desteklenmemektedir.

Dağıtım

Kong Ingress Controller tarafından yönetilen API’leri güvenceye almak için şu adımları izleyin:

  1. Kubernetes kümenizde Wallarm filtreleme düğümü servisini dağıtın.

  2. Gelen trafiği analiz için Kong Ingress Controller’dan Wallarm filtreleme düğümüne yönlendirmek üzere Wallarm Lua eklentisini edinin ve dağıtın.

1. Wallarm Native Node dağıtın

Wallarm düğümünü Kubernetes kümenizde ayrı bir servis olarak dağıtmak için talimatları izleyin.

2. Wallarm Lua eklentisini edinin ve dağıtın

  1. Kong Ingress Controller’ınız için Wallarm Lua eklenti kodunu edinmek amacıyla support@wallarm.com ile iletişime geçin.

  2. Eklenti kodu ile bir ConfigMap oluşturun:

    kubectl apply -f wallarm-kong-lua.yaml -n <KONG_NS>
    

    <KONG_NS>, Kong Ingress Controller’ın dağıtıldığı ad alanıdır.

  3. Wallarm Lua eklentisini yüklemek için Kong Ingress Controller’a ait values.yaml dosyanızı güncelleyin:

    gateway:
      plugins:
        configMaps:
        - name: kong-lua
          pluginName: kong-lua
    
  4. Kong Ingress Controller’ı güncelleyin:

    helm upgrade --install <KONG_RELEASE_NAME> kong/ingress -n <KONG_NS> --values values.yaml
    
  5. Bir KongClusterPlugin kaynağı oluşturarak ve Wallarm düğüm servis adresini belirterek Wallarm Lua eklentisini etkinleştirin:

    echo '
    apiVersion: configuration.konghq.com/v1
    kind: KongClusterPlugin
    metadata:
      name: kong-lua
      annotations:
        kubernetes.io/ingress.class: kong
    config:
      wallarm_node_address: "http://native-processing.wallarm-node.svc.cluster.local:5000"
    plugin: kong-lua
    ' | kubectl apply -f -
    

    wallarm-node, Wallarm düğüm servisinin dağıtıldığı ad alanıdır.

  6. Seçili servisler için eklentiyi etkinleştirmek üzere Ingress’inize veya Gateway API rotanıza aşağıdaki anotasyonları ekleyin:

    konghq.com/plugins: kong-lua
    kubernetes.io/ingress.class: kong
    

Test

Dağıtılan connector’ün işlevselliğini test etmek için şu adımları izleyin:

  1. Wallarm pod’larının çalışır durumda olduğunu doğrulayın:

    kubectl -n wallarm-node get pods
    

    wallarm-node, Wallarm düğüm servisinin dağıtıldığı ad alanıdır.

    Her pod durumunun STATUS: Running veya READY: N/N olması gerekir. Örneğin:

    NAME                                  READY   STATUS    RESTARTS   AGE
    native-aggregation-5fb5d5444b-6c8n8   3/3     Running   0          51m
    native-processing-7c487bbdc6-4j6mz    3/3     Running   0          51m
    
  2. Kong Gateway IP’sini alın (genellikle bir LoadBalancer servisi olarak yapılandırılır):

    export PROXY_IP=$(kubectl get svc --namespace <KONG_NS> <KONG_RELEASE_NAME>-gateway-proxy -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  3. Test Path Traversal saldırısıyla balancera istek gönderin:

    curl -H "Host: kong-lua-test.wallarm" $PROXY_IP/etc/passwd
    

    Düğüm varsayılan olarak monitoring mode modunda çalıştığından, Wallarm düğümü saldırıyı engellemez ancak kaydeder.

  4. Wallarm Console → US Cloud veya EU Cloud içindeki Attacks bölümünü açın ve saldırının listede görüntülendiğinden emin olun.

    Arayüzde Attacks

Wallarm Lua eklentisini yükseltme

Dağıtılmış Wallarm Lua eklentisini daha yeni bir sürüme yükseltmek için:

  1. Kong Ingress Controller’ınız için güncellenmiş Wallarm Lua eklenti kodunu edinmek üzere support@wallarm.com ile iletişime geçin.

  2. Eklenti kodu ile ConfigMap’i güncelleyin:

    kubectl apply -f wallarm-kong-lua.yaml -n <KONG_NS>
    

    <KONG_NS>, Kong Ingress Controller’ın dağıtıldığı ad alanıdır.

Eklenti yükseltmeleri, özellikle ana sürüm güncellemelerinde, bir Wallarm düğüm yükseltmesi gerektirebilir. Sürüm güncellemeleri ve yükseltme talimatları için Wallarm Native Node değişiklik günlüğüne bakın. Kullanımdan kaldırmaları önlemek ve gelecekteki yükseltmeleri kolaylaştırmak için düzenli düğüm güncellemeleri önerilir.