AWS WAF’a Giriş
AWS WAF veya Amazon Web Services Web Uygulaması Güvenlik Duvarı, web uygulamalarını yaygın web saldırılarından ve saldırılarından korumaya yardımcı olan bir güvenlik duvarı hizmetidir. Özelleştirilebilir web güvenliği kuralları tanımlayarak web uygulamalarınıza hangi trafiğe izin vereceğinizi veya hangi trafiği engelleyeceğinizi kontrol etmenizi sağlar. Bu kurallar, SQL enjeksiyonu ve Siteler Arası Komut Dosyası Çalıştırma (XSS) saldırıları gibi kötü amaçlı trafiği, Amazon EC2 bulut sunucuları veya Amazon API Gateway gibi AWS kaynakları üzerinde çalışan web uygulamalarınıza ulaşmadan önce filtrelemek için tasarlanmıştır.
AWS WAF, Web Uygulaması Güvenliği İçin Neden Önemlidir?
Yaygın Web İstismarlarına Karşı Koruma
AWS WAF, web uygulamalarınızı, uygulamalarınızın güvenliğini ve işlevselliğini tehlikeye atabilecek SQL ekleme ve XSS saldırıları gibi yaygın web saldırılarına ve saldırılarına karşı korumanıza yardımcı olur.
DDoS Saldırılarını Azaltma
Dağıtılmış Hizmet Reddi (DDoS) saldırıları, web uygulamalarınızın trafiğini bunaltarak yavaşlamalarına veya kullanılamamalarına neden olabilir. AWS WAF, belirli bir IP adresinden gelen isteklerin sayısını sınırlayarak hıza dayalı kurallar belirlemenize olanak tanıyarak DDoS saldırılarının azaltılmasına yardımcı olabilir.
Uyumluluk ve Veri Koruma
Çoğu endüstrinin müşteri verilerinin korunmasına yönelik düzenleyici gereksinimleri vardır. Web uygulamalarınızı AWS WAF ile güvence altına alarak bu düzenlemelere uygunluğu sağlayabilir ve hassas kullanıcı verilerinin açığa çıkmasını veya çalınmasını önleyebilirsiniz.
Esnek ve Özelleştirilebilir Kurallar
AWS WAF, özel uygulamanızın ihtiyaçlarına göre uyarlanmış özel kurallar oluşturmanıza olanak tanır. Bu esneklik, web uygulamalarınıza özgü benzersiz güvenlik sorunlarını çözebilmenizi sağlar.
Diğer AWS Hizmetleriyle Entegrasyon
AWS WAF, diğer AWS hizmetleriyle sorunsuz bir şekilde entegre olarak onu mevcut AWS altyapınıza kolayca dahil etmenize olanak tanır. Örneğin, içeriğinizi güvenli bir şekilde ve düşük gecikmeyle sunmak için AWS WAF’ı AWS’nin İçerik Dağıtım Ağı (CDN) hizmeti olan Amazon CloudFront ile birleştirebilirsiniz.
Gerçek Zamanlı İzleme ve Analizler
AWS WAF, web trafiği düzenlerinin ve güvenlik olaylarının gerçek zamanlı izlenmesini sağlar. Bu yetenek, tehditleri anında tespit edip bunlara yanıt vermenizi sağlayarak web uygulamalarınızın güvenliğini korumanıza yardımcı olur.
Uygun Maliyetli Güvenlik Çözümü
AWS WAF’ı kullanarak bir web uygulaması güvenlik duvarının yönetimi ve bakımının karmaşıklığını AWS’ye aktarabilirsiniz. Özel donanım veya yazılım çözümlerine yatırım yapma ve bunları yönetme ihtiyacını ortadan kaldırarak maliyetleri azaltabilirsiniz.
AWS WAF’ın Temel Kavramları
Web ACL’lerini Anlamak (Erişim Kontrol Listeleri)
AWS WAF (Web Uygulaması Güvenlik Duvarı) ACL (Erişim Kontrol Listesi), Amazon Web Services tarafından sunulan ve web uygulamalarınızı çeşitli çevrimiçi tehditlerden korumak için tasarlanmış güçlü bir güvenlik özelliğidir. Bir Web ACL oluşturarak, web uygulamanıza gelen trafiğe izin vermek veya engellemek için IP adresleri, coğrafi konum veya gelen isteklerdeki belirli kalıplar hakkında belirli kurallar ve koşullar tanımlayabilirsiniz. AWS WAF ACL bir kalkan görevi görerek kötü amaçlı trafiği filtreler ve yalnızca meşru kullanıcıların web kaynaklarınıza erişmesini sağlar. Güçlü bir savunma mekanizması sunarak uygulamalarınızı SQL enjeksiyonu, siteler arası komut dosyası oluşturma ve DDoS saldırıları gibi yaygın web saldırılarına karşı korumanıza olanak tanır.
Bir Web ACL iki ana bileşenden oluşur:
Kurallar : Kurallar, web isteklerine izin vermek, engellemek veya saymak için tanımladığınız koşullardır. Bu kurallar IP adresleri, istek başlıkları, sorgu dizeleri ve daha fazlası gibi çeşitli ölçütlere dayanabilir.
Kural Eylemi : Bir kuralla ilişkili eylem, bir istek kuralın koşullarıyla eşleştiğinde ne olacağını belirler. Eylemler isteğe izin verilmesini, engellenmesini veya sayılmasını içerebilir (bu, herhangi bir işlem yapmadan istekle ilgili verileri topladığınız anlamına gelir).
Web ACL’si Oluşturmak İçin
- AWS Management Console’da oturum açın ve https://console.aws.amazon.com/wafv2/ adresini ziyaret ederek AWS WAF konsoluna erişin .
- Menüde Web ACL’lerine gidin ve Yeni bir Web ACL oluştur seçeneğini seçin.
- Web ACL’sini benzersiz şekilde tanımlamak için bir Ad belirtin.
Kural Kümeleri: Süreci Basitleştirmek için Önceden Yapılandırılmış Kural Kümeleri
Kural kümeleri, AWS WAF tarafından sağlanan önceden tanımlanmış kural koleksiyonlarıdır ve web uygulamalarınız için güvenlik kuralları oluşturma sürecini basitleştirir. Bu kural kümeleri, AWS güvenlik uzmanları tarafından oluşturulup bakımı yapılır ve SQL ekleme ve XSS saldırıları gibi yaygın güvenlik açıklarını ve tehditleri kapsar.
Yönetilen kural kümelerini kullanarak, belirli saldırı türlerine karşı etkili olduğu bilinen bir dizi kuralı, her bir kuralı manuel olarak tanımlamak zorunda kalmadan hızlı bir şekilde uygulayabilirsiniz. Bu, kurulum sürecini basitleştirir ve uygulamalarınızın en başından itibaren yaygın tehditlere karşı korunmasını sağlar.
1. Yönetilen Kural Kümesini Seçin :
- AWS WAF konsolunda Web ACL’ler bölümüne gidin.
- Yeni bir Web ACL oluşturun veya mevcut olanı düzenleyin.
- Web ACL düzenleyicisinde yeni bir kural grubu ekleyin. Normal bir kural grubunu veya yönetilen bir kural grubunu seçebilirsiniz.
- “Yönetilen kural grubu”nu seçin ve AWS tarafından sağlanan mevcut kural kümeleri arasından seçim yapın. Bu kural kümeleri, SQL enjeksiyonu, XSS saldırıları ve daha fazlası gibi çeşitli tehdit türlerini kapsar.
2. Uygun Kural Kümesini Seçin :
- Uygulamanıza ve güvenlik açıklarına bağlı olarak ilgili kural kümesini seçin. Örneğin, SQL enjeksiyon saldırılarıyla ilgileniyorsanız, “SQL Enjeksiyonu” yönetilen kural kümesini seçin.
Koşullar ve Kurallar: Web İsteklerine İlişkin Koşullar ve Kurallar Nasıl Tanımlanır?
Koşullar : Koşullar, eşleştirmek istediğiniz web isteklerinin özelliklerini tanımlayan kuralların yapı taşlarıdır. Bunlar IP adreslerini, istekteki dizeleri, istek başlıklarını, sorgu dizelerini ve daha fazlasını içerebilir. Örneğin, belirli bir IP adresi aralığından gelen istekleri eşleştirmek için bir koşul oluşturabilirsiniz.
Kurallar : Kurallar bir veya daha fazla koşuldan oluşur. Bir web isteği tanımlanan koşullarla eşleştiğinde AWS WAF’ın hangi eylemi gerçekleştirmesi gerektiğini belirtmek için bu koşullara dayalı kuralları tanımlarsınız. Örneğin, sorgu dizesinde belirli bir SQL enjeksiyon modelini içeren tüm istekleri engelleyen bir kural oluşturabilirsiniz.
Kuralları oluştururken uygulamanızın özel güvenlik gereksinimlerini dikkate almak çok önemlidir. Uygulamanızın ihtiyaçlarına göre uyarlanmış özel kurallar oluşturabilir veya kapsamlı bir güvenlik kapsamına ulaşmak için özel kurallar ile yönetilen kural kümelerinin bir kombinasyonunu kullanabilirsiniz.
AWS WAF ACL Oluşturma Adımları
AWS Konsolunda Oturum Açın: Kimlik bilgilerinizi kullanarak AWS Management Console’da oturum açın.
AWS WAF Konsoluna Erişim : https://console.aws.amazon.com/wafv2/ adresini ziyaret ederek AWS WAF konsoluna gidin .
Web ACL’si oluşturun : AWS WAF konsolunda gezinme bölmesindeki Web ACL’leri’ne gidin ve “Web ACL oluştur”u seçin.
ACL Ayrıntılarını Belirtin : Web ACL’niz için benzersiz ve açıklayıcı bir ad girin. Bu ad, ACL’yi kolayca tanımlamanıza ve yönetmenize yardımcı olacaktır.
Kuralları Yapılandır : Güvenlik gereksinimlerinize göre Web ACL’niz için kurallar tanımlayın. Belirli IP adreslerini engellemek, coğrafi konuma göre istekleri filtrelemek veya saldırıları gösteren kalıpları tespit etmek için kurallar oluşturabilirsiniz.
Koşul Ekle : Ne zaman tetiklenmeleri gerektiğini belirterek kurallar için koşulları ayarlayın. Koşullar, IP adresleri, sorgu dizeleri veya istek başlıkları gibi çeşitli faktörlere dayanabilir.
Gelişmiş AWS WAF Yapılandırmaları
Özel Kurallar ve Fiyata Dayalı Kurallar
Belirli Uygulamalar İçin Özel Kurallar Oluşturma
Belirli uygulamaların korunması söz konusu olduğunda AWS WAF’taki özel kurallar çok değerlidir. Güvenlik önlemlerini uygulamalarınızın benzersiz güvenlik açıklarına göre uyarlamanıza olanak tanır. Özel kuralları şu şekilde oluşturabilirsiniz:
1. AWS Management Console’da oturum açın :
- AWS WAF & Shield’a gidin.
- Özel kuralı eklemek istediğiniz web ACL’sini seçin.
2. Özel Kural Oluşturun:
- Gezinme bölmesinden “Kurallar”ı seçin.
- “Kural oluştur”u tıklayın.
- Koşullarınızı tanımlayın. Örneğin, kuralları belirli sorgu parametrelerine veya uygulamanızla ilişkili istek başlıklarına dayandırabilirsiniz.
- Koşullarla eşleşen istekler için eylemleri belirtin. Yaygın eylemler arasında isteklerin izin verilmesi, engellenmesi veya sayılması yer alır.
3. Orana Dayalı Kuralların Uygulanması:
Hıza dayalı kurallar, kaba kuvvet saldırılarını azaltmak veya belirli IP adreslerinden gelen istekleri sınırlamak için gereklidir. Hıza dayalı kuralları nasıl ayarlayacağınız aşağıda açıklanmıştır:
- AWS WAF konsolunda yapılandırmak istediğiniz web ACL’sine gidin.
- Sol panelden “Oran bazlı kurallar”ı seçin.
- Yeni bir ücrete dayalı kural oluşturun.
- Hız sınırını (dakika başına istek) ve kuralı tetikleyen koşulları tanımlayın.
- Hız sınırı aşıldığında isteklerin engellenmesi gibi gerçekleştirilecek eylemi seçin.
Gerçek Dünyadan Örnek: Kaba Kuvvet Saldırılarını Önlemeye Yönelik Hız Tabanlı Kurallar
Açıklama : Kaba kuvvet saldırıları, bir saldırganın sonunda doğru olanı tahmin etme umuduyla birçok parolayı veya parola ifadesini denemesini içerir.
Kaba Kuvvet Saldırılarının Tespiti konusunda detaylı bilgi için aşağıdaki kursu inceleyebilirsiniz:
AWS WAF Koruması :
Belirli bir zaman dilimi içinde belirli bir IP adresinden yapılan oturum açma denemelerinin sayısını sınırlamak için AWS WAF’ta hıza dayalı kurallar ayarlayın.
İnsan kullanıcılar ile otomatik botlar arasında ayrım yapmak için CAPTCHA zorluklarını hıza dayalı kurallarla birlikte kullanın.
Yasal kullanıcı davranışları nedeniyle hesap kilitlenmelerini önlemek amacıyla oturum açma modellerini izleyin ve hıza dayalı kurallar için uygun eşikler ayarlayın.
Örnek Normal kullanıcı davranışından ekran görüntüsü:
Aynı IP adresiyle 100’den fazla istekte bulunduktan sonra ACL, CAPTCHA’yı yükseltir.
Bu stratejiyi AWS WAF’ta uygulayarak web uygulamalarınızın güvenlik duruşunu önemli ölçüde geliştirebilir ve onları kaba kuvvete karşı koruyabilirsiniz.
Gerçek Dünyadan Örnek 2: Hizmet Reddi (DDoS) Saldırılarına Karşı Koruma
Açıklama : DoS saldırıları, hedef sistemi yoğun trafikle boğarak sistemin yavaşlamasına veya yanıt vermemesine neden olur.
AWS WAF Koruması :
Belirli bir zaman dilimi içinde belirli bir IP adresinden gelen isteklerin sayısını sınırlamak için AWS WAF’ta hıza dayalı kurallar uygulayın.
Eylem için istekleri engelleyecek şekilde yapılandırabiliriz.
Aynı IP adresiyle 100’den fazla istekte bulunduktan sonra ACL, “Siz: Engellendi” başlığıyla 500 yanıtını engelleyecek ve döndürecektir.
Regex ve IP Seti Eşleştirme
Karmaşık Eşleştirme Modelleri için Normal İfadelerin Kullanımı
AWS WAF, karmaşık kalıp eşleştirme için normal ifadeleri destekler. Örneğin, SQL ekleme girişimlerini engellemek istiyorsanız SQL anahtar kelimelerini eşleştirmek için normal bir ifade kullanabilirsiniz. Regex’i özel bir kuralda şu şekilde kullanabilirsiniz:
- Özel bir kural oluştururken koşul türü olarak ” Regex desen kümesi ” seçeneğini seçin.
- Normal ifade düzeninizi tanımlayın. SQL enjeksiyonu için şuna benzer bir şey olabilir: `.*(SELECT|INSERT|UPDATE|DELETE).*`.
- Desen eşleştiğinde gerçekleştirilecek eylemi seçin (genellikle bloke edin veya sayın).
Belirli IP Adreslerini Engellemek veya İzin Vermek için IP Setleriyle Çalışmak
IP kümeleri, belirli IP adreslerinden veya aralıklarından gelen trafiğe izin vermek veya bunları engellemek için güçlüdür. IP kümeleriyle şu şekilde çalışabilirsiniz:
- AWS WAF konsolunda IP Setleri’ne gidin.
- Yeni bir IP kümesi oluşturun.
- Sete dahil etmek istediğiniz IP adreslerini veya aralıklarını tanımlayın.
- Bu adreslerden gelen trafiğe izin vermek veya trafiği engellemek için web ACL kurallarınızda bu IP kümesini kullanın.
Özel kuralları, hıza dayalı kuralları, normal ifade modeli eşleştirmeyi ve IP kümelerini birleştirerek uygulamalarınız için sağlam bir savunma mekanizması oluşturabilir, kötü niyetli girişimler etkili bir şekilde engellenirken yalnızca meşru trafiğe izin verilmesini sağlayabilirsiniz.
AWS WAF için En İyi Uygulamalar
Meşru Trafiği Engellemeden Etkili Koruma için Kural Optimizasyonu
Kuralları Düzenli Olarak İnceleyin
- Uygulamanızın güvenlik gereksinimleriyle hâlâ alakalı olduklarından emin olmak için Web ACL’lerinizdeki tüm kuralları düzenli aralıklarla gözden geçirin.
- Mevcut tehditlere karşı koruma sağlamak için artık gerekli olmayan veya etkili olmayan eski kuralları kaldırın.
Özel Kuralları Uygulayın
- Uygulamanızın davranışına ve meşru trafik kalıplarına göre uyarlanmış belirli kurallar oluşturun.
- Meşru istekleri yanlışlıkla engelleyebilecek geniş kurallardan kaçının. Bunun yerine, belirli kötü amaçlı kalıpları hedef alan kurallar oluşturun.
Beyaz Listeleri Kullan
- Hiçbir zaman engellenmediğinden emin olmak için IP adresleri, kullanıcı aracıları veya diğer meşru trafik kaynakları için beyaz listeler uygulayın.
- Beyaz listeler özellikle sisteminizle etkileşim kuran dahili hizmetler, bilinen ortaklar veya güvenilir üçüncü taraf uygulamaları için kullanışlıdır.
WAF için İzleme ve Günlüğe Kaydetme
CloudWatch Alarmlarını Ayarlama
- Engellenen istekler, izin verilen istekler ve kural eşleşme sayıları gibi önemli ölçümleri izlemek için Amazon CloudWatch alarmlarını yapılandırın.
- Olağandışı trafik düzenleri veya çok sayıda kural eşleşmesi meydana geldiğinde bildirim almak için eşikleri ayarlayın.
CloudWatch metrikleri ile web uygulamanız ve ACL ile ilgili birçok metriği görebilirsiniz. Örneğin hatalı trafiğin nereden geldiğini (IP, Ülke vb.) görebilirsiniz.
AWS WAF Günlüğünü Etkinleştir
- Web istekleri, kural eşleşmeleri ve gerçekleştirilen eylemler hakkında ayrıntılı bilgi yakalamak için AWS WAF günlük kaydını etkinleştirin.
- Günlükleri Amazon S3 klasörlerinde saklayın ve derinlemesine analiz ve raporlama için Amazon Athena veya Amazon QuickSight gibi AWS hizmetlerini kullanın.
Günlükleri Düzenli Olarak İnceleyin
- Potansiyel saldırıları, yanlış pozitifleri veya gelişen kötü amaçlı trafik modellerini belirlemek için AWS WAF günlüklerini düzenli olarak inceleyin.
- Yeni tehditlerin zamanında tespit edilip azaltılmasını sağlamak için günlüklerdeki anormallikleri derhal araştırın.
WAF Kurallarının Düzenli Olarak Güncellenmesi ve İnce Ayarının Yapılması
Haberdar Olun
- Uygulama yığınınızla ilgili en son güvenlik tehditleri ve güvenlik açıkları konusunda güncel kalın.
- AWS, güvenlik bültenleri ve güncellemeleri sağlar; Yeni saldırı vektörleri hakkında bilgi sahibi olmak için onlara abone olun.
Kural Değişikliklerini Test Edin
- Kural değişikliklerini üretime uygulamadan önce, yasal trafiği yanlışlıkla engellemediklerinden emin olmak için bunları bir hazırlama ortamında test edin.
- Kural değişikliklerinin trafiğiniz üzerindeki etkisini anlamak için AWS WAF’ın web ACL simülatörü gibi araçları kullanın.
Düzenli İncelemeler Planlayın
- Mevcut tehditlere karşı etkinliğini değerlendirmek için AWS WAF yapılandırmanızın en az üç ayda bir düzenli olarak gözden geçirilmesini planlayın.
- İzleme, günlük kaydı ve devam eden tehdit istihbaratından elde edilen öngörülere dayanarak kuralları, koşulları ve web ACL’lerini güncelleyin.
Mavi ekip üyeleri, bu en iyi uygulamalara bağlı kalarak güçlü bir güvenlik duruşunu koruyabilir ve AWS WAF’ın tehditlere karşı koruma sağlayacak şekilde optimize edilmesini sağlarken meşru trafiğin web uygulamalarınıza sorunsuz bir şekilde akmasını sağlayabilir. Düzenli izleme, proaktif kural optimizasyonu ve gelişen tehdit ortamı konusunda güncel kalmak, sağlam bir web güvenliği stratejisinin anahtarıdır.
AWS WAF ile SQL Enjeksiyon Saldırılarını Engelleme
SQL enjeksiyonu, bir web uygulamasının veritabanı katmanındaki güvenlik açıklarından yararlanan kötü amaçlı bir tekniktir. Saldırganlar, giriş alanlarına veya URL’lere kötü amaçlı SQL kodu ekleyerek uygulamayı istenmeyen veritabanı sorguları yürütmesi için kandırır. Başarılı olduklarında bu saldırılar yetkisiz erişime, veri ihlallerine ve hatta hassas bilgilerin tamamen ele geçirilmesine yol açabilir.
1. AWS WAF Konsoluna erişin
- AWS Yönetim Konsolunuzda oturum açın ve AWS WAF hizmetine gidin.
2. Web ACL’si oluşturun
- AWS WAF konsolunda sol gezinme bölmesinde “Web ACL’ler” seçeneğine tıklayın.
- “Web ACL Oluştur”u tıklayın ve Web ACL’niz için bir ad girin.
- WebACL’yi eklemek istediğiniz AWS kaynaklarını (CloudFront dağıtımları veya Application Load Balancer’lar gibi) seçin.
Not : Ayrıntılı ACL oluşturma işlemi için lütfen önceki oturumları kontrol edin.
3. Bir Kural Oluşturun
- Yeni bir kural oluşturmak için WebACL’nin içinde “Kural ekle”yi tıklayın.
- “Kural oluştur”u seçin ve Eşleme Türünde “SQL Enjeksiyon Saldırısı İçerir”i seçin.
4. Kural Eylemlerini Yapılandırın
- Koşulları tanımladıktan sonra SQL enjeksiyon girişimi tespit edildiğinde gerçekleştirilecek eylemleri belirtin. Yaygın eylemler arasında isteğin engellenmesi, isteklerin sayılması veya isteğe izin verilmesi ancak daha fazla analiz için günlüğe kaydedilmesi yer alır.
- Kaba kuvvet saldırılarını önlemek için belirli bir zaman dilimi içinde bir istemci IP adresinden gelen isteklerin sayısını sınırlamak istiyorsanız hıza dayalı ayarları yapılandırın.
Bu örnekte, kural eylemi 502 yanıt kodunu döndürüyor ve şöyle bir başlık ekliyor: “Engellendi: Olası SQL Enjeksiyonu”
5. İnceleyin ve Etkinleştirin
- Kural yapılandırmanızı gözden geçirin ve kuralı kaydetmek için “Oluştur”u tıklayın.
- Kural oluşturulduktan sonra onu WebACL’nizle ilişkilendirin.
- SQL ekleme kuralının doğru şekilde eklendiğinden emin olmak için WebACL yapılandırmasını gözden geçirin.
- WebACL’yi SQL enjeksiyon kuralıyla birlikte seçilen AWS kaynaklarına uygulamak için “Etkinleştir”i tıklayın.
Örnek bir SQL Enjeksiyon saldırısını etkinleştirip yaptıktan sonra, aşağıdaki ekran görüntüsü gibi günlükleri görebiliriz:
Bu adımları izleyerek ve AWS WAF yapılandırmanızı düzenli olarak izleyerek SQL ekleme saldırılarını etkili bir şekilde engelleyebilir ve AWS kaynaklarında barındırılan web uygulamalarınızın güvenliğini artırabilirsiniz.
Bu içeriği hazırlarken letsdefend.io üzerinden faydalandım. Kendimi geliştirmek için uyguladığım pathleri TR olarak da faydalanılması için ekledim.
Kaynak: