NginX ve Lighttpd neden Slowloris'ten etkilenmiyor?


23

Slowloris’in kırılganlığını araştırıyorum ve bu tür bir saldırının neden ve neden işe yaradığını anladığımı düşünüyorum.

Anlamadığım şey, Lighttpd ve NginX'in neden etkilenmediği (yukarıdaki bağlantıya göre aynı makaleye göre). Ne bu kadar farklı kılar?

Yanıtlar:


25

Apache 'Maksimum Müşteri' teorisine sahiptir

Yapabileceği eşzamanlı bağlantıların sayısı budur. IE bir apache sunucusunun 'maksimum müşteri' sınırı 100 ise ve her isteğin tamamlanması 1 saniye sürerse, saniyede maksimum 100 istek yapabilir.

SlowLoris gibi bir uygulama bağlantıları olan bir sunucuya su basar; örneğimizde SlowLoris saniyede 200 bağlantı gönderirse ve Apache saniyede sadece 100 bağlantıyı kaldırabilirse, bağlantı kuyruğu büyüyecek ve makinedeki tüm hafızayı kullanacaktır. bir zarar. Bu, Anonim 'LOIC'nin çalışma biçimine benzer.

NGINX ve Lighttpd (Diğerlerinin yanı sıra) maksimum bağlantıya sahip değillerdir, bunun yerine işçi ipliklerini kullanırlar, bu nedenle teorik olarak yapabilecekleri bağlantı sayısında bir sınır yoktur.
Apache bağlantılarınızı izlerseniz, etkin bağlantıların çoğunun istemciden 'Gönderme' veya 'Alma' olduğunu göreceksiniz. NGINX / Lighttpd'de bu istekleri görmezden geliyorlar ve arka planda devam etmelerine izin veriyorlar, sistem kaynaklarını kullanmıyorlar ve sadece devam eden bir şeyle bağlantıları işlemesi gerekiyor.

Orada yer alan bilgiler de size ilginç olabilir bu yüzden aslında bu öğleden sonra benzer bir soruya cevap Apache istek kuyruk azaltılması


İyi ve çok ayrıntılı bir cevap. +1
Oldskool

6
Küçük düzeltme: nginx, çok sayıda bağlantı kurmak için alt iplik kullanmaz. Gönderen nginx.org : "Nginx sap isteklerine parçacığı dayanmaz Bunun yerine çok daha ölçeklenebilir olay güdümlü (asenkron) mimarisini kullanıyor."
Gün

2
Her ne kadar olası bir yan etkiye sahip olsa da, Slowloris'in amacı "makinedeki tüm belleği tüketmek" değildir, ancak sonraki bağlantıların başarılı olmasını engelleyerek maksimum bağlantı kapasitesini tüketmektir.
wulfgarpro

@Day Nginx, zaman uyumsuz işlem yapmasını desteklemek için çalışan iş parçacığı kullanır. Burada yararlı bir uygulama mimarisi şeması verilmektedir: aosabook.org/en/nginx.html#fig.nginx.arch
Terry Burton

13

Nginx aslında slowloris saldırısına karşı savunmasız. Kıt kaynak, eşzamanlı çalışan bağlantılarının maksimum sayısıdır. Bu sayı worker_connections * worker_processes olarak hesaplanabilir ve varsayılan nginx yapılandırmasında 512'ye eşittir. Dolayısıyla, korunmasız nginx'i goloris gibi aletlerle sökmek oldukça kolaydır .


golorisuygulama / kurulumumun beklendiği gibi çalıştığından emin olmak için ihtiyacım olan araç gibi görünüyor!
Alexis Wilke

8

valyala'nın yorumu cevap olarak kabul edilmelidir.

Çoğu nginx sunucusu varsayılan yapılandırmaları kullanır ve bu nedenle slowloris saldırısına açıktır. Sadece dizüstü bilgisayarımı kullanarak arkadaşımın nginx web sitelerinin bazılarını kaldırmak için slowloris kullandım ve bu süre genellikle 5 dakikadan az sürdü (arkadaşlarım bunu yapmam için zorladı).

Valyala'nın belirttiği gibi, teknik olarak, nginx slowloris'e karşı savunmasız değildir, ancak varsayılan yapılandırmalar maksimum bağlantı sayısını sınırlar; bu nedenle, bağlantılar bu sayıyı aştığında, nginx hizmet talebinin reddedilmesine neden olan yeni isteği bırakır.

Nginx'i slowloris'ten korumanın bilinen yolları, aynı IP'den gelen bağlantıların sayısını sınırlandırmayı ve worker_connections config'i arttırmayı içerir. Saldırı hala işe yarayabilir, ancak daha da zorlaşır (belki 5 dakikadan fazla mı sürüyor?: D)

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.