Amazon CloudFront için Wallarm Connector¶
CloudFront, Amazon Web Services tarafından işletilen bir içerik teslim ağıdır. Wallarm, CloudFront üzerinden teslim edilen trafiği güvence altına almak ve izlemek için bir bağlayıcı olarak görev yapabilir.
Wallarm’ı CloudFront için bir bağlayıcı olarak kullanmak için, Wallarm node’unu harici olarak dağıtmanız ve trafiği analiz için Wallarm node’una yönlendirmek amacıyla Wallarm tarafından sağlanan Lambda@Edge işlevlerini çalıştırmanız gerekir.
CloudFront bağlayıcısı hem in-line hem de out-of-band trafik analizini destekler:
Güvenlik notu
Sunulan çözüm, en az ayrıcalık ilkesi gözetilerek tasarlanmıştır. İşlevler, CloudFront ve Wallarm Node ile çalışmak için gerekli en az izin kümesini talep eder ve varsayılan olarak güvenli dağıtımı sağlar.
Kullanım senaryoları¶
Desteklenen tüm Wallarm dağıtım seçenekleri arasında, trafiği Amazon CloudFront üzerinden ilettiğiniz durumlarda bu çözüm önerilir.
Sınırlamalar¶
-
Lambda@Edge işlev düzeyi kısıtlamaları:
- Lambda@Edge işlevleri, 4xx HTTP durum kodlarına sahip görüntüleyici yanıtları tarafından tetiklenmez.
- Lambda@Edge, hem origin response hem de viewer response olaylarında yanıt gövdesine erişime izin vermez; bu da yanıt içeriğine dayalı herhangi bir işlem yapılmasını kısıtlar.
- Gövde boyutu, viewer istekleri için 40 KB ve origin istekleri için 1 MB ile sınırlıdır.
- Wallarm node’undan gelen maksimum yanıt süresi, viewer istekleri için 5 saniye ve origin istekleri için 30 saniyedir.
- Lambda@Edge, özel ağları (VPC) desteklemez.
- Eşzamanlı istekler için varsayılan sınır bölge başına 1.000’dir, ancak on binlere kadar artırılabilir.
- Wallarm Lambda@Edge işlevleri origin düzeyinde çalışır; bu, CDN önbelleği tarafından karşılanan isteklere yönelik izleme yapılmadığı anlamına gelir. Böylece bu tür isteklere yönelik olası saldırılar tespit edilemez.
-
Özellik kısıtlamaları:
- Helm chart kullanılarak
LoadBalancer
türüyle Wallarm servisi dağıtılırken, Node örneği alan adı için güvenilir bir SSL/TLS sertifikası gereklidir. Öz imzalı sertifikalar henüz desteklenmemektedir. - Özel engelleme sayfası ve engelleme kodu yapılandırmaları henüz desteklenmiyor.
- Lambda@Edge yanıt tetikleyici kısıtlamaları nedeniyle pasif tespit ve API Discovery’de API yanıt yapısına dayalı güvenlik açığı tespiti sınırlıdır. Wallarm işlevleri yanıt gövdelerini alamadığından ve onlara dayanamadığından, bu özellikler kullanılamaz.
- Wallarm kuralıyla oran sınırlama desteklenmiyor.
- Multitenancy henüz desteklenmiyor.
- Helm chart kullanılarak
Gereksinimler¶
Dağıtıma devam etmeden önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
-
AWS CloudFront ve Lambda teknolojileri hakkında bilgi.
-
CloudFront CDN üzerinden geçen API’ler veya trafik.
Dağıtım¶
1. Bir Wallarm node’u dağıtın¶
Wallarm node’u, dağıtmanız gereken Wallarm platformunun temel bileşenidir. Gelen trafiği inceler, kötü amaçlı etkinlikleri tespit eder ve tehditleri azaltacak şekilde yapılandırılabilir.
Gereken kontrol düzeyine bağlı olarak, Wallarm tarafından barındırılan ya da kendi altyapınızda barındırılan şekilde dağıtabilirsiniz.
Bağlayıcı için Wallarm tarafından barındırılan bir node dağıtmak üzere talimatları izleyin.
Self-hosted node dağıtımı için bir yapıt seçin ve ekli talimatları izleyin:
- Bare metal veya VM’lerde Linux altyapıları için All-in-one installer
- Container tabanlı dağıtımlar kullanan ortamlar için Docker image
- AWS altyapıları için AWS AMI
- Kubernetes kullanan altyapılar için Helm chart
2. Wallarm Lambda@Edge işlevlerini edinin ve dağıtın¶
CloudFront CDN’inizi Wallarm node’una bağlamak için Wallarm Lambda@Edge işlevlerini AWS üzerinde dağıtmanız gerekir.
İki adet Python tabanlı işlev vardır: biri istekleri iletme ve analiz etme, diğeri ise yanıtları iletme ve analiz etme için.
-
Wallarm Console → Security Edge → Connectors → Download code bundle bölümüne gidin ve platformunuz için bir kod paketi indirin.
Self-hosted node çalıştırıyorsanız, kod paketini almak için sales@wallarm.com ile iletişime geçin.
-
AWS Console’unuza gidin → Services → Lambda → Functions.
- Lambda@Edge işlevleri için gerekli olan
us-east-1
(N. Virginia) bölgesini seçin. -
Aşağıdaki ayarlarla Create function oluşturun:
- Runtime: Python 3.x.
- Execution role: Create a new role from AWS policy templates → Basic Lambda@Edge permissions (for CloudFront trigger).
- Diğer ayarlar varsayılan bırakılabilir.
-
İşlev oluşturulduktan sonra, Code sekmesinde Wallarm istek işleme kodunu yapıştırın.
-
Koddaki aşağıdaki parametreleri güncelleyin:
wlrm_node_addr
: Wallarm node’unuzun URL’si.wlrm_inline
: asenkron (bant dışı) modu kullanılıyorsaFalse
olarak ayarlayın.- Gerekirse diğer parametreleri değiştirin.
-
Actions → Deploy to Lambda@Edge adımlarını izleyin ve aşağıdaki ayarları belirtin:
- Configure new CloudFront trigger.
- Distribution: korumak istediğiniz origin’e trafiği yönlendiren CDN’iniz.
- Cache behavior: Lambda işlevi için önbellek davranışı, genellikle
*
. -
CloudFront event:
- Origin request: yalnızca CloudFront CDN arka uçtan veri istediğinde işlevi çalıştırır. CDN önbellekten yanıt döndürürse işlev çalışmaz.
- Viewer request: CloudFront CDN’e gelen her istek için işlevi çalıştırır.
-
Include body seçeneğini işaretleyin.
- Confirm deploy to Lambda@Edge seçeneğini işaretleyin.
-
Wallarm tarafından sağlanan yanıt işlevi için de prosedürü tekrarlayın ve tetikleyici olarak yanıtları seçin.
Yanıt tetikleyicisinin istek tetikleyicisiyle eşleştiğinden emin olun (origin request için origin response, viewer request için viewer response).
Her iki işlevi de doğrudan AWS Serverless Application Repository (SAR) üzerinden dağıtabilirsiniz. İşlevler, Lambda@Edge işlevleri için gerekli olan us-east-1
(N. Virginia) bölgesine dağıtılacaktır.
- AWS Serverless Application Repository’de Wallarm politikalarına gidin → Deploy.
- Dağıtım ayarlarını varsayılan bırakın.
-
Dağıtım tamamlandıktan sonra, oluşturulan IAM rollerine gidin → Trust relationships ve her iki rolü de (biri istekler, diğeri yanıtlar için) aşağıdaki policy ile güncelleyin:
-
AWS Console’unuza gidin → Services → Lambda → Functions.
serverlessrepo-wallarm-connector-RequestHandler-xxx
işlevini açın.-
Code sekmesinde aşağıdaki parametreleri güncelleyin:
wlrm_node_addr
: Wallarm node örneğinizin adresi.wlrm_inline
: out-of-band modu kullanılıyorsaFalse
olarak ayarlayın.- Gerekirse diğer parametreleri değiştirin.
-
Actions → Deploy to Lambda@Edge adımlarını izleyin ve aşağıdaki ayarları belirtin:
- Configure new CloudFront trigger.
- Distribution: korumak istediğiniz origin’e trafiği yönlendiren CDN’iniz.
- Cache behavior: Lambda işlevi için önbellek davranışı, genellikle
*
. -
CloudFront event:
- Origin request: yalnızca CloudFront CDN arka uçtan veri istediğinde işlevi çalıştırır. CDN önbellekten yanıt döndürürse işlev çalışmaz.
- Viewer request: CloudFront CDN’e gelen her istek için işlevi çalıştırır.
-
Include body seçeneğini işaretleyin.
- Confirm deploy to Lambda@Edge seçeneğini işaretleyin.
-
AWS Console’unuza geri dönün → Services → Lambda → Functions.
serverlessrepo-wallarm-connector-ResponseHandler-xxx
işlevini açın.-
Wallarm tarafından sağlanan yanıt işlevi için de prosedürü tekrarlayın ve tetikleyici olarak yanıtları seçin.
Yanıt tetikleyicisinin istek tetikleyicisiyle eşleştiğinden emin olun (origin request için origin response, viewer request için viewer response).
Test¶
Dağıtılan işlevlerin çalışırlığını test etmek için şu adımları izleyin:
-
CloudFront CDN’inize test Path Traversal saldırısı içeren isteği gönderin:
-
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.
Wallarm node modu blocking olarak ayarlanmış ve trafik satır içi akıyorsa, istek ayrıca engellenecektir.
Lambda@Edge işlevlerini yükseltme¶
Dağıtılmış Lambda@Edge işlevini daha yeni bir sürüme yükseltmek için:
-
Wallarm Console → Security Edge → Connectors → Download code bundle bölümüne gidin ve güncellenmiş Wallarm Lambda@Edge işlevlerini indirin.
Self-hosted node çalıştırıyorsanız, güncellenmiş kod paketini almak için sales@wallarm.com ile iletişime geçin.
-
Dağıtılmış Lambda@Edge işlevlerinizdeki kodu güncel paketle değiştirin.
wlrm_node_addr
,wlrm_inline
ve diğerleri gibi parametreler için mevcut değerleri koruyun.Mevcut işlev tetikleyicilerini değiştirmeyin.
-
Güncellenmiş işlevleri Deploy edin.
- İşlevlerin yeni sürümünü kullanarak 2. adımda belirtilen adımları tekrarlayın.
- Güncellenmiş işlevleri dağıtımlarınıza bağladıktan sonra, çakışmaları önlemek için önceki sürümleri CloudFront tetikleyicilerinden kaldırın.
İşlev yükseltmeleri, özellikle ana sürüm güncellemelerinde, bir Wallarm node yükseltmesi gerektirebilir. Self-hosted Node sürüm notları ve yükseltme talimatları için Native Node değişiklik günlüğüne veya Edge connector yükseltme prosedürüne bakın. Eskimeyi önlemek ve gelecekteki yükseltmeleri basitleştirmek için düzenli node güncellemeleri önerilir.