Wallarm Servis Entegrasyonlu NGINX Ingress Controller Dağıtımı¶
Bu talimatlar, Wallarm NGINX tabanlı Ingress controller'ı K8s kümenize dağıtmanız için gerekli adımları sağlar. Çözüm, Wallarm Helm chart'ından dağıtılır.
Çözüm, entegre Wallarm servisleriyle birlikte çalışan Community Ingress NGINX Controller üzerine inşa edilmiştir. En son sürüm, NGINX stable 1.25.5 kullanan Community Ingress NGINX Controller 1.11.3'ü temel almaktadır.
Aşağıdaki mimariye sahiptir:
Kullanım Senaryoları¶
Desteklenen tüm Wallarm dağıtım seçenekleri arasında, bu çözüm aşağıdaki kullanım senaryoları için önerilmektedir:
-
Community Ingress NGINX Controller ile uyumlu Ingress kaynaklarına trafik yönlendiren bir Ingress controller ve güvenlik katmanı bulunmamaktadır.
-
Halihazırda Community Ingress NGINX Controller kullanıyorsanız ve hem standart controller işlevselliği hem de geliştirilmiş güvenlik özellikleri sunan bir güvenlik çözümü arıyorsanız. Bu durumda, mevcut yapılandırmanızı yeni bir dağıtıma geçirerek bu talimatlarda ayrıntıları verilen Wallarm-NGINX Ingress Controller'a kolayca geçiş yapabilirsiniz.
Mevcut Ingress controller ile Wallarm controller'ın eşzamanlı kullanımı için, yapılandırma ayrıntıları konusunda Ingress Controller chaining guide'a bakınız.
Gereksinimler¶
-
Kubernetes platform version 1.26-1.30
-
Helm package manager
-
Compatibility of your services with the Community Ingress NGINX Controller version 1.11.5
-
Access to the account with the Administrator role in Wallarm Console for the US Cloud or EU Cloud
-
Access to
https://us1.api.wallarm.com
for working with US Wallarm Cloud or tohttps://api.wallarm.com
for working with EU Wallarm Cloud -
Access to
https://charts.wallarm.com
to add the Wallarm Helm charts. Ensure the access is not blocked by a firewall -
Access to the Wallarm repositories on Docker Hub
https://hub.docker.com/r/wallarm
. Make sure the access is not blocked by a firewall -
Access to the IP addresses below for downloading updates to attack detection rules and API specifications, as well as retrieving precise IPs for your allowlisted, denylisted, or graylisted countries, regions, or data centers
Ayrıca bakınız
Bilinen Kısıtlamalar¶
-
Postanalytics modülü olmadan çalışma desteklenmemektedir.
-
Postanalytics modülünün ölçek küçültülmesi, kısmi bir saldırı verisi kaybına yol açabilir.
Kurulum¶
-
Wallarm Ingress controller'ı kurun.
-
Ingress'iniz için trafik analizini etkinleştirin.
-
Wallarm Ingress controller işlem durumunu kontrol edin.
Adım 1: Wallarm Ingress Controller'ın Kurulması¶
Wallarm Ingress Controller'ı kurmak için:
-
Uygun tipteki bir filtering node token'ı oluşturun:
-
Helm chart'ı ile Wallarm Ingress controller'ı dağıtmak için bir Kubernetes namespace oluşturun:
-
Wallarm chart deposunu ekleyin:
-
Wallarm yapılandırması ile
values.yaml
dosyasını oluşturun. Minimum yapılandırmaya sahip dosya örneği aşağıdadır.API token kullanılırken,
nodeGroup
parametresinde bir node grubu adı belirtin. Node'unuz, Wallarm Console'un Nodes bölümünde gösterilen bu gruba atanacaktır. Varsayılan grup adıdefaultIngressGroup
'dur.Wallarm node token'ını Kubernetes secret'larında depolayarak Helm chart'a çekebilirsiniz. Read more
Deployment from your own registries
Wallarm Ingress controller'ı, kendi depolarınızda saklanan imajlardan kurmak için
values.yaml
dosyasındaki öğeleri geçersiz kılabilirsiniz. -
Wallarm paketlerini kurun:
helm install --version 5.3.0 <RELEASE_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE> -f <PATH_TO_VALUES>
<RELEASE_NAME>
Ingress controller chart'ının Helm release adı<KUBERNETES_NAMESPACE>
Wallarm Ingress controller ile Helm chart'ı için oluşturduğunuz Kubernetes namespace<PATH_TO_VALUES>
values.yaml
dosyasının yolu
Adım 2: Ingress'iniz için Trafik Analizinin Etkinleştirilmesi¶
kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-mode=monitoring
kubectl annotate ingress <YOUR_INGRESS_NAME> -n <YOUR_INGRESS_NAMESPACE> nginx.ingress.kubernetes.io/wallarm-application="<APPLICATION_ID>"
-
<YOUR_INGRESS_NAME>
Ingress'inizin adı -
<YOUR_INGRESS_NAMESPACE>
Ingress'inizin namespace'i -
<APPLICATION_ID>
uygulamalarınıza veya uygulama gruplarınıza özgü, pozitif bir sayı. Bu, ayrı istatistikler elde etmenize ve ilgili uygulamalara yönelik saldırıları ayırt etmenize olanak sağlayacaktır
Adım 3: Wallarm Ingress Controller İşleyişinin Kontrol Edilmesi¶
-
Pod listesini alın:
Her pod şu bilgileri göstermelidir: STATUS: Running ve READY: N/N. Örneğin:
-
Test Path Traversal saldırısı içeren isteği Ingress Controller Servisine gönderin:
Filtreleme node'u
block
modunda çalışıyorsa, isteğe yanıt olarak403 Forbidden
kodu dönecek ve saldırı Wallarm Console → Attacks bölümünde görüntülenecektir.
ARM64 Dağıtımı¶
NGINX Ingress controller'ın Helm chart sürüm 4.8.2 ile ARM64 işlemci uyumluluğu tanıtılmıştır. Başlangıçta x86 mimarisi için ayarlanmış olan dağıtım, ARM64 node'larında dağıtım yapılırken Helm chart parametrelerinin değiştirilmesini gerektirir.
ARM64 ayarlarında, Kubernetes node'ları genellikle arm64
etiketine sahiptir. Kubernetes scheduler'ın Wallarm iş yükünü uygun node tipine tahsis etmesine yardımcı olmak için, Wallarm Helm chart yapılandırmasında nodeSelector
, tolerations
veya affinity kuralları kullanılarak bu etikete referans verin.
Aşağıda, ilgili nodlar için kubernetes.io/arch: arm64
etiketini kullanan Google Kubernetes Engine (GKE) için Wallarm Helm chart örneği verilmiştir. Bu şablon, diğer bulut kurulumlarının ARM64 etiketleme standartlarına uyum sağlayacak şekilde değiştirilebilir.
controller:
nodeSelector:
kubernetes.io/arch: arm64
admissionWebhooks:
nodeSelector:
kubernetes.io/arch: arm64
patch:
nodeSelector:
kubernetes.io/arch: arm64
wallarm:
tarantool:
nodeSelector:
kubernetes.io/arch: arm64
enabled: true
token: "<NODE_TOKEN>"
apiHost: "us1.api.wallarm.com" # if using EU Cloud, comment out this line
# If using an API token, uncomment the following line and specify your node group name
# nodeGroup: defaultIngressGroup
controller:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
admissionWebhooks:
patch:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
wallarm:
tarantool:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
enabled: true
token: "<NODE_TOKEN>"
apiHost: "us1.api.wallarm.com" # if using EU Cloud, comment out this line
# If using an API token, uncomment the following line and specify your node group name
# nodeGroup: defaultIngressGroup
Kendi Depolarınızdan Dağıtım¶
Güvenlik politikalarınız gibi nedenlerle Wallarm genel deposundan Docker imajlarını çekemiyorsanız, bunun yerine:
-
Bu imajları kendi özel deponuza kopyalayın.
-
Wallarm NGINX tabanlı Ingress controller'ı bu imajları kullanarak kurun.
NGINX tabanlı Ingress Controller dağıtımı için Helm chart tarafından kullanılan Docker imajları şunlardır:
Kendi deponuzda saklanan imajları kullanarak Wallarm NGINX tabanlı Ingress controller'ı kurmak için, Wallarm Ingress controller Helm chart'ının values.yaml
dosyasını aşağıdaki gibi geçersiz kılın:
controller:
image:
## The image and tag for wallarm nginx ingress controller
##
registry: <YOUR_REGISTRY>
image: wallarm/ingress-controller
tag: <IMAGE_TAG>
wallarm:
helpers:
## The image and tag for the helper image
##
image: <YOUR_REGISTRY>/wallarm/node-helpers
tag: <IMAGE_TAG>
Ardından, değiştirilmiş values.yaml
dosyasını kullanarak kurulumu gerçekleştirin.
Yapılandırma¶
Wallarm Ingress controller başarılı bir şekilde kurulduktan ve kontrol edildikten sonra, aşağıdakiler gibi gelişmiş yapılandırmalar yapabilirsiniz:
Gelişmiş yapılandırma için kullanılan parametreler ve ilgili talimatlar hakkında bilgi almak için lütfen configure-nginx-ing-controller-docs'a bakınız.