Ücret sınırlama * un * - kimlik doğrulaması yapılmış istekler


11

Diyelim ki hız sınırlayıcı da olan bir yük dengeleyicimiz var. Hız sınırlaması, oturum açmış kullanıcılar için oldukça basit görünüyor - sadece JWT'ye bakın ve belki de o kullanıcı için son 10 saniyede kaç istek görmek için bellek içi bir veri deposu kullanın.

Ancak, oturum açmamış (kimliği doğrulanmamış) kullanıcılara ne olacak? İsteklerin kimden veya nereden geldiğinden tam olarak emin değiliz, bu nedenle bu istekleri kolayca sınırlayamazsınız veya ..?

AWS ve diğer barındırma platformlarında bunun için yerleşik çözümler var mı, endişelenmemiz gereken bir şey mi? Kayıtlı kullanıcıların hız sınırlayıcı mantığını manuel olarak ele almamız gerekiyor gibi görünüyor, ancak oturum açmamış kullanıcılara ne olacak?

Tahminim / umudum, barındırma platformlarında kimliği doğrulanmamış isteklerin ücret sınırlaması için bazı yerleşik bir mekanizma olabilir, lütfen hepimizi bilgilendirin.


2
Bu sayfada giriş yapmış kullanıcılardan asla bahsedilmiyor. Aslında, burada açıklanan teknikler, giriş yapmayan kullanıcıları ima eden, parolalara kaba kuvvet saldırıları için bir hafifletme olarak belirtilmiştir.
Robert Harvey

1
Hız sınırlandırmayı neden kullanmak istiyorsunuz? Hizmet reddi saldırılarına karşı koymak, kullanıcıların ödeme planlarını aşmasını önlemek başka bir şey mi? Kullanım durumu, etkili bir şekilde kullanabileceğiniz yöntemleri etkiler.
Bart van Ingen Schenau

1
Bu konu security.stackexchange.com için daha uygun olabilir , ancak konu dışı demiyorum
Peeyush Kushwaha

Yukarıdakilerin hepsi @BartvanIngenSchenau?

Neden iki farklı ücret limiti olmalı? Farklı kısıtlamalara / özelliklere sahip herhangi bir "plan" satıyor musunuz?
Laiv

Yanıtlar:


9

Ancak, oturum açmamış (kimliği doğrulanmamış) kullanıcılara ne olacak? İsteklerin kimden veya nereden geldiğinden tam olarak emin değiliz, bu nedenle bu istekleri kolayca sınırlayamazsınız veya ..?

Yapabileceğiniz birkaç yaklaşım var. Bunlardan biri, IP adresi gibi makul derecede güvenilir bir kaynak tanımlayıcıya ihtiyacınız olmasıdır. Sınırı IP adresine göre derecelendirebilirsiniz, böylece güvenliği ihlal edilmiş tek bir makineye yapılan saldırılar sınırlandırılır. Bu oldukça basit bir yaklaşımdır, ancak büyük ağ sağlayıcılarının bir NAT'ın arkasındaki çok sayıda kullanıcıyı gizlemek için yalnızca tek bir giden IP adresi kullanabileceği bir dezavantaj vardır.

Hız sınırlamasını alabileceğiniz başka bir yaklaşım, kimliği doğrulanmamış tüm talepler için bir çalışma kanıtı istemektir. Sunucunuz, kimliği doğrulanmamış istekte bulunan istemcilerin (örneğin, oturum açma istekleri) istek işlenmeden önce kaynak yoğun bir yanıt hesaplaması gereken bir sorun kodu yayınlar. Bu fikrin ortak bir uygulaması, müşterilerin kısmi bir karma dönüşümü hesaplamasını gerektirir.


DOS saldırılarına karşı "iş kanıtı" nı nasıl önleyebilir? İstemci bu meydan okumayı görmezden gelebilir ve başarısızlığa kadar istek göndermeye devam edebilir. Zorluğu ele alan 3. bir süreç var mı?
Laiv

4
@Laiv POW, diğer hız sınırlama şemalarının çoğunun başarısız olduğu merkezi bir veritabanına bağlanmadan güvenilir bir şekilde yayınlanabilir ve dağıtılabilir. Bir saldırganın saldırı maliyetini arttırır, çünkü savunmanızı genişletmek ve yük faktörünü artırmak sizin ve yasal kullanıcılar için saldırganın saldırısını ölçeklendirmekten daha ucuzdur. Düşük güçlü aygıtların (örneğin güvenliği aşılan yazıcılar, IOT, yönlendiriciler) etkili bir saldırı platformu olarak kullanılmasını etkili bir şekilde hariç tuttuğu için sisteme saldırmak için ekonomik bir caydırıcılık yaratır.
Lie Ryan

6

Bir isteğin kimliği doğrulanmış bir kullanıcıdan mı yoksa anonim bir kullanıcıdan mı geldiğini bilmek için, isteği hızlı bir şekilde de olsa işlemeniz gerekir. Bu, uygulamanızın bir hizmet reddi saldırısına karşı savunmasız olduğu anlamına gelir.

Saniyede toplam istekleri kontrol etmelisiniz ve belirli bir sayı aşılırsa, geri kalanını görmezden gelmelisiniz. Bu sayı, normal işleyiş sırasında sorunlara neden olmayacak kadar yüksek olmalı, ancak bu tür saldırılara karşı korunmalıdır.

Ayrıca, genel bir kural olarak, en azından DOS saldırılarını ilgilendiren şey için kimliği doğrulanmış bir kullanıcıdan bir saldırı gelmeyeceğini varsaymamalısınız. Zayıf bir şifre, birisinin eski bir kullanıcının kimliğini kolayca kabul etmesini sağlar. Bu nedenle, böyle bir kontrolü yapabileceğinizi varsayarsak, (insan) kullanıcılarınızın, pek çok bireysel kullanıcınız olduğu için asla bu oranlara dayanmayan taleplerde bulunmaları gerekmemelidir.


Sanırım IP adreslerini kullanabilir ve her biri için yüksek bir hız sınırı belirleyebilirsiniz. İyi düzenlenmiş bir DoS saldırısının binlerce IP adresi kullanabileceğini tahmin ediyorum. belki daha fazla? idk ... Aynı IP adresinin birden fazla farklı istemci için kullanılabileceğinin farkındayım, ancak aynı kullanıcı için güçlü bir olasılık olduğunu söyleyebilirim, değil mi?
Alexander Mills

@AlexanderMills Diyelim ki algoritma aynı IP adresinden birden fazla istek olup olmadığını kontrol etmeye karar verdiniz. Binlerce bile olsa, 1000'den fazla istek için tekrarlanırlar. Sunucunuz belirli bir IP adresinden ilk isteği günlüğe kaydeder ve taşkın başlar .. sunucunuz zaten isteklerle yeniden bloke edilir .. aynı IP'den ikinci tekrarlamaya ulaşmak için yeterli talebi bile işleyemezsiniz (yine de meşru bir istek olabilir) bu arada). Yalnızca aynı IP'nin kullanıldığı DoS saldırılarına karşı koruma sağlar. Bir şey varsa her ikisini de kullanmak daha iyidir. : P
Neil

0

Biri CloudFlare'nın ana teklifleri API / web sunucusu için akıllı bir vekil sağlayarak Hizmet Dışı Bırakma saldırılarına karşı korumasıdır. Temel hizmet ücretsizdir; CDN hizmetleri ve yük dengeleme gibi diğer ilgili hizmetlerden para kazanırlar. Ayrıca , şu anda 10k iyi istek başına 0,05 ABD doları oranında (reddedilen istekler için ücret alınmaz) daha sofistike ve kontrol edilebilir Hız Sınırlama hizmetleri sunarlar , ancak birden fazla küresel kural almak için ücretli planlara geçmeniz gerekir.

Cloudflare hizmetini alan adınızın ad sunucuları üzerinde kontrolünüz olduğu sürece AWS veya başka bir platformla kullanabilirsiniz (alan adınız için kayıtlı ad sunucularını değiştirebilirsiniz).

Oturum açmış kullanıcıları farklı URL'lere yönlendirerek anonim ve oturum açmış kullanıcılar için ayrı ücret sınırları sağlayabilirsiniz. Örneğin, her zaman kimlik doğrulaması gerektiren ve farklı bir hız sınırına sahip bir uç nokta oluşturmak için anonim olarak kullanılabilir tüm URL yollarınızın başına '/ u' öneki ekleyebilirsiniz.

Cloudflare'ın hız sınırlamasının (bildiğim anonim kullanıcılar için tüm ticari hız sınırlaması gibi) bir istemciyi IP adresine göre tanımladığını unutmayın. Bu, ticari VPN'ler veya Tor kullanan kişiler için sorunlara neden olabilir, çünkü daha fazla gizlilik için 1 IP adresinin arkasındaki çok sayıda istemciyi gizleme eğilimindedirler.


0

AWS'de ilgili hizmetler AWS Shield ve AWS WAF vardır . Öncelikle DDoS saldırılarını önlemeye yöneliktir, ancak IP adreslerine dayalı hız sınırlaması için destek sunarlar.

WAF'de bu kavrama Oran Tabanlı Kurallar denir . Kaba kuvvet temelli giriş denemelerinin önlenmesi, orijinal duyuruda bir kullanım örneği olarak belirtilmiştir :

Bu yeni kural türü, müşteri web sitelerini ve API'leri web katmanı DDoS saldırıları, kaba kuvvet giriş denemeleri ve kötü botlar gibi tehditlere karşı korur. Ücret Tabanlı Kurallar, bir istemciden gelen web istekleri belirli bir yapılandırılabilir eşiği aştığında otomatik olarak tetiklenir.

Diğer bulut sağlayıcılarının benzer teklifleri olmalıdır. İşte, tablo şeklinde bir karşılaştırma: Google Cloud Armor vs. AWS WAF vs. Cloudflare WAF .

Zaten Nginx'i kullandığınız için, dahili IP tabanlı hız sınırlamayı kullanmak da basit bir seçenek olabilir. Modüle ngx_http_limit_req_module adı verilir . Bu blog gönderisi nasıl kullanılabileceğini açıklamaktadır.

IP tabanlı hız sınırlamanın nispeten basit bir kavram olduğunu, ancak mükemmel olmadığını lütfen unutmayın:

  • IP adresleri paylaşılabilir (aynı ofiste çalışan kişiler) yanlış pozitiflere yol açabilir
  • Bir saldırgan birden fazla IP adresine kolayca erişebilir ve bunları sınırları aşmak için kullanabilir (dağıtılmış kaba kuvvet giriş saldırısı)

Genel olarak, IP adresleri iyi bir başlangıçtır. Ancak daha güçlü bir korumaya ihtiyacınız varsa, en iyi seçimleriniz iplik modelinize (ne tür saldırıları önlemek istediğinize) bağlı olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.